Spring Cloud Alibaba负载均衡实现方式

 更新时间:2022年10月08日 16:40:46   作者:请叫我黄同学  
这篇文章主要为大家介绍了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源码报错java:找不到类 InstrumentationSavingAgent的问题

    使用Spring源码报错java:找不到类 InstrumentationSavingAgent的问题

    这篇文章主要介绍了使用Spring源码报错java:找不到类 InstrumentationSavingAgent的问题,本文给大家分享解决方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • SpringBoot使用spring retry重试机制的操作详解

    SpringBoot使用spring retry重试机制的操作详解

    实际工作中由于网络波动等原因导致代码执行失败需要重新执行,保证最终能够完成业务功能,通常来说,会用try/catch,while循环或者定时任务重处理,但是这样的做法缺乏统一性,要多写很多代码,spring-retry组件可以通过注解优雅的实现重处理功能
    2024-12-12
  • idea2019导入maven项目中的某些问题及解决方法

    idea2019导入maven项目中的某些问题及解决方法

    这篇文章主要介绍了idea2019导入maven项目中的某些问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • java实现线性表及其算法

    java实现线性表及其算法

    线性表是最简单和最常用的一种数据结构,它是有n个体数据元素(节点)组成的有限序列,这篇文章主要介绍了java实现线性表及其算法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Spring AOP的底层实现方式-代理模式

    Spring AOP的底层实现方式-代理模式

    这篇文章主要介绍了Spring AOP的底层实现方式-代理模式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • java 线程池的实现方法

    java 线程池的实现方法

    在本篇文章里小编给大家整理了关于java 线程池的实现方法,有兴趣的朋友们可以学习参考下。
    2020-02-02
  • java中设计模式之适配器模式

    java中设计模式之适配器模式

    这篇文章主要介绍了java中设计模式之适配器模式的相关资料,适配器模式将一个类的接口转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作得亲密无间,需要的朋友可以参考下
    2017-09-09
  • Spark学习笔记 (二)Spark2.3 HA集群的分布式安装图文详解

    Spark学习笔记 (二)Spark2.3 HA集群的分布式安装图文详解

    这篇文章主要介绍了Spark2.3 HA集群的分布式安装,结合图文与实例形式详细分析了Spark2.3 HA集群分布式安装具体下载、安装、配置、启动及执行spark程序等相关操作技巧,需要的朋友可以参考下
    2020-02-02
  • SpringBoot前后端分离跨域问题:状态码403拒绝访问解决办法

    SpringBoot前后端分离跨域问题:状态码403拒绝访问解决办法

    这篇文章主要给大家介绍了关于SpringBoot前后端分离跨域问题:状态码403拒绝访问的解决办法,403是被服务器拒绝了,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Java中File类方法详解以及实践

    Java中File类方法详解以及实践

    Java File类的功能非常强大,利用java基本上可以对文件进行所有操作,下面这篇文章主要给大家介绍了关于Java中File类方法以及实践的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04

最新评论