博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zk服务器的构成,一个请求是如何处理的
阅读量:6274 次
发布时间:2019-06-22

本文共 1154 字,大约阅读时间需要 3 分钟。

hot3.png

请求处理器是对处理流水线上不同阶段的抽象,

     每一个服务器实现了一个请求处理器的序列,一个请求经过服务器上所有处理器的处理后得到了完全处理

RequestProcessor的接口,这个接口的主要方法是processRequest,接收一个Request请求,对相邻处理器请求通过队列实现解耦合

 

独立服务器

ZooKeeperServer类

PrepRequestProcessor

SyncRequestProcessor

FinalRequestProcessor

 

一个独立服务器的流水线

01c8dc15fa2b64d1837e92c4b30a81a7d79.jpg

 

PrepRequestProcessor接受客户端的请求并执行这个请求,处理结果这生成一个事务,事务是执行一个操作的结果,该操作后反映到zookeeper的数据树上

事务信息将会以头部记录和事务记录的方式添加到Request对象中,只有改变zookeeper状态的操作才会产生事务,读操作并不会产生任何事务,因此,对于读请求的Request对象,事务的成员属性的引用值为null

 

下一个处理器为SyncRequestProcessor,负责将事务持久化到磁盘上,实际上就是将事务数据按顺序追加到事务日志中,并生成快照数据

 

最后一个处理器FinalRequestProcessor,如果Request对象包含事务数据如果request中包含事务数据,则处理器会接收修改zookeeper的修改

负责该处理器会从数据树读取数据并返回

 

群首服务器 LeaderZooKeeper 处理流水线

fc53d2cd70ae225ea37ac03d96fa2deb31e.jpg

第一个仍然是PreRequestProcessor处理器,之后ProposalRequestProcessor,这个处理器会准备一个提议,并将提议发送到跟随者。ProposalRequestProcessor会将所有的提议发送给追随者CommitRequestProcessor,如果是写请求会发送给SyncRequestProcessor处理器

 

SyncRequestProcessor处理器要做的也是将事务持久化到硬盘,持久化之后会触发AckRequestProcessor

处理器,在zk集群模式中,要收到所有跟随者和自己对这个提议的确认,这个AckRequestProcessor处理器就是做确认处理的工作

 

ProposalRequestProcessor之后的处理器为CommitRequestProcessor,它会将收到确认消息的提议进行提交确认消息是由Leader.processAck()方法,这个方法会将提交的请求加入CommitRequestProcesspr类的一个队列中,这个队列会由请求处理器线程进行处理

转载于:https://my.oschina.net/iioschina/blog/3015141

你可能感兴趣的文章
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
网吧维护工具
查看>>
BOOT.INI文件参数
查看>>
vmstat详解
查看>>
新年第一镖
查看>>
unbtu使用笔记
查看>>
OEA 中 WPF 树型表格虚拟化设计方案
查看>>
Android程序开发初级教程(一) 开始 Hello Android
查看>>
使用Gradle打RPM包
查看>>
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>
nginx反向代理
查看>>
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>
android中用ExpandableListView实现三级扩展列表
查看>>