详解Ribbon负载均衡

Ribbon是一个客户端负载均衡器,能够给HTTP和TCP客户端带来灵活的控制。

描述

Ribbon的核心概念是命名的客户端。每一个负载均衡器都是一系列工作在一起的组件的一部分,并用于按需联系远程服务。你可以给这一系列一个名字(例如使用@FeignClient注解)。Spring Cloud使用RibbonClientConfiguration为每一个命名的客户端建立一个新系列为满足ApplicationContext的需求。 这包括一个ILoadBalancer, 一个RestClient和一个ServerListFilter

使用方式

现在新版本的spring-cloud-starter-eureka依赖中就已经包含了Ribbon Starter
但是想要完整的使用ribbon的全部负载策略的话

		<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-ribbon -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-ribbon</artifactId>
			<version>1.4.7.RELEASE</version>
		</dependency>

使用以上的依赖即可

@Configuration
public class RestConfig {

    @LoadBalanced //开启负载
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    @Autowired
    private IClientConfig config;

    @Bean
    public IRule ribbonRule(IClientConfig config) {
        // 自定义为权重模式
        return new WeightedResponseTimeRule();
    }
}

调用逻辑

在常见微服务场景中,负载下游服务的实例信息是通过注册中心来管理的。
ribbon通过注册中心获取的服务注册信息。(当然官网文档也说明,可以不使用注册中心,通过配置方式来定义负载的下游实例)
在服务调用时,ribbon会根据当前配置或定义的负载策略,在服务实例列表中进行选择,进而实现客户端的负载均衡。
其他使用方式参照官方文档
在这里插入图片描述

负载策略

负载的入口其实是ServiceInstanceChooser接口中的choose方法,所有实现该方法的类都可以实现负载服务实例的选择。

在这里插入图片描述

而内部真实的负载策略则是有IRule的接口实现类来定义。

在这里插入图片描述

实现类描述
RetryRule支持重试的策略
RoundRobinRule轮询策略
WeightedResponseTimeRule默认轮询,在使用过程中根据响应时间进行权重运算,根据权重来负载
AvailabilityFilteringRule支持筛选(连接状态、连接数…)负载策略
RandomRule随机负载策略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值