开发者学堂课程【PolarDB-X 开源系列课程:第七节:X-Paxos 三副本与高可用(三)】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/1032/detail/15168
第七节:X-Paxos 三副本与高可用(三)
五、解答问题
1.三个节点数据如何保证同步?上文提到的图中给出了答案。
2.这是把 x-paxos 的一致性协议内置到集群里面去,不需要外部的reprepare 组建,
3.Paxos 上监控,plogger 传输,数据还是 plodder 同步这句话正确吗?
Binlog 是载体也就是说传输的日志就是 Binlog。
4. x-paxos 怎么跟 inner DB 引擎配合?
上文提到的图中给出了答案。
5. 副本数量有上限吗?
正常在生产环境中基本就是同城三副本模式,如果要求更高一点可以用跨城五副本这种模式。
6. DN 上的 Binlog 会落盘吗?
会落盘的,Binlog 的落盘很重要。
7. 为什么要使用强力的模式,Paxos 是选主时,如何确保新的 slave追完了 Binlog?
选主时是根据 Binlog 里的日志来进行选主的,选主不关心其是否追完了 Binlog,拥有集群中达到多数派最新日志的节点会成为 leader,但可能其 Binlog 还没有追完。不会出现两个leader。
8. 不使用 logger 节点的话,数据的可用性是否更高?
会更加高,用logger 其实是折中的选择,因为 logger 节点如果换成普通 follow,它就增加一份数据存储。这个实验大概分两部分,第一部分是先按之前步骤构建一个 PolarDB-X 的集群,然后第二步是验证一下,看一下高可用是怎么样的。高可用分两步:一种是随机的杀掉一个 CN 节点,或者随机杀掉一个 DN 节点,然后观察集群的服务是怎样变化的。
9. 不追完能起来服务吗?
不一定,因为如果在该类引擎上自己搭建环境的话,有时候发现一个节点起来之后,可能登录不进去,是因为这个节点它在重启的时候,在客户端能够登录进去之前,首先要接入到集群里去,这是为了确定自己的角色,是为了和其他集群中的其他节点协商当前最新的日志是哪个。正常肯定能进去,这里是提出如果整个集群都不健康,然后这个节点起来后,是没有形成多数派的,没有新的 leader 选出来,这时集群确实不能提供服务。
其实这个多节点和原来的半同步有很大的区别,就是这个半同步在slave 异常时会退化为异步,这其实它就是为了保证可用性,是优先选择可用性,但牺牲了数据一致性。
三节点这种模式,就是需要保证强一致,如果大多数节点都不健康,那系统就是不能使用的。
10. 复制延迟导致的系统不可用,是不是因为数据一次性问题?
不是的,是现在 Binlog 传输,在一次性协议的层面其实传输的是 Binlog,如果它的复制有延迟,如果一个 follow 节点被选为新主,但它上面的 Binlog 日志都还没有追全,也就是说它的日志虽然是最新的,但它系统数据状态并不是最新的,这个时候并不能对外提供服务。这不是 CP 层面的东西,这就像主备那种模式,比如主备的 master挂了 slave 也不能立刻就能提供服务,在其 Binlog 没有追全之前,也是不能使用的。
三节点这种模式,其数据以及日志一定能够达到 RPO = 0。
三节点之间的并到的是同步模式还是义务模式?
同步模式,同步模式其实关于三节点的实现,其他很多产品都有这种一次性协议的事项,里面有几个概念。