Dubbo的负载均衡
1.集群,分布式,负载均衡概念
集群:一个内容,部署多次,形成的整体称为集群。集群中每个个体应该部署到不同的服务器上。
伪集群:集群中内容部署到同一台服务器上,通过不同端口区分不同个体。
负载均衡:在集群前提下,当访问整个集群时,集群中每个节点被访问次数或频率的规则。
分布式:一个整体把拆分成不同的独立模块功能分开部署,这些独立模块部署的时候也可以用集群方式部署
2.Dubbo的负载均衡策略
Random:默认策略,随机。随机访问集群中节点。访问概率和权重有关。
RoundRobin:
轮询。访问频率和权重有关。
权重(weight):占有比例。集群中每个项目部署的服务器的性能可能是不同,性能好的服务器权重应该高一些。
LeastActive:活跃数相同的随机,不同的活跃数高的放前面。基本不用
ConsistentHash:一致性Hash。相同参数请求总是发到一个提供者。基本不用
在调用方设置@Reference
@Reference(loadbalance = "roundrobin") private DemoDubboService demoDubboService;
在服务提供方设置@Service
@Service(loadbalance = "random") //@Service(weight = 4) public class DemoDubboServiceImpl implements DemoDubboService {}
配置文件中全局设置所有provider和consumer的负载均衡效果
dubbo: application: name: dubbo-provider registry: address: zookeeper://127.0.0.1:2181 protocol: port: 20884 provider: loadbalance: random consumer: loadbalance: random