第七节:X-Paxos 三副本与高可用(四)|学习笔记

简介: 快速学习第七节:X-Paxos 三副本与高可用(四)

开发者学堂课程【PolarDB-X 开源系列课程:第七节:X-Paxos 三副本与高可用(四)】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/1032/detail/15168


第七节:X-Paxos 三副本与高可用(四)

六、实验实操

image.png

刚刚的操作其实就是部署 PolarDB-X 集群的内容,没有一步一步讲解

下面这一步搭建跑到 DBX 进行比较慢,可能要几分钟

image.png

主节点挂了后新选主,新的主节点如何保证 Binlog 能和原主节点一致。

不需要和原主节点完全一致,新的 leader 只需要保证节点数据,拥有这个集群上已经达成共识的最新的数据就行。原来老leader 节点数据可能多,但老节点的数据肯定没有提交。

MGR 也是基于 pixels 协议来实现的,但功能实现差别还是有点大,MGR 其实它最早的版本实现了多写,也就是说它三个节点,每个节点都可以承接读写服务,所以这个地方它就必须要解决冲突问题比如说 A 节点它改了一行,B 节点也改了一行,那在这个集群中,这种行集的冲突是要解决的。所以 MGR 的实现是比较复杂的,其实有兴趣可以去用一下社区的 MGR,体验现在是什么情况,例如体验其性能以及稳定性就在去年的时候社区放宽多写的能力,并且也提供了单 leader 模式 pictures 实现的时候,到底是 marty 还是 single?但是对于作为 PolarDB-X 的存储集群来讲,其实不需要在多个节点都能够提供多服务,整个分布数据库的多写是在 CN 层完成的存储节点用 single leader 模式,其实性能是更好的工程上也更简洁工程简洁会使其更稳定。

大家有兴趣可以看一下代码,其实真正在多数等待多数的同步细节方面还是有不少东西的比如说真的要做成平等模式的情况下,做到发一条等一条,那么这个性能是不可接受的实际在真正共同实现的时候,在刚刚 Binlog commit 的那张图里,在 flash 阶段时,其实这个数据以及日志就已经发出去了只是在 follow 那边缓存起来,这其实是一种类似于 TCP 的流射模式

目前此集群已经搭建完成,先登上去看一下是正常的。

image.png

录成功,创建一个 yasir 用的数据库。其实下面阶段用压缩工具起一个 suspends,然后点击 CN,点击 DN,观察 suspends 的流量情况。

压缩之前在集群里面观察发现有两个对等 CN。然后这里是一个集群,并且因为这个环境资源有限,就只建立了一个逻辑 DN它有三个节点,包括两个正常的数据节点,还有一个 logger 节点其实杀 CN 和 DN过程很简单现在向大家展示这里部署出来的 DN 集群,或者说 MYSQU 集群,观察一下其基本情况

首先登录到其中一个节点,登录它的其中一个容器里,登录到它的系统里观察其比普通 MYSQU 多出来的一些协议方面的东西。

image.png

 information_schema 多出来的一些系统表是关于 x-paxos 协议的一些东西,这里先关注其中比较关键的几张表。

Global表可以查看当前节点的角色,这张表只有 leader 角色的节点才有数据,如果角色为 Follow 节点会导致变为空的,所以如果 global 表查出来数据,就说明当前这个节点是 leader。

image.png

个例子可以发现它有两个 Follower:第一个是 follower,第二个 leader自己,第三个也是 follower。这里看不到 logger因为在协议层没有角色,没有应用状态机而已。看 index 是日志里其的标识,一条日志的标识是二元组来形成的,一个是产生这条日志当时的 leader 的任期编号另外一个是 index索引,就是positionIndex 和任期编号都是递增向上,不会变小的。目前可以观察这两个 follower,其实日志全部都已经发过。因为现在还没有起压力,所以看 apply  index 字段,就是在follower 的节点,它的 Binlog 应用的如何了?应用哪个位点了和最新的位点有多少差距从这个表就能看出来这是 leader 节点

这个是leader 节点,另外两个肯定是 follower 节点,到上面看一下,发现这张表虽然是空的,但是可以看自己的信息

image.png

这张 local 表可以看自己的信息,就是自己SOID,还有当前 leader 的任期还有 IP 端口,commit以及最新的 index,还有最新应用的 apply index

这样看 show tables alisql 这几张表,可以用 show create table看每张表是什么含义?大家有兴趣可以自己去看记录了这个节点的状态,协议信息、节点信息以及健康状况等等这些都从系统表里可以看到。

现在退出来,演示一下高可用现在准备起 six months。

Test 已经起来了,接着开始起流量。

这个是 suspends 的客户端。

image.png

这是 suspends 的流量。

image.png

CN有两个对等的,随便删掉一个。被掉流量是有下跌的,现在应该已经起来了。刚才 CN 被删了一次现在起来了,流量又恢复了

