【Ribbon框架自带的负载策略类】
常见框架自带7种实现: # com.netflix.loadbalancer.RoundRobinRule - 轮询 # com.netflix.loadbalancer.RandomRule - 随机 # com.netflix.loadbalancer.RetryRule - 重试,先按RoundRobinRule进行轮询,如果失败就在指定时间内进行重试 # com.netflix.loadbalancer.WeightedResponseTimeRule - 权重,响应速度越快,权重越大,越容易被选中。 # com.netflix.loadbalancer.BestAvailableRule - 先过滤掉不可用的处于断路器跳闸转态的服务,然后选择一个并发量最小的服务 # com.netflix.loadbalancer.AvailabilityFilteringRule - 先过滤掉故障实例,再选择并发量较小的实例 # com.netflix.loadbalancer.ZoneAvoidanceRule - 默认规则,复合判断server所在区域的性能和server的可用性进行服务的选择。
【主要步骤】
第一步:新建一个不会被@ComponentScan组件扫描到的包,如:com.rules
第二步:在该包下新建自己的负载均衡算法的规则类
第三步:主启动类上添加注解:@RibbonClient
【替换的策略类】
package com.rules; import com.netflix.loadbalancer.IRule; import com.netflix.loadbalancer.RandomRule; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @desc 自定义负载均衡策略(用于替换默认的RoundRobinRule轮询策略) */ @Configuration public class MyLoadBalanceRule { /** * @desc 自定义负载均衡规则,默认是轮询规则 * @return */ @Bean public IRule myRule(){ return new RandomRule(); // 改为随机算法规则 }
}
【主启动类】
package com.cloud.application;
import com.rules.MyLoadBalanceRule;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
@SpringBootApplication(scanBasePackages = {"com.cloud"})
@EnableDiscoveryClient
@RibbonClient(name = "cloud-payment-service",configuration = MyLoadBalanceRule.class)
public class OrderServiceApplication {
public static void main(String[] args) {
SpringApplication.run(OrderServiceApplication.class, args);
}
}
本文深入解析了Ribbon框架自带的7种负载均衡策略,包括轮询、随机、重试、权重、最佳可用、可用过滤及区域避免规则。通过自定义负载均衡策略,如随机算法,展示了如何在Spring Cloud应用中实现服务实例的选择。
7564

被折叠的 条评论
为什么被折叠?



