目前,我正在使用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.
我傻笑,但没有找到任何令人满意的答案,如果任何Maven在这里可以帮助我将不胜感激,如果有任何类似的问题,也可以帮助。
提前谢谢。
1条答案
按热度按时间ecr0jaav1#
对于上述用例,如果您打算使用kafka进行微服务间的通信,则不需要任何spring云netflix组件。您可以发布到某个主题,并让微服务中的使用者使用该主题。负载平衡将根据主题中的分区数自动进行。
例如,让我们考虑一下您的主题名是test,它有4个分区。如果您部署了4个微服务,每个微服务由一个kafka使用者组成,每个使用者将使用主题测试的1个分区。因此,负载平衡将自动发生。
springcloudnetflix组件主要用于微服务之间的通信,当微服务之间涉及到网络调用时。
例如,让我们考虑两个应用程序a和b。您部署了应用程序a的4个示例和应用程序b的4个示例。系统使用者的入口点是应用程序。在这里,您将使用像zuul这样的api网关。至于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/