在前面博客中遗留的问题,在这里彻底得到解答。让我们再回顾一遍。
一是硬编码的问题,如果不用硬编码,如何让消费者调到注册到Eureka中的微服务
二是多个节点的时候如何保持负载均衡
由以上问题,我们引出了Ribbon的概念,我们从以下几个方面来进行讲解。
首先我们来看,负载均衡的两种方式。
一是服务器端负载均衡,二是客户端侧负载均衡。
我们在服务器端的负载均衡一般会考虑到用nginx。
当客户端发出请求时,nginx做一层反向代理,定位到相应的服务器进行访问。
客户端侧负载均衡
我们将服务器实例都放在服务列表中,然后使用负载均衡组件将其拉过来,然后就可以用负载均衡策略进行请求。Ribbon便可以实现这样的功能的一个组件。
What Ribbon
Ribbon是一个客户端负载均衡器,可以很好地控制HTTP和TCP客户端的行为,Feign已经使用了Ribbon。
Ribbon Architecture
Ribbon工作时分为两步:第一步先选择Eureka Server,它优先选择在同一个Zone且负载较少的Server;第二步再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多种策略。例如轮询round robin、随机Random、根据响应时间加权等。
后面博客继续介绍Ribbon的一个Demo