Spring Cloud Alibaba如何实现负载均衡机制?

2026-05-25 21:521阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计732个文字,预计阅读时间需要3分钟。

Spring Cloud Alibaba如何实现负载均衡机制?

目录

一、负载均衡的两种方式

1.服务器端负载均衡

2.客户端负载均衡

二、手写一个客户端负载均衡器

三、使用Ribbon实现负载均衡

1.负载均衡的两种方式

2.服务器端负载均衡

3.传统的负载均衡

目录
  • 一、负载均衡的两种方式
    • 服务器端负载均衡
    • 客户端侧负载均衡
  • 二、手写一个客户端侧负载均衡器
    • 三、使用Ribbon实现负载均衡

      一、负载均衡的两种方式

      服务器端负载均衡

      传统的方式前端发送请求会到我们的的nginx上去,nginx作为反向代理,然后路由给后端的服务器,由于负载均衡算法是nginx提供的,而nginx是部署到服务器端的,所以这种方式又被称为服务器端负载均衡。

      Spring Cloud Alibaba如何实现负载均衡机制?

      客户端侧负载均衡

      现在有三个实例,内容中心可以通过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负载均衡的资料请关注自由互联其它相关文章!

      本文共计732个文字,预计阅读时间需要3分钟。

      Spring Cloud Alibaba如何实现负载均衡机制?

      目录

      一、负载均衡的两种方式

      1.服务器端负载均衡

      2.客户端负载均衡

      二、手写一个客户端负载均衡器

      三、使用Ribbon实现负载均衡

      1.负载均衡的两种方式

      2.服务器端负载均衡

      3.传统的负载均衡

      目录
      • 一、负载均衡的两种方式
        • 服务器端负载均衡
        • 客户端侧负载均衡
      • 二、手写一个客户端侧负载均衡器
        • 三、使用Ribbon实现负载均衡

          一、负载均衡的两种方式

          服务器端负载均衡

          传统的方式前端发送请求会到我们的的nginx上去,nginx作为反向代理,然后路由给后端的服务器,由于负载均衡算法是nginx提供的,而nginx是部署到服务器端的,所以这种方式又被称为服务器端负载均衡。

          Spring Cloud Alibaba如何实现负载均衡机制?

          客户端侧负载均衡

          现在有三个实例,内容中心可以通过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负载均衡的资料请关注自由互联其它相关文章!