【记录】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();
}

 

posted @ 2020-03-01 19:50  -天道酬勤-  阅读(215)  评论(0编辑  收藏  举报