写点什么

MySQL Xenon 源码阅读 -01

作者:lixiaofeng
  • 2021 年 12 月 13 日
  • 本文字数:566 字

    阅读完需:约 2 分钟

MySQL Xenon源码阅读-01

Xenon  是一款由 RadonDB 开发团队研发并开源的新一代 MySQL 集群高可用工具。基于 Raft 协议进行无中心化选主,实现主从秒级切换;基于 Semi-Sync 机制,保障数据不丢失,实现数据强一致性。并结合 MySQL(5.7 及以上版本)并行复制特性,实现 Binlog 并行回放,大大降低从库延迟。


Xenon 使用 Raft 协议进行选主的操作,这里简介绍一下,从候选者请求其他节点投票到当选的过程。


Raft 算法的向西信息 参见罗老师的文章:

https://www.infoq.cn/news/raft-paper


在 Candidate 角色在这个方法里面, 请求别人给自己投票。(candidate 的 线程)


在这里真正的做 RPC 远程调用, 即调用其他的 Follow 节点, 让它投自己一票。(candidate 的 线程)


RPC 调用这只, 被调用的 Follow 接收到请求之后就进行处理。

即 Candidate 在自己的节点,调用了 Follow 节点上的这个方法。


注意一下方法体中的 send 方法,这个很重要,代码如下, 它把信息交给 Follow (实际是 Follow 的 Loop 方法)去执行,并且将拿到的结果返回给远程调用端。代码如下: 


Follow 的 Loop 会判断请求的类型, 若是请求投票的,则进入相应的处理方法中去处理这个事。


正常情况,candidate 收到投票,成为 Leader。

Candidate 最后还要进行状态退出。

Leader 进行状态初始化。



Xenon 是非常优秀的适用于 MySQL5.6,MySQL5.7 的高可用方案。更多参见 https://github.com/radondb/xenon

发布于: 3 小时前阅读数: 7
用户头像

lixiaofeng

关注

还未添加个人签名 2018.04.25 加入

还未添加个人简介

评论

发布
暂无评论
MySQL Xenon源码阅读-01