2023年7月19日发(作者:)
Ribbon【负载均衡策略】ribbon有7种负载均衡策略可供选择:策略类 RandomRuleRoundRobinRuleRetryRuleBestAvailableRuleAvailabilityFilteringRuleResponseTimeWeightedRuleZoneAvoidanceRule
如果想要创建⼀个全局的负载策略,只需添加⼀个配置类,也可⾃⼰扩展,添加逻辑,如下:import red;import ;import uration;import tConfig;import ;import Rule;@Configurationpublic class RibbonConfiguration { @Bean public IRule ribbonRule() { return new RandomRule(); }}命名随机策略轮询策略重试策略最低并发策略可⽤过滤策略响应时间加权重策略区域权重策略描述随机选择server按照顺序选择server(ribbon默认策略)在⼀个配置时间段内,当选择server不成功,则⼀直尝试选择⼀个可⽤的server逐个考察server,如果server断路器打开,则忽略,再选择其中并发链接最低的server过滤掉⼀直失败并被标记为circuit tripped的server,过滤掉那些⾼并发链接的server(active connections超过配置的阈值)根据server的响应时间分配权重,响应时间越长,权重越低,被选择到的概率也就越低。响应时间越短,权重越⾼,被选中的概率越⾼,这个策略很贴切盘,io等,都直接影响响应时间综合判断server所在区域的性能,和server的可⽤性,轮询选择server并且判断⼀个AWS Zone的运⾏性能是否可⽤,剔除不可⽤的Zone中的所有server
如果想要对某个服务源设置特有的策略,可以在⼯程启动类上添加@RibbonClient注解,当然,对应配置代码也需要调整:/** * ⾃定义-标记注解 */public @interface AvoidScan {}import red;import ;import uration;import tConfig;import ;import Rule;/** * Ribbon负载策略配置类,IClientConfig是针对客户端的管理配置器,配合@RibbonClient注解使⽤ */@Configuration@AvoidScanpublic class RibbonConfiguration { @Autowired private IClientConfig config; @Bean public IRule ribbonRule(IClientConfig config) { return new RandomRule(); }}import Application;import BootApplication;import DiscoveryClient;import Client;import Clients;import entScan;import Type;import can;import nfiguration;/** * ⼯程启动类 */@SpringBootApplication@EnableDiscoveryClient@RibbonClient(name = "client-a", configuration = )//表⽰针对client-a服务使⽤的负责策略是经过RibbonConfiguration配置类的。//@RibbonClients(value = {// @RibbonClient(name = "client-a", configuration = ),// @RibbonClient(name = "client-b", configuration = )//})//这种⽅式跟@RibbonClient类似,不过这个是针对多个服务进⾏策略指定。@ComponentScan(excludeFilters = {@(type = TION, value = {})})//表⽰让⼯程在启动的时候,不让Spring扫描被@AvoidScan注解标记的类, //因为配置的是针对特殊服务的负载策略,不是全局的,如果不排除,启动就会报错。public class RibbonLoadbalancerApplication { public static void main(String[] args) { (, args); }}
如果想使⽤配置⽂件的⽅式,进⾏配置负责策略,语法是 client .*,client name是我们⾃⼰给服务取的名字,即:设置的值。如下:client-a: ribbon: NFLoadBalancerRuleClassName: Rule #针对client-a服务使⽤随机策略
ribbon的重试机制,默认是开启的,需要添加超时与重试的策略配置,如下:client-a: ribbon: ConnectTimeout: 30000 ReadTimeout: 60000 MaxAutoRetries: 1 #对第⼀次请求的服务的重试次数 MaxAutoRetriesNextServer: 1 #要重试的下⼀个服务的最⼤数量(不包括第⼀个服务) OkToRetryOnAllOperations: true#说明:这⾥配置的ConnectTimeout和ReadTimeout是当HTTP客户端使⽤的是HttpClient才⽣效,这个时间最终会被设置到HttpClient中。#在设置的时候需要结合hystrix的超时时间来综合考虑,针对使⽤的场景,设置太⼩会导致很多请求失败,设置太提供了7个核⼼接⼝:接⼝IClientConfigIRuleIPingServerList
发布者:admin,转转请注明出处:http://www.yc00.com/web/1689741836a282630.html
评论列表(0条)