что будет лучше использовать apache kafka или activemq? - PullRequest
1 голос
/ 02 мая 2019

Постановка задачи:

Мы получим запросы на обработку элемента, принадлежащего к любым группам, указанным ниже -

  1. Grp1 -> A1, B1, C1, D1, E1
  2. Grp2 -> A2, B2, C2, D2, E2
  3. Grp3 -> A3, B3, C3, D3, E3

Сценарий 1:

Мы получаем 3 запроса на A1, B1, C1. Поскольку все запросы относятся к одной группе, они должны обрабатываться последовательно (текущий запрос должен быть выполнен до того, как следующий запрос может быть получен для обработки)

Сценарий 2:

Мы получаем 4 запроса на A1, A2, B2, B3
Здесь запросы A2 и B2 принадлежат к одной группе, поэтому они должны обрабатываться последовательно, как указано в сценарии 1. и запросы A1 и B3 должны обрабатываться параллельно, поскольку они принадлежат разным группам

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

Текущий подход:

Мы планируем сделать это с Apache Kafka или activemq следующим образом -

  • Создать тему
  • Разделите тему на разделы, каждому разделу будет назначен один раздел группа, поэтому количество разделов будет равно числу групп
  • Каждый запрос, принадлежащий определенной группе, будет отправлен в раздел который назначен на эту группу.
  • У каждого раздела будет выделенный потребитель, который будет обрабатывать запросы только из этого раздела.

Вопросы:

  1. Какой из них лучше всего подходит для требования Apache Kafka или activemq?
  2. Есть ли другой лучший способ решить ту же проблему?

Примечание. Данное приложение может быть распределенным микросервисным приложением с несколькими запущенными экземплярами.

1 Ответ

0 голосов
/ 02 мая 2019

Я не знаю ActiveMQ, но вы описали, как работает Кафка.Все произведенные события в разделе упорядочены и обрабатываются в этой последовательности, и в группе потребителей вы можете иметь только одного потребителя на раздел

. Единственная часть, которую вам нужно реализовать, - это интерфейс Partitioner.чтобы гарантировать вашей группе разделить логику.В противном случае секционер по умолчанию не гарантирует, что X1 и Y2 окажутся частью одного и того же раздела

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...