Vertx - несколько против одной вертикали для обработки событий

сценарий

Я получаю сообщение по определенному "адресу" в Vertx eventbus - сообщение может быть четырех типов. Обработчик должен обработать сообщение и отправить результат по другому "адресу" шины событий, его обработчик отправляет его в API внешнего сервиса.

проблема

Как спроектировать Вертикул для этого? Ниже я описал два подхода - один из которых эффективен, быстрее и способен хорошо масштабироваться, учитывая, что он будет развернут в Кубернетесе. Как насчет рабочих статей? Любой другой эффективный подход, которого я пропускаю?

Подходы

  1. Напишите статью для каждого типа, при этом потребитель Eventbus потребляет и обрабатывает этот тип. Отправьте обработанные данные на адрес "external-service-call".
  2. Напишите только одну статью - обработчик события может решить и вызвать соответствующий метод в зависимости от типа сообщения и, наконец, опубликовать его по адресу "external-service-call".

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

Другой подход, вы думаете, я должен знать?

1 ответ

Первый подход несколько предпочтительнее по двум причинам:

  1. Делать меньше проверок => Меньше процессорного времени => больше параллелизма
  2. Меньше кода в каждой статье => проще в обслуживании

Сказав это, это не то, что должно беспокоить вас. Твой external-service-call будет на порядок медленнее, чем любая микрооптимизация на EventBus.

Подход 1: а. Чище. eventbus предназначена для связи между вершинами одного и того же экземпляра вершины или внутри вершин кластера. б. Производительность - поскольку статьи находятся на одном хосте, нет сетевого ввода-вывода и не сильно влияет на производительность.

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

Я бы, наверное, выбрал подход 1.

Другие вопросы по тегам