zookeeper leader崩溃恢复后,事务同步问题

假如A B C三个节点zookeeper,A节点是leader,某一时刻A节点提出一个提议P1,然后收到ACK以后,就在发出commit之前(A已经提交了P2)A崩溃了,这样B和C就会重新选主,想问一下当A恢复后,leader怎样处理P1

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Zookeeper的崩溃恢复问题
背景 UDDB(UCloud分布式数据库)产品的测试环境中有一个zk集群, 三节点。 某一天其中一个zk节点所在云主机崩溃了,无法启动。只好重装系统盘。  zk的执行码在系统盘上。为此重新安装了zk软件。 apt-get install zookeeper 即可。 zk的配置文件(zoo.cfg),三节点都是一样的, 从其他zk节点拷贝一份过来即可。 zk存储的数据在数据盘上。根据zk的崩...
zookeeper崩溃后修复
参考: http://www.myexception.cn/database/1973833.html 可能出现该问题的情况:强制关机,数据量过大,集群意外关闭。 使用cloudera搭建hadoop集群,由于使用ubuntu系统,根目录空间分配不足,导致数据录入一部分,集群崩溃,后来对ubuntu系统的根目录进行设置,扩大了根目录的空间,但是zookeeper中一台机器的节点一
ZooKeeper leader选举 源码分析
Leader选举算法 在ZooKeeper中,提供了3种Leader的选举算法,分别是LeaderElection、 UDP版本的FastLeaderElection、TCP版本的FastLeaderElection,可以通过再配置文件zoo.cfg中使用electionAlg属性来指定。从3.4.0版本开始,ZooKeeper废弃了前2种算法,只保留了TCP版本的FastLeaderElecti...
Zookeeper的leader选举
假设有5台服务器,本来5号是leader,5号宕机后,剩下的转为looking状态参加选举。第一轮1,2,3,4,号的投票状态分别是rn(1,15),(2,18)(3,19)(4,14),那么在收到其他服务器的投票状态后,再次提交自己的投票状态前,和自己的投票转台进行比较是怎么比较的?是和所有的其他服务器的投票状态都比较,然后选出zxid最大的(zxid相同时,选sid大的),还是只和其中一个服务器进行比较,然后直接提交自己的新的投票状态呢?rn就是说1号服务器在第一轮投票状态肯定是它自己(1,15),那么第二轮是(3,19),还是(2,18)呢?
【Zookeeper】——Leader选举
一、选举步骤 1、初始化Leader选举 a、根据自身的SID(服务器ID)、最新的ZXID和当前的服务器epoch来生成一个初始化投票 b、根据zoo.cfg中的配置,创建Leader选举算法 c、启动Leader选举端口的监听,等待集群中其他服务创建连接 2、注册JMX服务 3、检测当前服务器状态 4、Leader选举 选举过程:集中所有机器,互相之间相互投票,
zookeeper leader选举 源码分析
QuorumCnxManager:网络IO每台服务器启动的时候,都会启动一个QuorumCnxManager,负责各台服务器之间的leader选举过程中的网络通信。消息队列QuorumCnxManager这个类内部维护一系列的队列,用于保存接收到的,待发送的消息,以及消息的发送器。除了接收队列外,这里提到的所有队列都按SID分组形成队列集合。/*消息接收队列只有一个*/ public final A
zookeeper集群leader
请问,怎么才能用java获取到zookeeper集群里leader的IP??
zookeeper leader选举源码实现
1.如果要查看zookeeper源码,可以以以下的方式启动 配置启动类:org.apache.zookeeper.server.quorum.QuorumPeerMain 配置一个启动参数:配置文件的地址 注意配置文件需要写清楚集群 # The number of milliseconds of each tick tickTime=2000 # The number of ticks t
zookeeper源码分析--Leader选举
一、概述 zookeeper集群中,每个zookeeper节点通过投票的方式,选举出1个Leader,确定Leader后,其余参与选举的zk节点则为Follower。 二、选举过程分析 最开始,当前zk节点会投票给自己,并决定选举用的算法。 QuorumPeer.startLeaderElection: synchronized public void startLeaderElection()...
Zookeeper 源码分析-leader选举
选举的算法可以参考:http://blog.csdn.net/xhh198781/article/details/10949697   假设配置中有两个server server.1=localhost:2888:3888 server.2=localhost:2889:3888   由前文可以,zookeeper在选举leader之前会先调用下面的代码,首先设置currentVo...
【Zookeeper】Leader选举机制示例
提到Leader选举,先需要重点介绍下创建znode时的Flag选项。 ZOO_EPHEMERAL ZOO_EPHEMERAL,用来标记当创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper里,Zookeeper使用Watcher察觉事件信息。当客户端接收到事件信息,比如连接超时、节点数据改变、子节点改变,可以调用相应的行为来处理数据。
深入浅出Zookeeper之五 Leader选举
前面几篇文章简单介绍了zookeeper的单机server client处理。接下来几篇文章会介绍分布式部署下zookeeper的实现原理。我们假设有3台server的集群,zoo.cfg配置如下 Xml代码   tickTime=2000   dataDir=/home/admin/zk-data   clientPort=2181   #Learner初始化连接到...
Zookeeper Leader选举实现分析
Zookeeper Leader选举实现分析
zookeeper源码 — 三、集群启动—leader、follower同步
zookeeper集群启动的时候,首先读取配置,接着开始选举,选举完成以后,每个server根据选举的结果设置自己的角色,角色设置完成后leader需要和所有的follower同步。上面一篇介绍了leader选举过程,这篇接着介绍启动过程中的leader和follower同步过程。 本文结构如下: 同步过程 总结 同步过程 设置server当前状态 server刚启动的时候都处于LOOKIN...
Zookeeper源码分析(三)-Leader的选举
Zookeeper在源码中选举可分为两步 1.startLeaderElection();//创建选举算法 synchronized public void startLeaderElection() { try { //创建一个投票自己的投票对象 currentVote = new Vote(myid, getLastLogg
zookeeper的集群内部选举leader
zookeeper选举leader的情形有两种,第一种是集群刚启动的时候,第二种是集群运行中leader脑裂,导致集群中半数follower与leader心跳检测不到,这些情况下需要选举leader 第一种情形,集群刚启动的时候选举leader流程,我们先假设集群中又5台zk服务器,编号分别为1, 2, 3, 4, 5,根据zk的快速选举过程fastleaderelection,需要半数达成一致...
深入浅出Zookeeper之五 Leader选举
前面几篇文章简单介绍了zookeeper的单机server client处理。接下来几篇文章会介绍分布式部署下zookeeper的实现原理。我们假设有3台server的集群,zoo.cfg配置如下 tickTime=2000 dataDir=/home/admin/zk-data clientPort=2181 #Learner初始化连接到Leader的超时时间 initLimit=...
简单理解Zookeeper的Leader选举
Leader选举是保证分布式数据一致性的关键所在。Leader选举分为Zookeeper集群初始化启动时选举和Zookeeper集群运行期间Leader重新选举两种情况。在讲解Leader选举前先了解一下Zookeeper节点4种可能状态和事务ID概念。 1、Zookeeper节点状态 LOOKING:寻找Leader状态,处于该状态需要进入选举流程 LEADING:领导者状态,处于该状
zookeeper中选举leader过程
注:选举leader的过程是参考zookeeper3.3.1.jar 1.名词 选举端口electionAddr:我们知道zookeeper选举时的端口是通过配置文件zoo.cfg配置的,zookeeper将配置文件转换成QuorumServer对象,其中electionAddr属性对应选举端口,对应server.1=registry2.dubbo.host:2888:3888中的38
PLSQL崩溃后的窗口恢复问题
PLSQL崩溃时(或者任务管理器结束任务)会自动保存当前窗口,rn重启plsql时会提示恢复窗口,rn现在的问题是恢复到一半是又卡住崩溃,恢复不了,就是想知道这些临时文件存在哪里。rn网上查到都是什么TEMP/PLS-Recovery文件夹中,但是发现我的plsql安装目录下根本没有这个文件夹。rn求问崩溃时的文件到底保存在哪
关于zookeeper选举leader原理及自定义leader个人理解和总结
不管在什么地方,什么时候,学习是快速提升自己的能力的一种体现!!!!!!!!!!! 先以一个简单的例子来说明zookeeper整个选举的过程: 假设有五台服务器组成的zookeeper集群,它们的id从1-5(对应的是zoo.cfg中的server.serverID值,同时对应myid文件的值) ,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样
恢复事务的问题
我想增加一个预处理,目的是数据计算后不递交事务,这样计算结果不会被保存rn数据的计算是通过执行多个保存了SQL的ADOQuery控件来实现的,每个ADOQuery实现一项计算.rn由于不可能在第一个ADOQuery中设置begin tran在最后一个ADOQuery中设置rollback,请教有什么其他的办法可以实现?
spring事务的同步问题
1、两个方法都是操作同条记录,其中一个方法注解了@Transactional,另外一个方法没有注解 当先请求没有注解的方法后再请求有注解的方法时,两个方法能并行执行 当先请求注解的方法后再请求没注解的方法时,要等注解方法先执行完,没注解的才能执行 2、两个方法都是操作同个数据表的数据但不是同个记录,其中一个方法注解了@Transactional,另外一个方法没有注解 当先...
事务恢复
写在前面 数据库事务恢复笔记。 问题 内容访问速度快但是容易崩溃不稳定。 磁盘稳定但是访问速度慢。 解决 将磁盘的数据页面读到内存缓冲区当中,以便计算机指令提供高速的随机访问。 一旦页面被读入内存的缓冲区,应该设法保存该页面以便不久之后的再次访问这样可以不用再访问磁盘,减少IO的开销。 后备缓冲 允许系统接收到一个磁盘的页面的请求的时候,先将其...
【ZooKeeper】Leader和Learner交互的一些思考
在经过Leader选举之后,现在集群中的所有服务器都已经确定了自己的角色。 主要由Leader、Follower和Observer,我们把Follower和Observer统称为Learner。那么在ZooKeeper中,是如何进行Leader和Learner之间的交互的呢?原来,这两者之间的交互采用的是一种典型1+N的线程模型。即一个线程用来处理连接请求,然后N个线程用来处理彼此之间的io。话...
ZooKeeper leader选举机制细节记录
首先在ZK中leader选举有这么几个细节: 1.ZXID最大会被设置为leader,因为ZXID越大,数据越新; 2.如果集群中有几个服务器具有相同的ZXID,那么SID较大的那台服务器成为leader; 3.epoch随着新leader的产生会递增; 4.服务器状态:    服务器具有四种状态,分别是LOOKING、FOLLOWING、LEADING、OBSERVING。   LO...
win2000崩溃 ,oracle 恢复问题
win 2000 server 系统崩溃, 但是有 表空间文件,我怎么才能在重装系统后用表空间文件 恢复相应的用户及所属的表呢
模拟Oracle实例崩溃后的恢复
Oracle实例崩溃了、模拟崩溃后的恢复
SQL Server数据库崩溃后的恢复之法
SQL Server数据库崩溃后的恢复之法
explorer崩溃重启后,任务栏图标如何恢复?
我试了http://www.ccrun.com/article.asp?i=577&d=v3lka2上所说的方法,不过explorer重启后说 无效的窗口句柄...不知道怎么解决该问题,请教各位高手
DB2崩溃恢复后表空间异常模拟
1.新建一个表空间ts1存储路径是/home/test/file [test@demo SQL00001]$ db2 "create tablespace ts1 managed by database using (file '/home/test/file' 10M)" DB20000I  The SQL command completed successfully. [test@demo ~...
浏览器崩溃后,如何恢复托盘图标?
在xp和2003中,增加了系统托盘。但是当explorer崩溃后,托盘图标会丢失现象(程序还在运行)。发现类似QQ等程序能自动重新显示,可是自己增加的托盘图标不能被自动恢复,难道恢复显示不是系统自动完成的么?应该如何解决这个问题?
zookeeper的leader选举和最大故障节点数
法定数量是通过严格意义上的多数节点来表示的。在集合体中,可以包含一个节点,但它不是一个高可用和可靠的系统。如果在集合体中有两个节点,那么这两个节点都必须已经启动并让服务正常运行,因为两个节点中的一个并不是严格意义上的多数。如果在集合体中有三个节点,即使其中一个停机了,您仍然可以获得正常运行的服务(三个中的两个是严格意义上的多数)。出于这个原因,ZooKeeper 的集合体中通常包含奇数数量的节点,因
Zookeeper 概要 和 leader选举、watcher 机制分析
在分布式系统中,我们会存在很多的服务,通过将服务注册到zk上,使用zookeeper 进行服务协调, 由于需要保证服务的可靠性,我们需要对每个功能进行注册多个服务,如果某个服务不可用时,我们需要能够动态的感知该服务不可用,此时我们通过zk的节点特性(临时节点)进行保存服务,当某个节点下服务不可用时,zk会动态的删除不可用的临时节点。 zk的是一个类似文件目录的存储结构,存储的是node节点,节点特性主要包含持久化节点、临时节点、有序节点以及同级节点的唯一性。在实际开发中,我们可以通过临时节点保存服
【分布式】Zookeeper的Leader选举-选举过程介绍
【分布式】Zookeeper的Leader选举-选举过程介绍 选举开始,服务器会各自为自己投票,在投票完成后,会将投票信息发送给集群中的所有服务器(观察者服务器不参与选举)。 选票由两部分组成:服务器唯一标识myid和事务编号zxid,即(myid,xzid)。 zxid越大说明数据越新,在选择算法中的权重越大。 myid越大,在选择算法中的权重越大。 比较选票时会先比较zxid,zxi...
深入浅出Zookeeper之六 Leader/Follower初始化
前一篇介绍了Leader选举,这一篇介绍选举成功之后Leader和Follower之间的初始化。 先看Leader端操作   Java代码   case LEADING:                       LOG.info("LEADING");                       try {               //初始化Leader对...
zookeeper实现leader选举的一种方法
写这篇文章之前,我需要解释下为什么需要实现leader选举。我们在软件系统构建过程中,总会有一个场景,就是如何保证系统高可用。保证高可用有一个简单方式就是多加几个副本,也就是部署多个节点,构成一个集群。一台机器挂掉,业务由另一台接管。在一个时刻只有一台生效,这个生效的机器就是Leader。类比于一个部门只有一个主管一样,主管不在了,副职可以立马顶上,不至于活都没法干。 这里的关键一点是在一个时间点...
zookeeper leader和follower启动期交互过程
leader和follower启动期交互过程包括如下步骤。1.创建Leader服务器和Follower服务器完成leader选举后,各服务器会根据自己角色创建相应的服务器实例,并开始进入各自角色的主流程。代码位置:QuorumPeer.java leader case LEADING: LOG.info("LEADING");
Zookeeper的高可用集群与leader选举策略
一、概述 zookeeper作为分布式系统协调者和管理者,承担着联结分布式系统的各组件来组成一个完整服务的职责,如kafka作为一个分布式集群,在kafka的内部体系结构中包含消息生产者,消费消费者,消息存储broker三个核心组件,kafka通过在zookeeper中维护这三大组件的运作信息,并且这三大组件分别通过zookeeper获取其他组件的运作信息或者获取组件内部其他子组件的运作状态来协...
zookeeper源码浅析(二)之Leader选择
1.入口函数QuorumPeerMain主线程启动 Quorumpeermain.runfromconfig()代码 public void runFromConfig(QuorumPeerConfig config) throws IOException {          ......                LOG.info("Starting quorum p