Ribbon组件
Ribbon组件:用于微服务间实现负载均衡,包括轮询,随机等等
实现负载均衡流程:消费者端发起请求——Ribbon解析消费者端发起的请求地址(即提供者的服务名称)——Ribbon去eureka注册中心拉取对应的提供者——如果提供者是集群服务则做负载均衡
Ribbon代码实现原理:x
注:该图片选自黑马教程
负载均衡规则
- 规则接口是IRule
- 默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询
负载均衡策略修改方式
- 通过代码修改,在启动类中定义一个Rule,该方法配置灵活,但修改时需要重新打包发布
@Bean public IRule randomRule(){ return new RandomRule(); }
-
配置文件方式:在application.yml文件中,添加新的配置修改。该方法直观,方便,无需重新打包发布,但无法做全局配置
userservice: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则
注意不要和第一种方法同时使用,如果两种规则不同可能会出错
饥饿加载
Ribbon默认采用懒加载,即第一次访问时才会创建LoadBalanceClient,请求时间会很长。
而饥饿加载则会在项目启动时就创建,降低第一次访问耗时,通过在application.yml文件中配置开启饥饿加载
ribbon:
eager-load:
enabled: true #开启饥饿加载
clients:
- userservice #指定饥饿加载的服务名称 这里是手动指定一个或多个服务
- xxxx