赞
踩
Spring Cloud Ribbon
是基于Netflix Ribbon 实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer获取到所有提供服务的实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。Ribbon也可以实现自定义的负载均衡算法。随机
,通过随机选择服务进行执行,一般这种方式使用较少。轮训
,它是负载均衡默认实现方式,请求来了之后进行排队处理。加权轮训
,通过对服务器性能分型,给高配置,低负载的服务器分配更高的权重,均衡各个服务器的压力;地址Hash
,通过客户端请求的地址的HASH值取模映射进行服务器调度;最小链接数
,即使请求均衡了,但压力不一定会均衡,最小连接数法就是根据服务器的情况,比如请求积压数等参数,将请求分配到当前压力最小的服务器上。@LoadBalanced
注解@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
注意
:
//通过配置类的方式修改默认负载均衡规则
@Configuration
public class RibbonConfig {
/**
* 注意:这里的方法名(iRule)是预设的,不可随意更改
* @return
*/
@Bean
public IRule iRule(){
return new RandomRule();
}
}
@RibbonClient
设置某个微服务执行特定的负载均衡策略@SpringBootApplication
//这里设置要为哪个服务提供方选用指定的负载均衡的规则
@RibbonClients(value = {
@RibbonClient(name = "StockService", configuration = RibbonConfig.class)
})
public class OrderServiceApplication {
public static void main(String[] args) {
SpringApplication.run(OrderServiceApplication.class, args);
}
}
# 设置指定服务提供方的负载均衡策略:根据权重随机
StockService: #被调用的服务名
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
public class CustomRule extends AbstractLoadBalancerRule {
@Override
public void initWithNiwsConfig(IClientConfig iClientConfig) {
}
@Override
public Server choose(Object o) {
ILoadBalancer loadBalancer = this.getLoadBalancer();
//获取当前请求的服务的实例
List<Server> servers = loadBalancer.getReachableServers();
int nextInt = ThreadLocalRandom.current().nextInt(servers.size());
return servers.get(nextInt);
}
}
StockService: #被调用的服务名
ribbon:
NFLoadBalancerRuleClassName: com.example.ribbon.CustomRule # 设置为自定义的策略
ribbon:
eager-load:
# 开启饥饿加载
enabled: true
# 配置某个服务使用ribbon的饥饿加载,多个服务可使用逗号分隔
clients: StockService
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。