合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
负载均衡器在分布式网络中扮演着非常重要的角色。通过负载均衡,可以实现更好的性能和可靠性,同时提高系统的可扩展性和弹性。目前,SpringCloud体系中,主要使用的有两种:Netflix的Ribbon以及官方推出的LoadBalancer。本文OpenFeign与Ribbon协同工作的核心流程及源码分析。
策略UML图
Ribbon 通过实现IRule接口,内置了多种负载均衡的策略,默认采用的是 RoundRobinRule,即轮询策略。项目中,服务节点的部署可能存在基础配置、网络环境等的差异,抑或是功能上线需要灰度测试,因此,轮询策略往往不能满足实际需求。
ribbon内置策略
通过修改消费者工程的配置文件,或修改消费者的启动类或 JavaConfig 类可以实现更换负载均衡策略的目的。
修改配置文件,在其中添加如下内容,指定要使用的负载均衡策略 <clientName>. <clientConfigNameSpace>.NFLoadBalancerRuleClassName。【注:clientName是指服务提供者的服务名称】
该方式的好处是,可以为不同的微服务指定相应的负载均衡策略。
xxx-service:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
TOP