Vert.x - ограничить единичную вертикалку во всем кластере - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть приложение Vert.x с несколькими вершинами для взаимодействия с различными шинами и dbs (пн go, redis, rabbit, kafka и т. Д.)

среди них есть вертикаль, предназначенная для связи с внешними API (очень старыми), которые допускают одно постоянное соединение и из одного (предварительно определенного) источника

Я использую несколько экземпляров vertx с тем же код (автоматическое масштабирование) и заставить их действовать как кластер, используя hazelcast в качестве менеджера кластера

, что является наилучшей практикой для ограничения создания external-api verticle только для одного экземпляра, я посмотрел на :

  • SharedData.Lock() - но мне нужно обернуть его с помощью асинхронной c логики вращающегося замка c
  • High Availability - отлично подходит для завершения и авто масштабирование, но не заставляет активность одной вертикали
  • worker verticle - чтобы создать 1 рабочую вертику в каждом случае

Я мог бы использовать смесь всех вышеперечисленных и создать желаемый функционал, но мне кажется, какой комп lex ...

я должен отделить свою статью от другого сервера, или есть какое-то более простое решение, о котором я еще не думал?

1 Ответ

0 голосов
/ 20 апреля 2020

Вам не нужна отдельная вертикаль, оставьте эту вертику просто без сохранения состояния и примените свои соединения в прокси-сервисе - после того, как вы зарегистрируете эту услугу как HttpEndpoint, Evenbus, Message или JDB C, и у вас будет один точка связи с БД или внешним источником http.

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