Встречается на собеседованиях • сегодня

Как реализовать отказоустойчивость при чтении 20 млн записей из базы данных и отправки в Message Broker

Для обработки больших объемов данных с отказоустойчивостью: 1. **Пакетная обработка** - читаем данные порциями (batch): ```java int batchSize = 1000; int offset = 0; List batch; do { batch = repository.findBatch(offset, batchSize); sendToBroker(batch); offset += batchSize; } while (!batch.isEmpty()); ``` 2. **Идемпотентность** - каждая запись должна иметь уникальный ID для предотвращения дублирования. 3. **Транзакционность** - отмечаем обработанные записи в той же транзакции, что и отправку: ```java @Transactional public void processBatch(List batch) { broker.send(batch); repository.markAsProcessed(batch); } ``` 4. **Ретри и dead letter queue** - настраиваем повторные попытки для временных ошибок и DLQ для неустранимых. 5. **Контрольные точки** - периодически сохраняем позицию (offset) обработки. 6. **Распределенная обработка** - для масштабирования можно использовать Spring Batch или Kafka Connect.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы