第23问:3 节点 MGR 集群,能不能将一个节点放在地球另一端?

本文通过实验展示了在3节点的MySQL Group Replication (MGR)集群中,即使关闭流控功能,单个节点的高网络延迟仍会影响整体性能。这是因为MGR采用multi-paxos协议,当延迟节点作为‘庄家’时,其他节点需要等待,导致性能下降。实验结果提示,在分布式系统设计中,网络延迟不容忽视。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

我们都知道,MGR 用了类 Paxos 机制的协议,协商过程只要多数节点同意即可达成一致。

那么对于 3 节点的 MGR 集群,我们能不能让某一个节点延迟较高(放在地球另一端),而不影响整体性能?

实验

我们省略搭建 MGR 集群的过程,得到一个 3 节点的集群:

将 3 个节点的流控功能全关掉,让数据压力能尽情跑:

下面来跑一个 sysbench 压力,这里用 ts 命令,给命令输出的每一行增加了时间戳:

然后我们给 mgr-3 节点增加一些网络延迟:

运行一段时间后,取消网络延迟:

来看这段时间 sysbench 的性能报表:

在我们给网络增加延迟的这段时间,会发现 MGR 的整体性能下降,直到我们取消网络延迟。

分析

实验结果跟我们的直觉不同,即使没有流控功能的影响,单节点的网络延迟仍然会影响到 MGR 的整体性能。其中的原理与 MySQL 使用的 multi-paxos 协议有关,讲述起来会比较复杂,大家可以参考 Oracle 的 slide:https://www.slideshare.net/lefred.descamps/dataopsbarcelona-2019-deep-dive-into-mysql-group-replication-the-magic-explained

小贴士:

这里我们简化描述一下原理:

  1. MGR 选取了 multi-paxos 协议作为底层协商协议

  2. 传统 paxos 是单人坐庄,发起协商。

  • 在多主模式下,非庄家节点想发起事务时,要将事务信息转交给庄家,由庄家代表它发起协商。

  • 这样庄家就变成了是性能瓶颈。

  1. multi-paxos 是轮流坐庄的形式。
  • 每个节点都有机会发起协商,各个节点发起事务时,由自己发起协商即可。

  • 不存在明显的性能瓶颈

  1. 但在轮流坐庄的模式下,如果存在一个高延迟的节点,轮到它坐庄时,其他节点都需要等待,它延迟越高,大家就等待越久,从而影响整体性能。

关于 MySQL 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值