1. 事务请求转发-事务必须由Leader处理

	所有非Leader的服务器收到来自客户端的事务请求,都会将客户端请求已REQUEST形式转发给Leader服务器进行处理

2. 事务处理 Proposal, sync, Commit三个子流程

2.1. Proposal流程 leader发起投票统计

	a). 生成Proposal	zK将请求头、事务体、ZXID、请求本身序列化到Proposal对象(即一个提议)。
b). 广播提议
c). 广播接收端通过sync流程记录事务日志并返回ACK
如果半数获得通过,则进入commit环节
d). 向Flowwer、Observer广播COMMIT消息

2.2 Sync-各节点记录事务日志

	针对每个时请求,都会通过事务日志的方式将其记录下来,记录完成后,向服务器发送ACK消息表明记录完成。

2.2 Commit流程

	将事务从事务日志应用到内存数据库。

数据和存储


ZK请求处理的更多相关文章

  1. zk使用原理

    ZooKeeper的基本原理 ZNode的基本概念 ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode.每个ZNode都可以通过其路径唯一标识 ...

  2. Zookeeper 源码(七)请求处理

    Zookeeper 源码(七)请求处理 以单机启动为例讲解 Zookeeper 是如何处理请求的.先回顾一下单机时的请求处理链. // 单机包含 3 个请求链:PrepRequestProcessor ...

  3. ZK框架笔记4、通用组件、页面、桌面

    组件(component)是一种用户接口(UI)对象,如一个标签.按钮.树.         页面(page)是一个组件的集合.         桌面(desktop)是一个包含相同URL请求的页面. ...

  4. ZooKeeper(四):从TCP数据流到zk内部处理包的转换

    通过前面几篇文章,我们可以从整体上看到zk是如何处理网络数据的宏观架构. 本文我们从细节着手,看一下一个tcp的包是如何转换到内部的数据流处理的. 一.监听用户请求socket 基于NIO的端口监听, ...

  5. ZooKeeper(三):请求处理链路的创建过程解析

    我们知道,zk就是一个个处理链组成的. 但是,这些处理链是在什么创建的呢? ZooKeeper 中有三种角色的服务节点存在: Leader, Follower, Observer . 而每个服务节点的 ...

  6. zk 两阶段提交(待完善)

    zk 节点是一个 QuorumPeer,选举结束后,leader 和 follower 各自执行自己的逻辑: org.apache.zookeeper.server.quorum.QuorumPeer ...

  7. zookeeper源码分析:选举流程和请求处理

    集群启动: QuorumPeerMain. runFromConfig() quorumPeer.start(); loadDataBase(); cnxnFactory.start();       ...

  8. 学习ASP.NET Core, 怎能不了解请求处理管道[6]: 管道是如何随着WebHost的开启被构建出来的?

    注册的服务器和中间件共同构成了ASP.NET Core用于处理请求的管道, 这样一个管道是在我们启动作为应用宿主的WebHost时构建出来的.要深刻了解这个管道是如何被构建出来的,我们就必须对WebH ...

  9. 学习ASP.NET Core, 怎能不了解请求处理管道[5]: 中间件注册可以除了可以使用Startup之外,还可以选择StartupFilter

    中间件的注册除了可以借助Startup对象(DelegateStartup或者ConventionBasedStartup)来完成之外,也可以利用另一个叫做StartupFilter的对象来实现.所谓 ...

随机推荐

  1. 多puppetmaster,多ca,keepalived+haproxy(nginx)puppet集群搭建

    多puppetmaster,多ca,keepalived+haproxy(nginx)puppet集群搭建 一.服务器详情 192.168.122.111 pm01.jq.com pm01 #(pup ...

  2. JAVAWeb SSH框架 上传文件,如2007的EXCEL

    下面的代码是上传EXCEL的代码,其实,就是在上传文件到服务器,代码都差不多,只是接收的文件的类型改一下即可. 1.jsp 用的是struts2 标签 代码: <s:file name=&quo ...

  3. BeanFactory和ApplicationContext的介绍

    ------------------siwuxie095                             Spring 通过一个配置文件描述 Bean 和 Bean 之间的依赖关系, 利用 J ...

  4. 《鸟哥的Linux私房菜》读书笔记3

    1. bash shell变量设定: name=myname,(不加空格) echo $name 注意: 若myname中有空格,则用单引号或者双引号("内特殊字符保留变量特性,'内特殊字符 ...

  5. 新编html网页设计从入门到精通 (龙马工作室) pdf扫描版

    新编html网页设计从入门到精通共分为21章,全面系统地讲解了html的发展历史及4.0版的新特性.基本概念.设计原则.文件结构.文件属性标记.用格式标记进行页面排版.使用图像装饰页面.超链接的使用. ...

  6. STL特性总述——写在前面

    所谓的容器,见名知意,容纳其他数据的"器具": 特点 1)支持泛型: 2)保存副本:本质上传入对象的拷贝. 3)内存托管 :构建对象于堆,无需人工干预,自动管理内存的生存周期. S ...

  7. Flask从入门到做出一个博客的大型教程(一)

    本项目全部在虚拟环境中运行,因此请参照前面的文章,链接为https://blog.csdn.net/u014793102/article/details/80302975 建立虚拟环境后,再接着完成本 ...

  8. vue render & JSX

    vue在绝大多数使用template是没问题的,但在某些场合下,使用render更适合. 一.render函数 1.createElement 参数 createElement 可接受三个参数 1){ ...

  9. c++第五次实验

    part 1 两个问题: 1.派生类中出现与基类同名成员,通过对象名.成员名的方式,即代码中base2.display(),访问的成员是派生类中的成员 2.通过基类指针访问派生类对象时,在ex1_1. ...

  10. [CodeChef] The Street

    给定两个长度为n的数列A和B,开始数组A中每一项值为0,数组B中每一项值为负无穷大.接下来有m次操作:1.数组A区间加一个等差数列:2.数组B区间对一个等差数列取max:3.询问ai+bi的值.n&l ...