Apache kafka 使用ApacheKafka和SpringCloudNetflix堆栈

Apache kafka 使用ApacheKafka和SpringCloudNetflix堆栈,apache-kafka,microservices,netflix-zuul,netflix-eureka,netflix,Apache Kafka,Microservices,Netflix Zuul,Netflix Eureka,Netflix,目前,我正在使用SpringCloudNetflix堆栈开发基于微服务的应用程序。我使用了Netflix stack提供的不同服务,如 EUREKA : for service registration and discovery ZUUL : for proxy gateway and RIBBON : for load balancing 现在我们想使用ApacheKafka在微服务之间进行交互通信,其中kafka将有不同的主题供我们的微服务订阅, 现在真正的问题从这里开始,负载平衡、代理

目前,我正在使用SpringCloudNetflix堆栈开发基于微服务的应用程序。我使用了Netflix stack提供的不同服务,如

EUREKA : for service registration and discovery
ZUUL : for proxy gateway and
RIBBON : for load balancing
现在我们想使用ApacheKafka在微服务之间进行交互通信,其中kafka将有不同的主题供我们的微服务订阅, 现在真正的问题从这里开始,负载平衡、代理网关和eureka将如何在这里工作

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组件。您可以发布到某个主题,并让微服务中的使用者使用该主题。负载平衡将根据主题中的分区数自动进行

例如,让我们考虑你的主题名是测试,它有4个分区。如果您部署了4个微服务,每个微服务由一个Kafka消费者组成,消费来自主题测试,那么每个消费者将消费来自主题测试的1个分区。因此,负载平衡将自动发生

spring cloud netflix组件主要用于微服务之间进行网络调用时的微服务间通信

比如说- 让我们考虑两个应用程序A和B。您部署了4个应用程序A实例和4个应用程序B实例。系统使用者的入口点是应用程序。在这里,您将使用像Zuul这样的Api网关。至于Eureka,您将在其中部署所有实例。当Zuul收到需要转发到应用程序a的请求时。应用程序A的所有实例都将从Eureka(本例中为4个)获取,然后提供给负载平衡器功能区,后者将选择调用哪个url。然后,Zuul将请求转发给应用程序A的实例

你应该看的一些链接是-


谢谢@Indraneel。这些信息非常有用。然而,我们正在使用eureka infra将rest调用注册/路由到微服务,然后微服务将写入Kafka topic,让其他微服务使用该消息。网关将帮助我们对实例数量进行扩展和负载平衡,而kafka将帮助我们在消息处理和使用APIsOkay之间进行扩展,然后您可以同时使用这两种方法。对于需要通过网络呼叫进行通信的微服务,有一些组件(如eureka、ribbon、hystrix)非常有用。如前所述,您还可以使用Zuul作为您的网关。您也可以考虑使用SpringCloudGateway来代替Zuul。选择权在你。这是非常有用的,非常感谢