Ribbon负载均衡策略初步解读

1.接口实现结构图

此图参考(https://blog.csdn.net/qq_31489805/article/details/80341200)

2.ribbon的几种负载均衡原则 


RandomRule----随机策略            
     随机选择 Server
RoundRobinRule----轮循策略            
    按顺序循环选择 Server
RetryRule----重试策略            
    在一个配置时问段内当选择 Server 不成功,则一直尝试选择一个可用的 Server
BestAvailableRule----最低并发策略        
    逐个考察 Server,如果 Server 断路器打开,则忽略,再选择其中并发连接最低的 Server
AvailabilityFilteringRule----可用过滤策略        
    过滤掉一直连接失败并被标记为 circuit tripped 的 Server,过滤掉那些高并发连接的 Server(active connections 超过配置的网值)
WeightedResponseTimeRule----响应时间加权策略    
    根据 Server 的响应时间分配权重。响应时间越长,权重越低,被选择到的概率就越低;响应时间越短,权重越高,被选择到的概率就越高。这个策略很贴切,综合了各种因素,如:网络、磁盘、IO等,这些因素直接影响着响应时间
ZoneAvoidanceRule----区域权衡策略        
    综合判断 Server 所在区域的性能和 Server 的可用性轮询选择 Server,并且判定一个 AWS Zone 的运行性能是否可用,剔除不可用的 Zone 中的所有 Server
 

3.配置方式:

yml(properties)配置

# 基于配置文件形式的 针对单个服务的 Ribbon 负载均衡

server-name:
  ribbon:
    #随机策略
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule

    #轮询策略

    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule

编程式配置

     1.编写ribbon配置类 ,若想详细了解分配策略实现机制,可于import com.netflix.loadbalancer 中查看具体源码 

package com.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.netflix.loadbalancer.AvailabilityFilteringRule;
import com.netflix.loadbalancer.BestAvailableRule;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import com.netflix.loadbalancer.ResponseTimeWeightedRule;
import com.netflix.loadbalancer.RetryRule;
import com.netflix.loadbalancer.RoundRobinRule;
import com.netflix.loadbalancer.WeightedResponseTimeRule;
import com.netflix.loadbalancer.ZoneAvoidanceRule;

@Configuration
public class RibbonConfiguration {
	@Bean
	public IRule ribbonRule(){
		
		//return new RandomRule();//配置策略为随机
		
		//return new RoundRobinRule();//配置策略为轮询
		
		//return new RetryRule();//配置策略为重试
		
		//return new BestAvailableRule();//配置策略为最低并发
		
		//return new AvailabilityFilteringRule();//配置策略为可用过滤
		
		//return new ResponseTimeWeightedRule();//配置策略为响应时间加权,已经弃用
		//return new WeightedResponseTimeRule();//配置策略为响应时间加权
		
		return new ZoneAvoidanceRule();//配置策略为区域权衡
	}

}

   2. 指定服务名称使用配置的ribbon

package com.xinq.config;

import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.context.annotation.Configuration;

import com.config.RibbonConfiguration;
/**
 * name  指定了负载均衡分配的服务名
 * configuration  指定了配置策略的类
 * @author Administrator
 *
 */
@Configuration
@RibbonClient(name="service-name",configuration=RibbonConfiguration.class)
public class TestConfigruation {

}

                                      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值