节点:(zookeeper 的节点是树形结构)
Zookeeper 作为 Dubbo 的注册中心时:服务提供者在初始化启动时,会在 Zookeeper 下的 Dubbo 节点下的服务节点下的 providers 节点下的节点创建一个子节点并写入 URL,(路径类似为 /dubbo/servicename/providers/ ),路径下的所有子节点均为服务提供者。此时这些子节点都为临时节点,因为临时节点的生命周期与客户端会话相关,所以一旦提供者所在的机器出现故障导致提供者无法提供服务,该临时节点就会自动从 Zookeeper 删除。服务消费者的节点创建过程和提供者是一样的,而且也是临时结点。
长连接、监控 Watcher:(连通性、健壮性)
此时因为服务者,注册中心,消费者之间是长连接,注册中心能感知服务者宕机,会告知消费者。而监控中心是 Dubbo 服务治理体系中重要的一部分,它需要知道所有的服务提供者和消费者的变化情况 。所以它在启动时会在服务节点上注册一个 watcher 来监听子节点变化,(路径为 /dubbo/servicename/ ),所以它也能感知服务提供者的宕机。
还有一个特性就是 Zookeeper 的节点结构设计,它以服务名和类型作为节点路径(也就是 /dubbo/servicename/ 类型),符合 Dubbo 订阅和通知的需求,保证了以服务为粒度的变更通知,通知范围易于控制。所以即使服务提供者和消费者频繁变更,对 Zookeeper 的性能也不会造成多大影响。
然后 zookeeper 的话,一方面管理多个机器之间的健康情况,另一方面处理负载均衡消息的情况。Zookeeper 作为 Dubbo 的注册中心,正常情况有 Dubbo 的地方就有 zookeeper,虽然说注册中心可以用别的框架,但 Dubbo 和 zookeeper 经常匹配在一起,他们两个像难兄难弟一样。