В настоящее время я использую весенний облачный стек 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.
Я искал, но не нашел удовлетворительного ответа, будет ли мне признателен какой-либо эксперт здесь, если есть какие-либо похожие вопросы, которые также могут помочь.
Заранее спасибо.

Для вашего вышеупомянутого варианта использования, если вы собираетесь использовать 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/
Хорошо, тогда вы можете использовать оба. Для микросервисов, где вам нужна связь через сетевые вызовы, полезны такие компоненты, как eureka, tape, hystrix. Как уже упоминалось, вы также можете использовать Zuul в качестве шлюза.
Вместо Zuul вы также можете подумать об использовании Spring Cloud Gateway. Выбор за вами. cloud.spring.io/spring-cloud-gateway
это было так информативно, большое спасибо
Спасибо @Indraneel Bende Эта информация действительно информативна. однако мы используем обе Eureka Infra для регистрации / маршрутизации вызова к микросервисам, тогда микросервис будет писать в тему Kafka, чтобы другие микросервисы могли использовать сообщение. и шлюз поможет нам масштабировать и балансировать нагрузку для количества экземпляров, тогда как kafka поможет нам масштабироваться между обработкой сообщений и потреблением API-интерфейсов.