`

zookeeper 数据存储 和 写入

 
阅读更多

参照 https://www.cnblogs.com/leesf456/p/6179118.html

 

可以简单概括为以下

1. 使用内存数据库,定期全量dump快照数据到硬盘

2. 针对所有的更新操作,在返回客户端“更新成功”的响应前,zookeeper会保证已经将本次更新操作的事务日志已经写到磁盘上,只有这样,整个更新操作才会生效。

3. 服务启动时

     1)会使用最新的快照数据加载到内存(当然会有一些逻辑判断和保护)

     2)会根据本机的zxid等信息,和 Leader的zxid对比,并且会有全量和增量等各种同步方式

 

以上可以保证大部分数据在硬盘,宕机恢复,还会有跟Leader的同步数据机制

 

https://www.cnblogs.com/wade-luffy/p/8689524.html#_label1_2

类似于两阶段提交的方案进行写操作

1. leader 生成zxid,提出proposal

2. proposal发送给follower

3. 如果超过半数的follower回复 ack,leader commit,并异步通知 follower commit

 

若第3步时 leader挂掉 《 https://developer.aliyun.com/article/136062》

1)leader 未提交成功(P1)而崩溃,follower(P1)未提交,当选为leader后,丢弃P1

2)leader已经提交成功(P1 C1)后崩溃,follower (P1 C1)已经提交,当选leader后,广播C1

3)  leader已经提交成功(P1 C1)后崩溃,follower (P1)未提交,当选leader后,当 旧leader重新加入成为follower时,会跟新leader先同步,新leader为了保证一致性(client端之前已经知道c1提交了),会提交C1 并广播给所有follower提交C1

分享到:
评论

相关推荐

    zookeeper数据迁移从单例到集群linux命令过程

    2. **创建数据存储目录**: ```bash mkdir data mkdir dataLog ``` 创建 `data` 和 `dataLog` 文件夹用于存储数据。 3. **配置 zoo.cfg 文件**: - 将 `zoo_sample.cfg` 复制并重命名为 `zoo.cfg`。 - 编辑 ...

    zookeeper节点数据的监听与读写操作

    Znode是Zookeeper中的数据存储单元,类似于文件系统中的文件或目录。每个Znode都有一个唯一的路径标识,并且可以包含数据和子节点。Znode分为临时节点和持久节点,临时节点在创建它的客户端断开连接后会自动删除,而...

    Zookeeper_安装和配置

    - `dataDir`:Zookeeper 保存数据的目录,用于存储服务器状态信息。 - `dataLogDir`(可选):日志目录,如果不设置则默认和 `dataDir` 相同。 - `clientPort`:客户端连接 Zookeeper 服务器的端口号。 4. **启动...

    Zookeeper-3.4.10和Zookeeper-3.5.7.zip

    2. **服务器(Server)**:参与Zookeeper集群的节点,负责数据存储和服务响应。 3. **会话(Session)**:客户端与服务器之间的连接,会话期间,客户端可以通过心跳保持连接状态。 4. **ZNode**:Zookeeper中的数据...

    zookeeper 服务监控和管理

    1.1 ZooKeeper数据模型:Zookeeper的数据模型是一种树形结构,类似于文件系统,由节点(ZNode)组成。每个ZNode都有一个唯一的路径标识,并可以存储数据。 1.2 角色与组件: - Leader:负责处理所有的写请求,以及...

    zookeeperMaster选举以及数据同步代码

    Zookeeper的数据模型是层次化的命名空间,类似于文件系统,每个节点(称为Znode)都可以存储数据。当一个Znode的数据发生变化时,Zookeeper会通过Watch机制通知已订阅该节点的客户端,实现了数据的实时同步。在这个...

    zookeeper 系列整理总结

    ZooKeeper的配置部分(系列之四)通常涉及设置服务器角色、指定数据存储位置、设置客户端连接参数等。这些配置有助于调整ZooKeeper的行为以适应不同的应用场景。 系列之五和六可能涉及ZooKeeper的运行机制和四字...

    zookeeper-3.4.6.zip

    ZooKeeper 采用主从复制的架构,集群中的每个服务器都保存整个数据集的副本。当客户端发起写操作时,主服务器(Leader)负责处理并同步到其他服务器(Followers),确保数据的一致性。读操作可以从任意存活的服务器...

    linux下的zookeeper压缩包和Windows下的zookeeper查看工具

    在这个文件中,你需要设置`dataDir`,它指定了Zookeeper保存数据的目录,通常用来存储节点状态和选举信息。此外,还可以配置`clientPort`,这是Zookeeper服务器监听客户端连接的端口,默认为2181。 启动Zookeeper...

    zookeeper版本为zookeeper-3.4.10.tar.gz

    1. **节点(ZNode)**:Zookeeper的数据存储结构类似文件系统,由一系列的节点构成,每个节点称为ZNode,可以存储数据,同时具有唯一的路径标识。 2. **会话(Session)**:客户端与Zookeeper服务器建立的连接称为...

    zookeeper3.6.0-linux版本

    1. ZooKeeper节点:每个存储的数据单元被称为ZNode,类似于文件系统中的文件或目录,有自己的路径和数据。 2. 原子操作:所有对ZNode的操作都是原子的,即一次操作要么全部完成,要么完全不执行。 3. 观察者模式:...

    zookeeper linux版本

    配置文件中包括了ZooKeeper的数据存储路径(dataDir)、客户端连接端口(clientPort)等关键设置。 3. **创建数据目录**:根据`dataDir`配置的路径,确保该目录存在并可写入,例如`mkdir -p /var/lib/zookeeper`。 4...

    zookeeper-3.4.12官方包

    `dataDir`用于存储Zookeeper服务器的数据,包括每个节点的状态信息以及事务日志;而`dataLogDir`则是用来存放Zookeeper的交易日志,这些日志记录了所有对Zookeeper状态的修改操作,对于故障恢复和数据一致性至关重要...

    ZooKeeper笔记.pdf

    - **ZNode**:Zookeeper的数据存储结构类似文件系统,由一系列节点(ZNode)组成。每个ZNode都可以存储数据,并拥有唯一的路径标识,可以创建、删除、更新和读取ZNode。 - **API**:Zookeeper提供了丰富的Java和...

    zookeeper客户端

    这些节点存储的数据可以是配置信息、命名服务、分布式同步和组服务等。客户端提供了丰富的API,支持Java、C、Python等多种语言,使得跨平台集成变得简单。 在Zookeeper中,客户端连接到一个或多个服务器节点,形成...

    zookeeper安装及开发笔记

    其中,dataDir指定ZooKeeper数据存储的位置,而server.x配置项定义了集群中的各个节点,x对应于服务器编号,每个服务器的myid文件中应写入对应的编号。 在所有服务器上创建dataDir目录,即/var/lib/zookeeper,并在...

    zookeeper-3.4.12 linux

    3. 配置:进入解压后的目录,编辑`conf/zoo.cfg`配置文件,设置数据存储路径、服务器角色等参数。 4. 初始化:创建数据目录,如`mkdir /var/zookeeper/data`,并在其中创建`myid`文件,写入服务器ID。 5. 启动:执行...

    ZooKeeper典型使用场景

    - **索引信息和集群状态**:将索引信息或集群中各机器节点的状态保存在特定的ZooKeeper节点上,便于客户端订阅和使用。 - **系统日志管理**:处理后的系统日志可以存储在ZooKeeper中,这些日志通常会在几天后被自动...

    Zookeeper概述

    - **数据存储**:每个服务器节点在其内存中都存储了一份数据副本。 - **Leader选举**:Zookeeper启动时,采用Paxos协议来选出一个领导者(Leader)。Leader负责处理数据更新等关键操作。 - **数据一致性**:更新操作...

Global site tag (gtag.js) - Google Analytics