我看到dubbo把zookeeper当作注册中心,只是在/dubbo结构下,把所有的bean的提供方和消费者的信息都存在里面而已,分布式的实现原理我理解了。但是负载均衡他到底是怎么实现的,还有就是负载均衡权重怎么配置。
dubbo://192.168.56.1:9091/com.service.IUserService?anyhost=true&application=server-1&dubbo=2.6.1&generic=false&interface=com.service.IUserService&methods=echo&pid=5596&side=provider×tamp=1536823742776
dubbo://192.168.56.1:9092/com.service.IUserService?anyhost=true&application=server-2&dubbo=2.6.1&generic=false&interface=com.service.IUserService&methods=echo&pid=11792&side=provider×tamp=1536823783458
这个我不太理解,zookeeper只是存了这两个提供方的dubbo信息,总感觉负载均衡不属于zookeeper的范畴。负载均衡到底是zookeeper实现的,还是dubbo实现的
zookeeper自己本身没有负载均衡功能,但是他的特性可以借助其他方法实现类似负载均衡的能力。比如dubbo消费者取得了服务器列表之后,会随机调用其中的一个。就实现了类似负载均衡。
ZooKeeper会维护一个树形的数据结构,类似于Windows资源管理器目录,其中EPHEMERAL类型的节点会随着创建它的客户端断开而被删除,利用这个特性很容易实现软负载均衡。
基本原理是,每个应用的Server启动时创建一个EPHEMERAL节点,应用客户端通过读取节点列表获得可用服务器列表,并订阅节点事件,有Server宕机断开时触发事件,客户端监测到后把该Server从可用列表中删除。