ZooKeeper(五)技术内幕-请求处理和数据存储(未完成)

ZooKeeper(五)技术内幕

八. 请求处理

8.1 会话创建请求

ZooKeeper服务器对于会话创建的处理,大体分为6大环节:

  • 请求接收
  • 会话创建
  • 预处理
  • 事务处理
  • 事务应用
  • 会话响应

其中事务处理部分流程:

  • 请求接收:
    1. I/O层接收来自客户端的请求。
    2. 判断是否是客户端会话创建请求。
    3. 反序列化ConnectRequest请求。
    4. 判断是否是ReadOnly客户端。
    5. 检查客户端ZXID。
    6. 协商sessionTimeout。
    7. 判断是否需要重新创建会话。
  • 会话创建:
    1. 为客户端生成sessionID。
    2. 注册会话。
    3. 激活会话。
    4. 生成会话密码。
  • 预处理:
    1. 将请求交给ZK的PrepRequestProcessor处理器进行处理。
    2. 创建请求事务头。
    3. 创建请求事务体。
    4. 注册与激活会话。
  • 事务处理:
    1. 将请求交给ProposalRequestProcessor处理器。

8.2 SetData请求

8.3 事务请求转发

8.4 GetData请求

九. 数据与存储

9.1 内存数据

9.2 事务日志

9.3 snapshot—数据快照

9.4 初始化

9.5 数据同步


参考:

🔗 《从Paxos到Zookeeper-分布式一致性原理与实践》