Ribbon实现负载均衡

首先,我们需要思考一个问题,如果同一个服务提供者在注册中心注册多个服务,那么用户怎么选择服务呢?所以,需要客户端来实现服务的负载均衡,而在SpringCloud中,推荐使用Ribbon来实现负载均衡。

Ribbon简介

Ribbon时Netflix发布的负载均衡器,它有助于控制HTTP和TCP客户端的行为。为Ribbon配置服务提供者地址列表后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多的负载均衡算法,例如轮询、随机等。我们也可以自定负载均衡算法。

有了Ribbon之后,我们的工程架构:


使用Ribbon

首先为order模块(Ribbon主要是帮助服务消费者)增加Ribbon依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>

但是eureka依赖中已经包含了,所以可省略。

然后为RestTemplate设置@LoadBalanced注解。之后,改造Item Service的实现:
之前的实现:


现在的实现:


到此,已经全部完成了负载均衡。当然,Ribbon还有很多其他的策略,如图所示,可以根据这些类深入类的内部进行探究。


一般的策略是默认策略,当然也有其他策略:


推荐阅读更多精彩内容