同步操作将从 Java精选/Ebooks 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
1)PERSISTENT-持久节点
除非手动删除,否则节点一直存在于Zookeeper上。
2)EPHEMERAL-临时节点
临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。
3)PERSISTENT_SEQUENTIAL-持久顺序节点
基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
4)EPHEMERAL_SEQUENTIAL-临时顺序节点
基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
Zookeeper的默认端口有3个,如下:
2181:对Client端提供服务的端口。
3888:选举Leader。
2888:集群内的机器通讯使用。(Leader使用此端口)
1、文件系统
2、通知机制
Zookeeper采用了全局递增的事务Id来标识,所有的proposal(提议)都在被提出的时候加上了zxid。
zxid实际上是一个64位的数字,高32位是epoch用来标识leader的周期。
如果有新的leader产生出来,epoch会自增,低32位用来递增计数。
当新产生proposal的时候,会依据数据库的两阶段过程,首先会向其他的server发出事务执行请求,如果超过半数的机器都能执行并且能够成功,那么就会开始执行。
Zookeeper不支持自动清理日志,需要运维人员手动或编写shell脚本清理日志。
服务端接收Watcher并存储
接收到客户端的请求,判断是否注册Watcher,如果需要注册Watcher就将数据节点路径和ServerCnxn存储到WatcherManager中的WatchTable和watch2Paths。
其中ServerCnxn表示一个客户端和服务端的连接,实现了Watcher的process接口,此时可以看成一个Watcher对象。
Watcher触发
假设服务端接收到setData()方法事务请求时触发NodeDataChanged事件。
封装WatchedEvent
将通知状态(SyncConnected)、事件类型(NodeDataChanged)以及节点路径封装成一个WatchedEvent对象。
查询Watcher
从WatchTable中根据节点路径查找Watcher对象,若果没找到说明没有客户端在该数据节点上注册过Watcher对象,反之找到的话就提取并从WatchTable和Watch2Paths中删除对应Watcher。从这里可以看出Watcher在服务端是触发一次就失效。然后调用process()方法来触发Watcher,process()方法主要通过ServerCnxn对应的TCP连接发送Watcher事件通知。
ZooKeeper不支持临时节点创建子节点。
ZooKeeper会给每个更新请求,分配一个全局唯一的递增编号(zxid),编号的大小体现事务操作的先后顺序。
zookeeper中对znode节点的操作权限主要有以下五种,我们可以通过其简写的任意组合来实现对znode节点的不同权限控制。
名称 | 简写 | 权限说明 |
---|---|---|
CREATE | c | 允许创建当前节点下的字节点 |
DELETE | d | 允许删除当前节点下的子节点,仅限下一级 |
READ | r | 允许读取节点数据以及显示子节点的列表 |
WRITE | w | 允许设置当前节点的数据 |
ADMIN | a | 管理员权限,允许设置或读取当前节点的权限列表 |
命名服务是指通过指定的名字来获取资源或者服务的地址。
Zookeeper会在自己的文件系统上(树结构的文件系统)创建一个以路径为名称的节点,它可以指向提供的服务的地址、远程对象等。
简单来说使用Zookeeper做命名服务就是用路径作为名字,路径上的数据就是其名字指向的实体。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。