Порядок сообщений в распределенной системе. Go и Kafka.

Ответ

В Kafka порядок гарантируется в пределах партиции; между партициями порядка нет. Для упорядоченной обработки по ключу используют один ключ на логическую сущность (user_id) - все события пользователя в одну партицию. В Go консьюмер обрабатывает сообщения из партиции последовательно (или с ограниченным параллелизмом по ключу). Идемпотентность и версии событий помогают при дублях.

producer.Produce(&kafka.Message{
    Key:   kafka.EncodeKey(userID),
    Value: payload,
})
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.