- ZooKeeper默认监听2181端口。2020年11月5日
《dubbo理解与实战中的zk》
ZooKeeper 原理概述
- ZooKeeper是树形结构的注册中心,每个节点的类型分为持久节点、持久顺序节点、临时
节点和临时顺序节点。
• 持久节点:服务注册后保证节点不会丢失,注册中心重启也会存在。
• 持久顺序节点:在持久节点特性的基础上增加了节点先后顺序的能力。
• 临时节点:服务注册后连接丢失或session超时,注册的节点会自动被移除。
• 临时顺序节点:在临时节点特性的基础上增加了节点先后顺序的能力。
- Dubbo使用ZooKeeper作为注册中心时,只会创建持久节点和临时节点两种,对创建的顺
序并没有要求。
- /dubbo/com.foo.BarService/providers是服务提供者在ZooKeeper注册中心的路径示例,
是一种树形结构,该结构分为四层:root (根节点,对应示例中的dubbo)> service (接口名称,对应示例中的com.foo.BarService)>四种服务目录(对应示例中的providers,其他目录还有consumers、routers、configurators)。在服务分类节点下是具体的Dubbo服务URL
- 在Dubbo框架启动时,会根据用户配置的服务,在注册中心中创建4个目录,在providers和consumers目录中分别存储服务提供方、消费方元数据信息,主要包括IP、端口、权重和应用名等数据。在Dubbo框架进行服务调用时,用户可以通过服务治理平台(dubbo-admin)下发路由配置。如果要在运行时改变服务参数,则用户可以通过服务治理平台(dubbo-admin)下发动态配置。服务器端会通过订阅机制收到属性变更,并重新更新已经暴露的服务。
- 服务提供者的注册是为了让消费者感知服务的存在,从而发起远程调用;也让服务治理中心感知有新的服务提供者上线。消费者的发布是为了让服务治理中心可以发现自己。ZooKeeper发布代码非常简单,只是调用了
ZooKeeper的客户端库在注册中心上创建一个目录。
- 什么操作会被认为是事务操作?
- 客户端任何新增、删除、修改、会话创建和失效操作,都会被认为是事物操作,会由ZooKeeper
集群中的leader执行。即使客户端连接的是非leader节点,请求也会被转发给leader执行,以
此来保证所有事物操作的全局时序性。由于每个节点都有一个版本号,因此可以通过CAS操作
比较版本号来保证该节点数据操作的原子性。