zoukankan      html  css  js  c++  java
  • 【记录】spring cloud 组件 Ribbon

    ribbon是什么?

     Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。

    简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。

    简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。

    如何使用:

     首先,我们还是要引入依赖(引入eureka依赖自动包含ribbon),

     服务端依赖:

    <!-- SpringBoot整合eureka服务端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

     

    服务端启动类:

    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer
    public class AppEureka {
    
        public static void main(String[] args) {
    
        }
    
    }

    服务端yml配置

    ###服务端口号
    server:
      port: 8300
    ###eureka 基本信息配置
    eureka:
      instance:
        ###注册到eurekaip地址
        hostname: localhost
      client:
        serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    ###因为自己是为注册中心,不需要自己注册自己  是否将自己注册到eureka服务注册中心,默认为true
        register-with-eureka: false
    ###因为自己是为注册中心,不需要检索服务  是否从服务注册中心获取可用的服务清单,默认为true
        fetch-registry: false

    客户端依赖:

    <!-- SpringBoot整合eureka客户端 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>

     

    某客户端启动demo

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    import org.springframework.context.annotation.ComponentScan;
    import com.spring4all.swagger.EnableSwagger2Doc;
    
    @SpringBootApplication
    @EnableSwagger2Doc
    @EnableEurekaClient
    @ComponentScan("com")
    public class AppWeixin {
    
        public static void main(String[] args) {
            SpringApplication.run(AppWeixin.class, args);
        }
    }

    客户端yml添加eureka

    ###服务名称(服务注册到eureka名称)  
    eureka:
      client:
        service-url:
            defaultZone: http://localhost:8300/eureka

     

    但是,eureka已经把ribbon集成到他的依赖里面去了,所以这里不需要再引用ribbon的依赖,如图:

    要使用ribbon,只需要一个注解:

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate;
    }

    RestTemplate上面加入@LoadBalanced注解,这样子就已经有了负载均衡。

    Ribbon核心组件 IRule

    IRule是什么? 它是Ribbon对于负载均衡策略实现的接口, 怎么理解这句话? 说白了就是你实现这个接口,就能自定义负载均衡策略, 自定义我们待会儿来讲, 我们先来看看他有哪些默认的实现

    默认是轮询策略

     Spring 的配置类里面把对应的实现作为一个Bean返回出去就行了。

    @Bean
    public IRule iRule(){
        return  new RoundRobinRule();
    }
  • 相关阅读:
    一张图片入门Python
    4.1. 如何在Windows环境下开发Python
    你必须知道的EF知识和经验
    XUnit的使用
    如何使用NUnit
    Entity Framework 不支持DefaultValue
    Have You Ever Wondered About the Difference Between NOT NULL and DEFAULT?
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Entity Framework 与多线程
    sqlite中的自增主键
  • 原文地址:https://www.cnblogs.com/wbl001/p/12391569.html
Copyright © 2011-2022 走看看