该栏目讲叙微服务概念、注册中心、负载均衡、配置中心、服务熔断、服务消费等知识
简介
- :Ribbon 是一个基于 HTTP 和 TCP 的客户端工具,主要提供客户端的软件负载均衡算法。与 RestTemplate 配合使用,通过 @LoadBalanced 开启 RestTemplate 对象调用时的负载均衡
负载均衡策略
- 轮询策略(默认):对应类名 RoundRobinRule,轮询策略表示每次都顺序取下一个 provider
- 权重轮询:对应类名 WeightedResponseTimeRule,根据每一个 provider 的响应时间分配一个权重,响应时间越长,权重越小
- 随机策略:对应类型 RandomRule,从 provider 列表中随机选择一个。
- 最少并发数策略:对应类型 BestAvailableRule,选择正在请求中的并发数最小的 provider,除非这个provider在熔断中
案例
配置组件
@Configuration
public class WebConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
public IRule ribbonRule() {
return new RandomRule();
}
}
使用Rabbon请求其他微服务
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private RestTemplate restTemplate;
@Override
public Order findOrderById(int orderId) {
return new Order(orderId, "order001", 10000, findAllProducts());
}
/**
* 使用Ribbon远程调用产品服务
*
* @return 产品列表
*/
private List<Product> findAllProducts() {
ResponseEntity<List<Product>> response = restTemplate.exchange(
"http://product-service/product/getAllProducts",
HttpMethod.GET,
null,
new ParameterizedTypeReference<List<Product>>() {
});
return response.getBody();
}
}