- Spring Cloud构建微服务架构—服务消费Ribbon
- Spring Cloud构建微服务架构服务消费Ribbon
- Spring Cloud构建微服务架构-服务消费(Ribbon)
- Spring Cloud构建微服务架构—服务消费(Ribbon)
- SpringCloud:服务的消费者 Ribbon
- Spring Cloud构建微服务架构—服务消费(Ribbon)
- Spring Cloud构建微服务架构—服务消费(Ribbon)
- java版spring cloud+spring boot 社交
- 今日教学:RestTemplate 结合 Ribbon 使用
- spring cloud ribbon学习一:RestTempl
细力度的给某个微服务配置负载均衡
a:编写java代码的方式
1.alibaba discovery 组件,已经添加了ribbon组件依赖,所以项目无需再次添加
image.png2.自定义一个RibbonConfiguration类
/**
* 细力度的给某个微服务配置负载均衡策略
*/
@RibbonClient(name="xxx-wechat-web",configuration = RibbonConfiguration.class)
@Configuration
public class WechatWebRibbonConfiguration {
}
3.指定ribbon负载均衡的规则
@Configuration
public class RibbonConfiguration {
@Bean
public IRule ribbonRule(){
return new RandomRule();
}
}
需要注意的是,在指定ribbon负载均衡规则的时候,该类的包结构一定不要与spring boot 的扫描包的路径一致,因为这样的话会引起,父子上下文的重复扫描,从而将给该规则成为了全局的规则,而不是访问某个微服务特定的负载均衡规则,这个说明在spring cloud的官方文档上有说明。
image.png
重复扫描是因为,@SpringBootApplication 注解继承@SpringBootConfiguration,@SpringBootConfiguration注解用又继承Configuration,所以会重复扫描。
就类似,之前通过xml的方式配置ssh框架一样,spring mvc的xml配置中只指定,扫描controller包结构的bean,而spring的xml配置文件中配置扫描service以及dao等结构的包,如果两个都扫描全部包之后,会导致事务无法回滚等乱七八糟的现象。
b:通过配置的方式实现细力度的负载均衡
neofaith-wechat-web: 具体负载的微服务的名称
com.netflix.loadbalancer.RandomRule:ribbon中实现规则的全类名
neofaith-wechat-web.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
配置全局的负载均衡规则、策略
只需要将上面java代码中WechatWebRibbonConfiguration类的注解变成下面所写即可
@Configuration
@RibbonClients(defaultConfiguration = RibbonConfiguration.class)
public class WechatWebRibbonConfiguration {
}
网友评论