Zookeeper系列六:服务器角色、序列化与通信协议、数据存储、zookeeper总结
一、服务器角色
1. Leader
1)事务请求的唯一调度者和处理者。保证事务处理的顺序性
事务请求:导致数据一致性的请求(数据发生改变)。如删除一个节点、创建一个节点、设置节点数据,设置节点权限就是一个事物请求,全局的事物id(zxid)只能由leader来分配
2)集群内部个服务器之间的调度者
2. Follower
1)处理客户端的非事务请求。事务请求必须转发给Leader服务器。
非事物请求:读取数据
2)参与事务请求Proposal(议案)的投票
3)参与Leader选举
3. Observer
在实际运行中,它只是负责读,Leader不会将事务的投票发送给Observer。
在zk的配置server.1=master:2888:3888后面加:observer以后就是一个Observer
server.1=master:2888:3888:observer

二、序列化与通信协议
1. zookeeper序列化
常见序列化协议:
ProtoBuf
Thrift
Hessian
Kryo
Avro
JDK Serializable
Jsoniter/Jackson
Jute是zookeeper序列化、反序列化协议。
2. zookeeper通信协议
基于TCP/IP协议,所以是一个长连接。zookeeper在这个基础上完成客户端和服务器,服务器和服务器之间的通信。
zookeeper请求包:请求头+请求体
|
0-3 |
4-11 |
12-n |
|||
|
len |
4-7 |
8-11 |
12-15 |
16-(n-1) |
n |
|
xid |
type |
len |
path |
watch |
|
zookeeper响应包:响应头+响应体
|
0-3 |
4-19 |
20 - n |
|||||
|
len |
4-7 |
8-15 |
16-19 |
20-23 |
len位 |
48位 |
8位 |
|
xid |
zxid |
err |
len |
data |
...... |
pzxid |
|
0-3位:version+dbid+magic(魔数)
三、数据存储
1. 内存数据
Zk有个内存数据库:ZkDataBase、DataTree、DataNode
2. 日志数据FileTxnLog
运行时,不停地有数据写入。
当日志的剩余空间不足4K(4096),日志就做扩充,扩充64M,后面以“0”填充。
log都是使用zxid作为文件名的后缀。
查看日志方式:
cd /software/zookeeper-3.4.6
java -cp ./zookeeper-3.4.6.jar::./lib/log4j-1.2.16.jar:./lib/slf4j-api-1.6.1.jar:./lib/slf4j-log4j12-1.6.1.jar org.apache.zookeeper.server.LogFormatter /zookeeper/zk1/version-2/log.100000001

说明:
1)必须在zookeeper的安装目录下执行
2)/zookeeper/zk1/是zookeeper配置文件里面配置的数据目录(dataDir)
3. 快照数据
快照数据:在某一时刻内存所有全量数据的一个磁盘文件。举例:快照阈值100000,触发快照数据。
快照数据都是使用Zxid作为文件名的后缀。这样的话,获取快照数据的时候就不用遍历了,直接根据Zxid去获取就行了
查看快照命令:
cd /software/zookeeper-3.4.6
java -cp ./zookeeper-3.4.6.jar::./lib/log4j-1.2.16.jar:./lib/slf4j-api-1.6.1.jar:./lib/slf4j-log4j12-1.6.1.jar org.apache.zookeeper.server.SnapshotFormatter /zookeeper/zk1/version-2/snapshot.100000050

