Ribbon负载均衡
Spring Cloud Ribbon 负载均衡是一套客户端负载均衡的系统。
其主要功能是提供客户端的负载均衡的算法。
负载均衡(Load Balance)主要分为集中式负载均衡和进程内负载均衡。
集中式负载均衡:即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方;
进程内负载均衡:将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。
本例基于已经实现的Eureka集群的配置:代码详见:https://hn.devcloud.huaweicloud.com/codehub/project/db863c4dd09b44e1949853aa22197df3/codehub/7172321/commit
具体步骤:
1.由于其为基于客户端的负载均衡,故需要在客户端即服务的消费者的pom文件中导入相应的包:
<!-- Ribbon相关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
2.其也需要注册在Eureka中,故在客户端即服务的消费者的yaml中,添加如下代码用来在集群Eureka中注册自己:,并且在主启动类的上方加上EnableEurekaClient:
eureka:
client:
register-with-eureka: false
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
3.在原来的配置文件的用来配置RestTemplate的方法上添加一个注解:@LoadBalanced
4.修改客户端controller类,将原来的ip地址换成:
//private static final String REST_URL_PREFIX = "http://localhost:8001";
private static final String REST_URL_PREFIX = "http://MICROSERVICECLOUD-DEPT";
这样以后就不关心ip和端口号了,可以直接通过微服务名来访问!
5.既然需要负载均衡,就需要有多个服务,即服务的提供者。参考microservicecloud-provider-dept-8001,新建两份,分别命名为8002,8003。同时,需要为这两个服务的提供者各自建立数据库,这里略(参考8001建即可)
需要修改他们的yaml配置文件。主要是配置端口名字和数据库链接。
6.这样就完成了基于Ribbon默认的负载均衡算法的使用轮询的负债均衡了。完整地址:
https://hn.devcloud.huaweicloud.com/codehub/project/db863c4dd09b44e1949853aa22197df3/codehub/7172321/commit
还没有评论,来说两句吧...