这篇文章主要为大家介绍了Spring Cloud Alibaba负载均衡实现方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
一、负载均衡的两种方式
服务器端负载均衡
传统的方式前端发送请求会到我们的的nginx上去,nginx作为反向代理,然后路由给后端的服务器,由于负载均衡算法是nginx提供的,而nginx是部署到服务器端的,所以这种方式又被称为服务器端负载均衡。
客户端侧负载均衡
现在有三个实例,内容中心可以通过discoveryClient 获取到用户中心的实例信息,如果我们再订单中心写一个负载均衡的规则计算请求那个实例,交给restTemplate进行请求,这样也可以实现负载均衡,这个算法里面,负载均衡是有订单中心提供的,而订单中心相对于用户中心是一个客户端,所以这种方式又称为客户端负负载均衡。
二、手写一个客户端侧负载均衡器
◆随机选择实例
@Autowired
private DiscoveryClient discoveryClient;
@GetMapping("/order/create")
public String createOrder(Integer productId,Integer userId){
List<ServiceInstance> instances = discoveryClient.getInstances("msb-stock");
List<String> targetUrls = instances.stream()
// 数据变换
.map(instance -> instance.getUri().toString() + "/stock/reduce")
.collect(Collectors.toList());
int i = ThreadLocalRandom.current().nextInt(targetUrls.size());
String targetUrl = targetUrls.get(i);
log.info("请求求目标地址:{}",targetUrl);
String result = restTemplate.getForObject(targetUrl +"/"+ productId, String.class);
log.info("进行减库存:{}",result);
return "下单成功";
}
三、使用Ribbon实现负载均衡
Ribbon是什么? Netflix开源的客户端侧负载均衡器
更加直观说就是ribbon就是简化我们这段代码的小组件,不过他比我们的代码要强大一些,他给他们提供了丰富的负载均衡算法。
引入ribbon :三步骤: 加依赖,启动注解,写配置
不需要加,nacosdiscovery,已经给添加了依赖,
写注解,需要写到RestTemplate上面。
第三步:写配置
没有配置。
改造我们的请求:
url:改为 下面 当请求发送的发送的时候ribbon会将nx-us进行转化为我们nacos里面中的地址。并且进行负载均衡算法,进行请求,
以上就是Spring Cloud Alibaba负载均衡实现方式的详细内容,更多关于Spring Cloud Alibaba负载均衡的资料请关注编程学习网其它相关文章!
本文标题为:Spring Cloud Alibaba负载均衡实现方式
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
- 基于Java Agent的premain方式实现方法耗时监控问题 2023-06-17
- JSP 制作验证码的实例详解 2023-07-30
- Java实现顺序表的操作详解 2023-05-19
- ExecutorService Callable Future多线程返回结果原理解析 2023-06-01
- SpringBoot使用thymeleaf实现一个前端表格方法详解 2023-06-06
- 深入了解Spring的事务传播机制 2023-06-02
- Springboot整合minio实现文件服务的教程详解 2022-12-03
- Spring Security权限想要细化到按钮实现示例 2023-03-07
- JSP页面间传值问题实例简析 2023-08-03
- Java中的日期时间处理及格式化处理 2023-04-18