Как общаются микро-сервисы в реальных проектах? Знаю что Rabbit MQ или Kafka используются для того чтобы гарантировать что запрос который куда-то ушел, вернет ответ. А как сообственно реализуют общение микро-сервисов? Сделать для каждого сервиса свой сервер и кидать запросы через REST? Или использовать gRPC? Тогда на каком этапе подключаются брокеры сообщений? Или запросы как-то идут в брокер, а уже из него в нужные сервисы, как тогда это реализовывают?

13 Июл в 19:51
213 +3
0
Ответы
1

Общение между микро-сервисами может осуществляться различными способами, и выбор подхода зависит от конкретных требований проекта, архитектурных решений и предпочтений команды. Рассмотрим основные методы и принципы:

1. HTTP REST API

Наиболее популярный способ взаимодействия микро-сервисов — это использование RESTful API на базе HTTP. Каждый микро-сервис может реализовать свой сервер и предоставлять API, через который другие сервисы могут делать запросы. Преимущества этого метода:

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

Недостатки:

Синхронное взаимодействие, что может привести к проблемам с производительностью и надежностью.Управление ошибками и повторными попытками может требовать дополнительной логики.2. gRPC

gRPC — это высокопроизводительный RPC (Remote Procedure Call) фреймворк, который использует протокол HTTP/2 и позволяет определять сервисы и сообщения с помощью Protocol Buffers. Преимущества gRPC:

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

Недостатки:

Более сложная настройка и управление по сравнению с REST.Не так широко поддерживаются браузерами.3. Брокеры сообщений (например, RabbitMQ, Kafka)

Брокеры сообщений используются для асинхронного взаимодействия между сервисами. Это позволяет отправлять сообщения, не дожидаясь ответа, и обеспечивает надежность и масштабируемость системы. Возможные подходы:

Издатель-подписчик: один сервис публикует сообщение, а другие подписчики обрабатывают его. Это полезно в ситуациях, когда нет необходимости в немедленном ответе.Очереди: сообщения могут помещаться в очередь, и другой сервис может их обрабатывать в удобное время.Комбинирование подходов

В реальных проектах часто используется сочетание методов. Например:

Синхронные запросы: модули, которые требуют немедленного ответа, могут использовать REST или gRPC.Асинхронные взаимодействия: для обработки событий или выполнения длительных операций можно использовать брокеры сообщений.Архитектурные паттерныAPI Gateway: может служить единой точкой входа, принимая запросы пользователей и перенаправляя их к микро-сервисам. Это упрощает реализацию аутентификации, маршрутизации и агрегации данных.Сервис-ориентированная архитектура: в ней используются комбинации REST, gRPC и брокеров сообщений для обеспечения надежного обмена данными.Пример реализацииМикро-сервис A получает HTTP-запрос от клиента и делает синхронный запрос к микро-сервису B через REST или gRPC.Если микро-сервис A подписан на события, генерируемые микро-сервисом C, он может также отправить сообщение в очередь (RabbitMQ или Kafka), когда происходят определенные события.Микро-сервис C обрабатывает сообщение из очереди в фоновом режиме, что позволяет создать асинхронное взаимодействие.

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

13 Июл в 19:52
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир