Какая была самая сложная задача на Backend без оборудования
Python
Junior
Без компании
Какая была самая сложная задача на Backend без оборудования
Ответы
Разработка распределённой системы очередей с гарантированной доставкой сообщений и обработкой дублей. Основные сложности:
- **Гарантии доставки**: нужно было обеспечить at-least-once доставку, но избежать дублей при повторных отправках.
- **Масштабируемость**: система должна была обрабатывать >10k сообщений/сек с возможностью горизонтального масштабирования.
- **Идемпотентность**: обработка дубликатов без повторного выполнения бизнес-логики.
Решение на Python (упрощённый пример):
```
class MessageQueue:
def __init__(self):
self.processing = set()
self.completed = set()
async def process(self, message_id, payload):
if message_id in self.completed:
return # уже обработано
if message_id in self.processing:
raise ConcurrentProcessingError()
self.processing.add(message_id)
try:
await handle_payload(payload)
self.completed.add(message_id)
finally:
self.processing.remove(message_id)
```
Ключевые моменты:
- Использование Redis для хранения состояний
- Таймауты обработки
- Механизм подтверждения (ack/nack)
- Шардирование очередей
Особенно сложно было добиться согласованности при обработке в конкурентной среде.