Ribbon 就是在 HttpClient 上做了一层包装,支持负载均衡,如果Producer(生产者)有多个,则消息者 (Consumer)ribbon 可以根据策略选择其中一个Producer(生产者)
其中核心的 @LoadBalanced 负载均衡的原理步骤
1 首先从注册中心获取provider的列表
2 通过一定的策略选择其中一个节点
3 再返回给restTemplate调用
1 按照以往的步骤,先搭建好Eureka注册中心的服务端和客户端
可参考博文 SpringCloud-Eureka 服务注册与发现,搭建 服务端和客户端_idea创建注册中心,服务端,客户端-CSDN博客
假如需求:订单服务调用产品服务
2 订单服务的项目添加依赖 (注册中心为Nacos,不用添加,已经内置了)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
3 订单服务的启动类添加Ribbon相关的支持 @LoadBalanced
@SpringBootApplication
public class OrderServiceRibbonApplication {
public static void main(String[] args) {
SpringApplication.run(OrderServiceRibbonApplication.class, args);
}
//Ribbon调用
@Bean
@LoadBalanced
public RestTemplate getRestTemplete()
{
return new RestTemplate();
}
}
3 Ribbon调用方式
http://+服务名/+Control请求地址+请求参数(可选)
如 http://product-service/product/find?id=1
//业务层调用代码
@Autowired
public RestTemplate restTemplate;
Product forObject = restTemplate.getForObject("http://product-service/product/find?id=" + id, Product.class);
System.out.println(forObject);