因为只有一个 DN,删除之后它会停止服务现在恢复了

刚才看到有一个细节刚才流量是恢复了,但是被干掉的 DN 节点,就是有一个副本还没起来,已经有一个 follower 被选为新 DN 去承接流量了,现在两个节点包括被干掉节点也起来了,演示也就是这个情况,下去之后可以自己试着一下。

下面再次解答一些问题

原来被干掉的 DN 起来后会重新选吗?

被干掉的 leader 重新起来之后,会以 follower 的身份加入到集群里面去。因为他被干掉之后,有一个 follower 的被选为 leader 了,然后原 leader 再起来之后,没必要一定要用原来的新 leader 再作为leader。

除非遇到刚才说的选权重的情况,如果原来被干掉的 leader 权重比较高的话有更大更高的概率被选为 leader。

Logger 节点其实是没有 MYSQL,其没有数据,只有日志,但是它依然有可能被选为 leader,因为有可能日志就是集群中最新的但是其被选为 leader但是它自己又没有 MUSQL 数据,不能提供服务的。所以当 leader 之后,会把自己的 Binlog 日志同步给另外两个 follower 节点,等其他节点把日志接收完毕后,logger 会把自己的 leader 角色自动放出去

权重高有更高概率当选 leader。权重高也不一定要选为leader因为其实如果在生产场景中,如果真的需要一定某个节点,就是要 leader,比如只要不坏就是 leader这里其实可以人工干预人工干预的意思就是,万一权重没有把它选为 leader 的话,可以在集群里用一条命令,指定某个节点成为 leader,这种指定也不破坏协议,只是如果有条件,或者能够当选为新 leader 才能成为 leader

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
图形学
计算机辅助设计的基本原理与应用 - 副本
计算机辅助设计的基本原理与应用 - 副本
|
1月前
|
监控 NoSQL Redis
Redis分区容错秘诀:解密主从模式
Redis主从模式用于提高高可用性、负载均衡和数据备份。主节点处理写入,从节点复制数据并分担读取,实现故障切换和读写分离。配置主从关系后,从节点连接主节点进行全量和增量复制。当主节点故障,从节点可接管服务。然而,主从延迟和数据不一致性是挑战,可通过优化网络、使用Sentinel和Redis Cluster等解决。关注“软件求生”获取更多内容。
153 1
Redis分区容错秘诀:解密主从模式
|
10月前
|
存储 人工智能
分布式与集群(一):我眼中的分布式与集群
我们国家的优势:我们相比其他国家拥有天然的人口优势;人多了,需求便来,如何做到服务好这么多人,面临很大的挑战,同时也蕴藏着巨大的机会;当然也催生了以BAT为代表的一批互联网公司的诞生,我们的技术也进入世界一流水平;
145 3
|
9月前
|
消息中间件 算法 容灾
7年工作经验面试被问:谈谈你对Kafka副本Leader选举原理的理解?
一位7年工作经验的小伙伴,面试被问到这样一道题,说:”谈谈你对Kafka副本Leader选举原理的理解“。当时,他想,这Kafka用的不就是Zookeeper 的选举吗?难道Kafka又自己搞了一套。没错,这回Kafka自己造了一个轮子。 那么今天,我给大家来聊一聊我对Kafka副本Leader选举原理的理解。
72 1
|
10月前
《从Paxos到ZooKeeper分布式一致性原理与实践》学习知识导图
《从Paxos到ZooKeeper分布式一致性原理与实践》学习知识导图
57 0
|
消息中间件 缓存 Kafka
字节终面:说说Kakfa副本状态机的实现原理?
ReplicaStateMachine是内部组件,一般用户感觉不到存在,但搞懂它,对从根本定位一些数据不一致问题大有裨益。 部署3-Broker(A、B和C)Kafka集群,版本2.0.0。在这3个Broker上创建一个单分区、双副本主题。
65 0
字节终面:说说Kakfa副本状态机的实现原理?
|
NoSQL 数据库 Redis
主从复制-工作流程(2)数据同步阶段(简)|学习笔记
快速学习主从复制-工作流程(2)数据同步阶段(简)
68 0
主从复制-工作流程(2)数据同步阶段(简)|学习笔记
|
存储 监控 开发者
第七节:X-Paxos 三副本与高可用(三)|学习笔记
快速学习第七节:X-Paxos 三副本与高可用(三)
95 0
第七节:X-Paxos 三副本与高可用(三)|学习笔记
|
存储 容灾 关系型数据库
第七节:X-Paxos 三副本与高可用(二)|学习笔记
快速学习第七节:X-Paxos 三副本与高可用(二)
80 0
第七节:X-Paxos 三副本与高可用(二)|学习笔记
|
存储 缓存 运维
第七节:X-Paxos 三副本与高可用(一)|学习笔记
快速学习第七节:X-Paxos 三副本与高可用(一)
267 0
第七节:X-Paxos 三副本与高可用(一)|学习笔记