SpringCloud之Ribbon负载均衡(四)

简介

  分布式系统中,各个微服务会部署多个实例,如何将服务消费者均匀分摊到多个服务提供者实例上,就要使用到负载均衡器。

  Ribbon 是负载均衡器 ,它提供了很多负载均衡算法,例如轮询、随即等,在配置服务提供者地址后,可以将服务消费者请求均匀的分发。

Ribbon常用负载均衡策略

  Ribbon就属于进程内负载均衡,它只是一个类库,集成于Eureka Client进程,Eureka Client进程通过访问注册中心Eureka Server发现服务列表,发现的服务列表信息是由ribbon来管理的。

  当访问Application Service的时候,Application Client会通过ribbon来找到合适的Application Service地址信息,并发起远程调用请求。

  Ribbon的负载均衡策略是通过不同的类型来实现的,下表详细介绍一些常用负载均衡策略及对应的Ribbon策略类。

Ribbon服务搭建

修改springcloud-consumer-dept-80消费者服务。

① 修改pomapplication.yml文件

pom中添加如下依赖

修改application.yml文件

② 在相关类添加注解

 因为消费者通过RestTemplate接口进行远程调用服务的,所以在这个方法添加Ribbon注解,通过@LoadBalanced注解进行负载均衡,选择调用服务提供者

controller类通过服务名称调用。

启动类添加@EnableEurekaClient 注解,因为它是通过服务名称调用的,而服务名称在注册中心中注册着,所以需要添加注解,连接注册中心

Ribbon负载均衡的基本配置算是OK了,因为测试负载均衡,需要多个服务提供者。所以新建服务提供者


多服务提供环境搭建

创建springcloud-provider-dept-8002springcloud-provider-dept-8003子项目,和8001相同只是对应的端口号和一些配置修改即可。

 

几乎和8001完全一样,只是对应的8002 8003的application.yml服务器端口改为80028003

测试

  • 启动三个Eureka注册中心
  • 启动springcloud-consumer-dept-80
  • 启动springcloud-provider-dept-8001/8002/8003三个服务提供者

访问 http://localhost/consumer/dept/get/1

多次访问,查看三个服务提供者的控制台

 

 

发现平均访问,这是Ribbon默认的负载均衡访问算法,也可以自定义访问规则

总结

原文地址:https://www.cnblogs.com/FondWang/p/12251227.html