“简单”的Dubbo与Zookeeper (2)- zk原理

前言

上一篇介绍了用Dubbo + zookeeper实现RPC调用,你就没有什么问题吗?markdown

  1. 为何要用zk?
  2. 为何消费者要配置zk地址,有什么做用?
  3. 为何生产者要配置zk地址,有什么做用?

zk在这主要是数据的发布与订阅做用!!!ide

Idea安装zookeeper

  1. Idea plugin搜索zookeeper插件 ,并重启
  2. 重启以后配置地址

3. 在侧边栏查看工具

zk分析

zk 节点

  1. zk的内部都是由节点组成,相似于二叉树的节点概念,每个节点均可以存在子节点当前节点信息

2. 节点包括 持久节点临时节点

持久节点

  1. 持久节点顾名思义,当客户端与服务端断开链接后,持久节点不会消失。Dubbo中的服务名节点就是持久节点。

临时节点

  1. 临时节点,当客户端与服务端断开链接后,因为zk的心跳机制,临时节点会被删除。Dubbo中的URL配置节点就是持久节点。

dubbo注册和监听

生产者往zk发布信息

  1. 生产者在配置文件中配置zk地址,在启动项目时,Dubbo会往zk中写入节点信息,即将数据推送到zk中。
  2. 节点的目录为:dubbo - 服务名 - providers - URL等地址信息
    另外第四个节点是临时节点,包含IP地址,服务名称,服务的各类方法,dubbo版本号,时间戳等等

3. zk会经过心跳检测链接,若是链接断了,会将第四个节点给删除。

消费者订阅zk节点

  1. 因为消费者有@Refrence注解,dubbo会在zk中监听这个服务的子节点,获取信息。
  2. 当生产者挂掉时,因为心跳机制,zk会将临时节点删除,当消费者监听到节点的信息变化时,消费者会拉取监听节点的信息。

消费者调用生产者服务

  1. 消费者获取信息后经过Dubbo的各类协议进行远程调用。
  2. 当生产者的某个服务断开链接后,zk会向监听者(消费者)主动发送变化的信息,便于消费者的调用。
  3. 固然若是provider所有断开后,也能够经过直连的方式调用。

问题

  1. 因为消费者是监听生产者的节点,那么dubbo在zk中建立的消费者节点是什么用途
    猜想:用于给dubbo-admin等提供消费者信息等。

结尾

因为车辙还未看过Dubbo注册订阅的源码,所以上述不保证百分百正确~~~工具

相关文章
相关标签/搜索