说明:
1)必须在zookeeper的安装目录下执行
2)/zookeeper/zk1/是zookeeper配置文件里面配置的数据目录(dataDir)
快照触发机制,非“半数机制”,过半随机策略。
logcount > (snapcount/2 + randroll)
logcount: 代表当前记录日志数量
snapcount: 多少次事务日志记录后触发一次数据快照
randroll: 1~snapcount/2 之间的一个随机数
四、zookeeper总结
ZK在分布式系统中的各种应用,本质其实就是对节点的创建,删除,数据更新等事件做监听,监听到以后做对应的操作
ZK是观察者设计模式
都是为了解决高可用,解决单点故障问题,数据可靠性
Zookeeper系列六:服务器角色、序列化与通信协议、数据存储、zookeeper总结的更多相关文章
- ios 沙盒 NSCoding(相当于JAVA对象序列化) 归档 数据存储
通过NSCoding能实现像JAVA一样能够实现对象的序列化,可以保存对象到文件里. NSCoding 跟其他存储方式略有不同,他可以存储对象 对象存储的条件是: 对象需要遵守 NSCoding 协议 ...
- 大数据之 ZooKeeper原理及其在Hadoop和HBase中的应用
ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现.分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知. ...
- 【分布式】Zookeeper序列化及通信协议
一.前言 前面介绍了Zookeeper的系统模型,下面进一步学习Zookeeper的底层序列化机制,Zookeeper的客户端与服务端之间会进行一系列的网络通信来实现数据传输,Zookeeper使用J ...
- ZooKeeper系列(6):ZooKeeper的伸缩性和Observer角色
ZooKeeper系列文章:https://www.cnblogs.com/f-ck-need-u/p/7576137.html#zk 1.ZooKeeper中的角色 在比较老的ZooKeeper版本 ...
- zookeeper系列(七)zookeeper的序列化及通讯协议
作者:leesf 掌控之中,才会成功:掌控之外,注定失败.原创地址http://www.cnblogs.com/leesf456/p/6091208.html尊重作者原创,奇文共欣赏,大家共同学 ...
- 【分布式】Zookeeper的服务器角色
一.前言 前一篇已经详细的讲解了Zookeeper的Leader选举过程,下面接着学习Zookeeper中服务器的各个角色及其细节. 二.服务器角色 2.1 Leader Leader服务器是Zook ...
- Zookeeper(六)服务器
Zookeeper(六)服务器 zkServer.cmd中声明 首先启动QuorumPeerMain set ZOOMAIN=org.apache.zookeeper.server.quorum.Qu ...
- zookeeper系列(六)zookeeper的系统模型(数据树)
作者:leesf 掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6072597.html尊重作者原创,奇文共欣赏,大家共同学 ...
- zookeeper系列(八)zookeeper客户端的底层详解
作者:leesf 掌控之中,才会成功:掌控之外,注定失败.出处:http://www.cnblogs.com/leesf456/p/6098255.html 尊重原创,共同学习进步: 一.前言 ...
随机推荐
- ReactNative bug:Application XXX has not bean registered.
故障现象 当react-native init新项目之后运行react-native run -android/ios时手机报错 Application XXX has not bean regist ...
- Linq.js表达式常见写法
1.回调函数法 2.lambda表达式字符串 3.$符号的表达式
- 最短路:spfa算法
板子补完计划绝赞继续中( 这篇博客就来写一写spfa(这我居然板子都打错了一次,我太弱啦!) 先来看一下定义:(引自http://blog.csdn.net/juststeps/article/det ...
- Alpha冲刺(1/10)——2019.4.24
所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(1/10)--2019.4.24 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...
- 【织梦dedecms安全设置】dedecms如何防止被黑?dedecms被黑了怎么办?
[织梦dedecms安全设置]dedecms如何防止被黑?dedecms被黑了怎么办?010-63495805很多所谓的“黑客”都是用工具来扫描入侵,厉害点的人是不屑来黑我们的小网站的,所以我们一般做 ...
- iOS开发中的富文本
1. 改变指定字符的颜色 NSString * text = [NSString stringWithFormat:@"%@米",distance]; NSMutableAttri ...
- 倾斜摄影数据OSGB进入到ArcGIS平台相关问题小结
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zglybl/article/details/75252288 随着倾斜摄影技术的发展,大家 ...
- 3D引擎为什么使用三角形绘制曲面
这个问题是我第一次接触3D开发就有的疑问,最近在看<游戏引擎架构>(Game Engine Architecture),在书中找到了答案. 三角网格(Triangle Mesh),游戏开发 ...
- windows环境下面批量修改文件夹名称
ren 1 A ren 2 B ren 3 C ren 4 D 电脑桌面新建文档 ---> 批量修改文件夹名称.txt 修改文件名称为:--->批量修改文件夹名称.bat 内容如上: 双击 ...
- WPF模拟键盘输入和删除
private void ButtonNumber_Click(object sender, RoutedEventArgs e) { Button btn = (Button)sender; str ...