Как коннектор Kafka Sink обеспечивает упорядочение сообщений при получении сообщений из разделов. У меня несколько разделов, и я обеспечил порядок сообщений при публикации сообщений с хеш-ключами для каждого раздела. Теперь, когда несколько задач Sink (и их рабочих) масштабируются с нескольких JVM с ответственностью за выборку сообщений из одного раздела и уведомление целевой системы через HTTP, как я могу гарантировать, что конечная система получит сообщения по порядку? .
Заказ сообщений Kafka Connect
Ответы (1)
Каждая задача приемника будет получать упорядоченные события, доступные из назначенных им тем, но как только она покидает обработку протокола Kafka и отправляется в удаленное место назначения, будь то файл или конечная точка HTTP, порядок может быть гарантирован только на основе семантика упорядочивания этой системы.
Например, если вы пишете в Elasticsearch, вы можете «упорядочить» события (в Kibana), указав поле отметки времени для индексации. Аналогично для любой (нет) базы данных SQL
С другой стороны, файловая система будет упорядочивать файлы по времени модификации, но не гарантируется, что события в любом заданном файле будут упорядочены (если они не исходят из одного раздела).
Я считаю маловероятным, что конечная точка HTTP REST сможет понять, какие события порядка нужно собирать, и эта логика должна быть определена внутри этой конечной точки сервера. Один из вариантов - отправлять события в конечную точку, которая примет номер раздела и смещение, из которого пришла запись.