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();
    }
  • 相关阅读:
    我的SWT与数字图像处理总结(1)—重点Image类的介绍
    我的SWT与数字图像处理总结(2)—使用JFreeChart生成灰度直方图
    使用Wiz编写和发布博客园(cnblogs)博客
    RCP之病人信息系统开发总结(2):项目结构分析和重要类分析
    Java与XML(一):采用DOM操作XML文件
    Java实例开发0502 简单的HTTP服务器端
    RCP之病人信息系统开发总结(1):数据库设计
    我的SWT与数字图像处理总结(3)—SWT如何得到图像某个位置的像素值和相应的RGB的值
    对象的保存和载入
    Java与XML(二):使用Dom4j 操作 XML 文件
  • 原文地址:https://www.cnblogs.com/wbl001/p/12391569.html
Copyright © 2011-2022 走看看