Пересылка сообщений из Kafka Topic

Я занимаюсь проектированием системы, которая действует как пересылка сообщений от одной системы к другой. У меня есть несколько вариантов, но я хотел бы применить лучший вариант, который обеспечивает меньшее потребление ресурсов (ЦП, ОЗУ) и задержку. Таким образом, мне нужна ваша рекомендация и ваше мнение по этому поводу. Мы предполагаем, что сообщения будут передаваться в нашу систему из темы в Kafka. Нам нужно переслать все сообщения из темы на другой хост. Для этого могут быть разные стратегии.

  1. Соберите определенное количество сообщений, скажем, 100 сообщений (пакетная обработка) и отправьте их сразу в одном сообщении HTTP.
  2. Когда получено одно сообщение, система отправит это сообщение как HTTP-запрос POST на целевой хост.
  3. Откройте webSocket между нашей системой и целевым хостом и отправьте сообщения.
  4. Ведите себя как продюсер Kafka и отправляйте сообщения в тему.

У каждого из них могут быть свои достоинства и недостатки. Я обеспокоен тем, что система может не обрабатывать большое количество поступающих сообщений. Есть ли у вас другие варианты, кроме этих 4 пунктов? Какой вариант вы считаете лучшим с точки зрения чего?


person Eric    schedule 04.07.2019    source источник


Ответы (1)


Насколько важны ваши требования к задержке? HTTP работает довольно медленно по сравнению с системой обмена сообщениями на основе UDP, но, возможно, вам не нужна такая индивидуальная задержка. Как вы знаете, пакетная обработка сообщений увеличивает задержку.

Но это тревожно, потому что заголовок этой страницы - «остальное - пересылка» =). Должен ли это быть REST (то есть HTTP)? потому что кажется, что вы можете действовать как продюсер кафки, если так, то это не REST.

Объем памяти Kafka может быть немного большим (Java lib), но не настолько. Вы работаете со встроенной системой (хотите уменьшить объем памяти?)

Что касается ЦП ... это зависит от того, с чем мы сравниваем Kafka, но я все же думаю, что Kafka достаточно оптимизирован, когда требуется производительность.

Думаете, нам не хватает дополнительной информации об этом "другом хосте", не могли бы вы подробнее рассказать о его назначении?

Янник

person Yannick    schedule 04.07.2019
comment
спасибо, я добавил тег rest, потому что целевой хост, скорее всего, будет веб-службой REST. Наша система будет похожа на коммутатор, а не на встроенную систему. - person Eric; 04.07.2019