【Eureka+Ribbon】实现负载均衡

续上篇文章的项目结构:

【Eureka】建立注册中心、消费者、提供者_Kanseui ?的博客-CSDN博客

Ribbon介绍

Ribbon是一款负载均衡器,可以自动地帮消费者去请求,负载均衡算法:轮询、随机等。当Ribbon和Eureka配合使用时,可以用注册中心获取服务提供者,并基于负载均衡算法,请求其中一个服务提供者。

Ribbon依赖添加在消费者的pom文件中

<!--        ribbon-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>

Ribbon的负载均衡

(一)轮询

消费者的启动类中加入@LoadBalanced注解

    @Bean
    @LoadBalanced //负载均衡注解
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

就实现了默认的轮询,平均地在每个服务提供者访问

(二)随机

a.在启动类加RandomRule的Bean

这种方法是,在所有的服务提供者中随机分配。

    @Bean
   public RandomRule randomRule(){
       return new RandomRule();
   }

b.在yml文件中单独配置

针对某个服务名的服务作随机分配,如下图sevice-product就是一个服务名spring.application.name

#负载均衡策略:局部策略【专属定制】
#调用服务的名称
sevice-product:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
    #指定需要直连的服务
    listOfServers: http://localhost:7070,http://localhost:7071

测试时,消费者不通过eureka,直接访问提供者

首先要把消费者pom文件中的netflix-eureka-client删掉,保留ribbon

然后在消费者的yml文件添加

#告诉ribbon要关闭eureka
ribbon:
  eureka:
    enabled: false #false关闭 true开启

就可以在不通过eureka的前提上,直接访问服务提供者了

猜你喜欢

转载自blog.csdn.net/kanseu/article/details/125650140