Использование apache kafka со стеком spring cloud netflix

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

EUREKA : for service registration and discovery
ZUUL : for proxy gateway and
RIBBON : for load balancing

теперь мы хотим использовать Apache kafka для взаимодействия между микросервисами, где kafka будет иметь разные темы, на которые будут подписываться наши микросервисы, Теперь начинается настоящая проблема: как здесь будут работать балансировка нагрузки, прокси-шлюз и эврика.

few questions I have in mind which are really confusing me are
1. how ribbon load balancing will work here, since while using HTTP we are using @loadbalanced restTemplate but now this will not be the case.
2. how service calls will be distributed among different instances of a same service
3. whether Zuul and Eureka are needed here or we just need to ignore these and go with kafka load balancing and service discovery through topics.

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

Заранее спасибо.

Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
2
0
1 971
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для вашего вышеупомянутого варианта использования, если вы собираетесь использовать kafka для взаимодействия между микросервисами, нет необходимости в каком-либо компоненте spring-cloud-netflix. Вы можете опубликовать в теме, и потребители в микросервисах будут использовать эту тему. Балансировка нагрузки будет происходить автоматически в зависимости от количества разделов в теме.

Например, предположим, что ваша тема называется test и имеет 4 раздела. Если вы развернули 4 микросервиса, каждый из которых состоит из одного потребителя Kafka, использующего тест темы, то каждый потребитель будет использовать один раздел в тесте темы. Таким образом, балансировка нагрузки произойдет автоматически.

Компоненты spring-cloud-netflix в основном предназначены для взаимодействия между микросервисами, когда между микросервисами участвуют сетевые вызовы.

Например - Давайте рассмотрим два приложения A и B. У вас есть 4 развернутых экземпляра приложения A и 4 развернутых экземпляра приложения B. Отправной точкой для потребителей вашей системы является Приложение A. Здесь вы будете использовать шлюз Api, например Zuul. Что касается Eureka, в нем будут все развернутые экземпляры. Когда в Zuul поступает запрос, который необходимо перенаправить в приложение А. Все экземпляры приложения A будут извлечены из Eureka (в нашем случае 4), а затем переданы ленте балансировщика нагрузки, которая выберет, какой URL-адрес следует вызвать. Затем Zuul перенаправит запрос этому экземпляру приложения A.

Некоторые ссылки, на которые вы должны посмотреть:

https://github.com/Netflix/zuul/wiki/How-it-Works

https://github.com/Netflix/ribbon/wiki/Working-with-load-balancers

https://blog.asarkar.org/technical/netflix-eureka/

Спасибо @Indraneel Bende Эта информация действительно информативна. однако мы используем обе Eureka Infra для регистрации / маршрутизации вызова к микросервисам, тогда микросервис будет писать в тему Kafka, чтобы другие микросервисы могли использовать сообщение. и шлюз поможет нам масштабировать и балансировать нагрузку для количества экземпляров, тогда как kafka поможет нам масштабироваться между обработкой сообщений и потреблением API-интерфейсов.

adhikari 21.06.2018 16:52

Хорошо, тогда вы можете использовать оба. Для микросервисов, где вам нужна связь через сетевые вызовы, полезны такие компоненты, как eureka, tape, hystrix. Как уже упоминалось, вы также можете использовать Zuul в качестве шлюза.

Indraneel Bende 21.06.2018 17:43

Вместо Zuul вы также можете подумать об использовании Spring Cloud Gateway. Выбор за вами. cloud.spring.io/spring-cloud-gateway

Indraneel Bende 21.06.2018 17:44

это было так информативно, большое спасибо

farhad 23.01.2021 08:00

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