Каков подходящий способ связи кластера Vert.x с Orbit cluster?

#vert.x #orbit

#vert.x #orbit

Вопрос:

Вы должны быть осторожны с управлением потоками при использовании Vert.x. Я не хочу внедрять совершенно новый клиент Orbit для Vert.x. Каков подходящий способ связи кластера Vert.x с кластером Orbit? Хорошая ли идея использовать мост tcp eventbus Vert.x с кластером Orbit?

Комментарии:

1. Каков вариант использования? Есть ли у вас существующая кодовая база Orbit, которую вы хотите интегрировать с Vertx?

2. Не существует существующей кодовой базы Orbit. К vert.x будет подключаться множество устройств, и у каждого устройства будут свои собственные вершины (и состояние). Эти устройства будут подписываться на некоторые фоновые службы, которые не всегда выполняются. Поэтому я думаю, что шаблон виртуального актера лучше подходит для моего сценария вместо управления жизненным циклом и распределением актеров. Подписка Verticle на Orbit virtual actor — это то, чего мне нужно добиться надлежащим образом. Я подозреваю, что использование Orbit client в verticle заблокирует потоки vert.x. Я не эксперт в этом технологическом стеке, но я очень заинтересован в обучении. Спасибо за любую помощь.

3. Но для этого вы можете использовать кластер Vertx Hazelcast. Отправляйте сообщения по EventBus вашим рабочим вертикалям (фоновым службам, как вы их называете).

Ответ №1:

Лучшего ответа здесь нет. Оба варианта имеют свои плюсы и минусы.

Использование моста tcp eventbus обеспечит вам максимально быструю интеграцию между различными системами, однако у него есть недостаток, заключающийся в введении единой точки отказа. Допустим, что узел, на котором работает мост, выйдет из строя или сеть разорвется, и вы будете изолированы.

Альтернативой (и немного более сложной) было бы внедрить менеджер кластеров на основе orbit. Следует начать с просмотра интерфейса ClusterManager и оттуда предоставить реализацию orbit. Поскольку весь менеджер кластеров является SPI во время выполнения (на стороне vertx), можно было бы просто заменить jar реализации, и никаких изменений кода не потребовалось бы. Полную документацию по этому вопросу смотрите здесь. Недостатком является то, что достичь этого будет сложнее, но у вас будет лучшая интеграция.