ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形式使用。每次实施它们都需要做很多工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性。
ZK主要分为三种角色:
ZK特性:
节点存储容量不能超过1M。
ZNode节点类型:
Znode的分为四类:
ZNode节点属性:
[zk: localhost:2181(CONNECTED) 1] get /testNode test
cZxid = 0x2
ctime = Fri Aug 06 22:28:23 CST 2020
mZxid = 0x2
mtime = Fri Aug 06 22:28:23 CST 2020
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
数据存储方式分为三类:
1.内存数据
内存数据结构分为三类:
2. 事务日志
事务日志处理流程:
事务日志文件内容示例:
查看日志命令:
java ‐classpath .:./lib/slf4j‐api‐1.7.25.jar:./zookeeper‐3.4.14.jar org.apache.zookeeper.server.LogFormatter /data/zookeeper/version‐2/log.100000001 > log1.log
产生日志内容:
3/14/22 8:55:19 PM EDT session 0x20003a778cc0012 cxid 0xa9 zxid 0x1000001bc delete '/lock‐ namespace/shared_lock/order/W‐0000000016
3/14/22 8:55:29 PM EDT session 0x20003a778cc0012 cxid 0xb0 zxid 0x1000001bd delete '/lock‐ namespace/shared_lock/order/W‐0000000017
3/14/22 9:46:18 PM EDT session 0x20003a778cc0012 cxid 0xb1 zxid 0x1000001be create '/lock‐ namespace/shared_lock/order/W-0000000018,#3139322e3136382e3132332e313033,v{s{31,s{'world,'anyone}}},T,19
3/14/22 9:46:38 PM EDT session 0x20003a778cc0012 cxid 0xb4 zxid 0x1000001bf delete '/lock‐ namespace/shared_lock/order/W‐0000000018
3. 数据快照(snapshot)
数据快照用来记录Zookeeper服务器上某一时刻的全量内存数据内容,并将其写入指定的磁盘文件中。 Zookeeper在进行若干次事务日志记录后,将内存数据库的全量数据Dump到本地文件中,这个就是数据快照
快照查看命令:
java ‐classpath .:./lib/slf4j‐api‐1.7.25.jar:./zookeeper‐3.4.14.jar org.apache.zookeeper.server.SnapshotFormatter /data/zookeeper/version‐2/snapshot.100000000 > snap1.log
其处理步骤如下:
阅读量:2041
点赞量:0
收藏量:0