Существует несколько способов, позволяющих вашим микросервисам взаимодействовать друг с другом, тот факт, что все ваши приложения работают на одном сервере, мало что меняет, но делает номер 2.) простым в настройке
1.) Связь с клиентом и сервером в состоянии покоя
- У хоста и приложений есть веб-сервер
- Когда вы обрабатываете входящие запросы на хосте, вы просто вызываетедругое приложение с HttpClient
Обычно все службы находят адреса друг друга через обнаружение службы .Например: каждая служба регистрирует свой адрес в центральном реестре, тогда как другие службы используют этот центральный реестр для поиска адресов.
Примечание: это может быть излишним для вас, и вы можете просто настроить адреса других служб.
2.) Микросервисы vertx запускаются в кластерном режиме
- , а затем событийная шина распределяется между службами
- Для всех входящих запросов выотправить трансляцию на eventbus
- ответственное приложение отвечает на сообщение
Для дальнейшего чтения вы можете оформить заказ https://vertx.io/docs/vertx-hazelcast/java/#configcluster. Вы запускаете свои проекты с параметром -cluster и определяете кластеризацию в конфигурации xml.Я думаю, что по умолчанию он находит сервисы через локальную трансляцию.
3.) Вы используете брокер сообщений, такой как RabbitMq и т. Д.
- Все ваши приложения подключаются кцентральный посредник сообщений
- Когда на хост поступает новый запрос, он отправляет сообщение посреднику сообщений
- Затем приложение-ответчик прослушивает соответствующие сообщения и отвечает
- Хост получает ответ от брокера сообщений
Уже существует много клиентов vertx для определенных брокеров сообщений, таких как kafka, camel,zeromq:
https://github.com/vert-x3/vertx-awesome#integration