目录
- SpringCloud微服务入门(零),开篇
- SpringCloud微服务入门(一),Eureka注册中心
- SpringCloud微服务入门(二),Eureka Client
- SpringCloud微服务入门(三),Eureka高可用集群
- SpringCloud微服务入门(四),创建服务
- SpringCloud微服务入门(五),Feign实现服务通信
- SpringCloud微服务入门(六),负载均衡Ribbon
- SpringCloud微服务入门(七),服务网关Zuul
- SpringCloud微服务入门(八),服务熔断组件Hystrix
- SpringCloud微服务入门(九),统一配置中心Config
- SpringCloud微服务入门(十),完结篇,是结束也是开始
- 番外篇 - 安装Docker,运行RabbitMQ镜像)
正文
Ribbon是SpringCloud的客户端负载均衡组件。
什么是客户端负载均衡呢?
客户端实际上是指服务调用者。在SpringCloud中调用者本身集成Ribbon,由调用者自己决定来调用哪个节点的服务。这就是客户端负载均衡。我们常用的负载均衡组件Nginx是服务端负载均衡。由服务端(Nginx)来决定调用哪个节点。
Ribbon主要组件由ServerList、IRule、ServerListFilter组成。
ServerList 是服务列表,用于服务发现。客户端集群,那么客户端必然要知道有哪些服务可以用; IRule 是负载均衡规则和选择器,负载均衡规则都实现了此接口; ServerListFile 是服务过滤器。
在SpringCloud中其实不用做任何配置,就已经在无形之中使用了Ribbon了,通过项目依赖可以发现。Ribbon默认采用RoundRobinRule轮询策略。
如果要更换默认策略也是非常简单的,只要修改应用的application.properties文件就可以了。请看以下代码:
PARK.ribbon.NFLoadBalancerRuleClassName:com.netflix.loadbalancer.RandomRule
PARK 是指客户端需要调用的集群服务名;
ribbon.NFLoadBalancerRuleClassName 是约定好的一个写法,照这样写就可以了;
com.netflix.loadbalancer.RandomRule 是Ribbon提供的几种负载均衡策略中的随机策略。
在本节中笔者不会去讲Ribbon的实现原理,也不会去讲源码和更加高级的使用。正常情况下默认状态就已经足够了。不使用,就已经是在用了。读者们心中有数就可以了。
而自定义负载均衡策略可以看Spring官方文档,非常简洁,照做就可以了,就在此不累述了。文档地址:https://cloud.spring.io/spring-cloud-static/spring-cloud.html#spring-cloud-ribbon