- 过SpringColud中已经帮我们集成了一系列负载均衡组件:LoadBalancerClient、Ribbon、Feign,简
单修改代码即可使用。
基于LoadBalance服务调用
原理介绍
基于Ribbon的远程调用
Ribbon介绍
- Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。它是一个基于HTTP和
TCP的客户端负载均衡器。
实现步骤
(1)引入Ribbon的依赖(spring-cloud-starter-netflix-ribbon);
(2)在主启动类中声明RestTemplate(@Bean),同时在该方法上新增注解@LoadBalancd;
(3)编写方法实现(注:RestTemplate的方法中的地址参数为"http://serverId"+"/类映射名/方法映射名", 其中serverId为要调用的服务提供者在注册中心的Application名字);
基于Feign的远程调用
Feign介绍
Feign是一个声明式的web服务客户端,它使编写web服务客户端变得更加容易。创建一个接口并添加一
个Fegin的注解@FeignClient,就可以通过该接口调用生产者提供的服务。Spring Cloud对Feign进行了
增强,使得Feign支持了Spring MVC注解
两点:1、Feign采用的是接口加注解的声明式服务调用;
2、Fegin整合Ribbon及Eureka,支持负载均衡
实现步骤
(1)引入Feign的依赖(spring-cloud-starter-openfeign);
(2)在主启动类上添加开启Feign的注解@EnableFeignClients;
(3)编写接口,并在接口上添加注解@FeignClient(value="serverId"),接口中的抽象方法直接粘贴复制服务提供者中的被调用方法和其注解,但注意此时Mapping类型的注解中的映射应为服务提供者的类映射+该方法映射;
(4)编写方法直接调用上述接口的方法即可;