Должен ли я создать новое сообщение или просто использовать старое сообщение в этом случае - PullRequest
0 голосов
/ 31 мая 2018

Для передачи заказа мы создаем сообщение Кафки А, которое включает в себя все 30 полей для заказа.

Теперь мы собираемся создать новую систему мониторинга в режиме реального времени.Нам нужно только 8 полей заказа.

Вопрос наступает .. должны ли мы создать новое сообщение Kafka B при отправке заказа, или нам не нужно и нужно просто добавить нового потребителя, чтобы подписать существующее сообщение A?

Кто следует за лучшей практикой и почему

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Согласен с @ilooner.Основное преимущество Kafka по сравнению с традиционными очередями состоит в том, что одни и те же данные могут использоваться несколько раз с другой группой потребителей.Сводка заказа и заказа (подмножество полей заказа) будет иметь 1. Двойное дисковое пространство (умноженное на коэффициент репликации) 2. Двойное использование N / W

Перейти с новой группой потребителей.

0 голосов
/ 31 мая 2018

По моему мнению, было бы лучше добавить нового потребителя, чтобы подписаться на существующее сообщение.У этого подхода есть несколько преимуществ:

  1. Это более эффективно для сервера, регистрирующего заказ, поскольку он отправляет только одно сообщение вместо 2.
  2. Это более эффективно для вашего Kafkaброкеры.Если вы отправляете два разных сообщения, это означает, что брокеры должны хранить больше данных на своих дисках.Это может привести к значительным накладным расходам, поскольку kafka поддерживает несколько копий сообщений для обработки сбоев посредника без потери данных и некоторое время хранит данные на посредниках, пока не истечет срок их действия.Кроме того, чем больше сообщений вы отправляете в Kafka, тем больше он подчеркивает сеть брокера и процессор (особенно если вы выполняете сжатие).
  3. Снижает шансы на состояние гонки в случае сбоя.Если вы отправили два разных сообщения, есть некоторые ошибки, с которыми вам придется либо справиться, либо с ними справиться:
    • Рассмотрим случай, когда вы сначала отправляете полное сообщение заказа, а затем сводное сообщение заказа.Существует угловой случай, когда сервер может выйти из строя после отправки полного сообщения, но до отправки сводного сообщения.Если это произойдет, ваша система мониторинга потеряет данные.Кафка действительно имеет некоторую форму транзакций, которая, вероятно, решит эту проблему, но всегда есть снижение производительности за использование транзакций.Но если вы просто отправите одно сообщение, у вас не будет этой проблемы :).
...