Очереди, потоки, события
Порядок сообщений: тест с выбором ответа
Шесть вопросов поперёк всего юнита. Каждый отражает решение, которое ты принимаешь в реальном инциденте — не определение для заучивания, а компромисс, который надо взвесить, когда порядок и пропускная способность тянут в разные стороны.
Убедись, что связываешь цену total order, per-partition FIFO, выбор ordering key, гарантии продюсера и production-сбои — тот синтез, к которому вёл урок.
Почему глобальный total order по всем сообщениям — это фундаментально налог на пропускную способность, а не флаг конфига, который можно просто включить?
Сервис кошелька шлёт credit, затем debit на аккаунт. В staging с одним consumer'ом работало; в проде с восемью consumer'ами debit иногда приходит первым. Что на самом деле изменилось?
Нужен порядок по аккаунту при высокой пропускной способности в Kafka. Какой выбор ordering key верный и почему?
Какая конфигурация продюсера Kafka может тихо переупорядочить два сообщения на одной partition?
Команда растит топик Kafka с 6 до 12 partition ради пропускной способности и сразу видит порчу порядка по ключу. Почему и как это штатно избегают?
Сервис профилей потребляет user.updated на at-least-once очереди с конкурентными consumer'ами; обновления одного пользователя иногда приходят не по порядку или дважды. Какой самый сильный дизайн?
Сквозная линия — одно дерево решений: total order требует единой точки сериализации и упирает пропускную способность, поэтому почти всегда нужен partial order — per-key FIFO. Выбирай partition key как сущность, которая должна оставаться консистентной (accountId, userId). Дальше порядок ломается в трёх предсказуемых местах: неидемпотентный продюсер с несколькими in-flight, репартиционирование, переотображающее ключи, и at-least-once redelivery или DLQ replay. Устойчивый дизайн партиционирует по ключу и version-guard’ит остаточный беспорядок.