小工具知识网

当前位置: 首页 > 行业知识 > Spring Cloud Nacos 2021使用LoadBalancer做负载均衡

行业知识

Spring Cloud Nacos 2021使用LoadBalancer做负载均衡

2026-11-09 04:20:52 来源:互联网转载

项���源码:https://download.csdn.net/download/weixin_42950079/87150709


Spring Cloud Nacos 2021 移除了 Ribbon,在Spring Cloud Commons 项目中添加了 Spring Cloud LoadBalancer 作为新的负载均衡器

    com.alibaba.cloud    spring-cloud-starter-alibaba-nacos-discovery    2021.0.1.0    org.springframework.cloud    spring-cloud-loadbalancer

LoadBalancer负载均衡策略

LoadBalancer 的负载均衡策略没有 Ribbon 那么丰富,只提供了RandomLoadBalancer、NacosLoadBalancer、RoundRobinLoadBalancer,在不指定的时候默认使用RoundRobinLoadBalancer轮询负载均衡策略。 推荐使用整合 Ribbon 的方式来实现负载均衡。

  • RandomLoadBalancer :基于随机访问的负载均衡策略
  • NacosLoadBalancer:基于Nacos权重的负载均衡策略
  • RoundRobinLoadBalancer:基于轮询的负载均衡策略

    切换LoadBalancer负载均衡策略

    • 使用基于随机访问的负载均衡策略,注意返回类型是 ReactorLoadBalancer
      @Configurationpublic class CustomLoadBalancerConfiguration {    // 参考 NacosLoadBalancerClientConfiguration    @Bean    public ReactorLoadBalancer randomLoadBalancer(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) {        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);                return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);    }}
      • 使用基于轮询的负载均衡策略,注意返回类型是 ReactorLoadBalancer
        @Configurationpublic class CustomLoadBalancerConfiguration {    // 参考 NacosLoadBalancerClientConfiguration    @Bean    public ReactorLoadBalancer roundRobinLoadBalancer(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory) {        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);        return new RoundRobinLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);    }}

        使用负载均衡策略

        • 在启动类上添加@LoadBalancerClient注解,指定xxx服务使用xxx负载均衡策略。
          @SpringBootApplication@LoadBalancerClients(        @LoadBalancerClient(value = "stock-service", configuration = CustomLoadBalancerConfiguration.class))public class Order8010Application {    public static void main(String[] args) {        SpringApplication.run(Order8010Application.class);        System.out.println("order8010 --> 项目启动成功");    }}

          然后测试即可

          测试时,记得先启动 Nacos 集群哦,然后再浏览器中输入:localhost:8010/order/add

上一篇:海川服务器手机怎么下载?

下一篇:Android Studio(AS)使用别人的项目与gradle包并运行项目