在 Meta 构建和部署 MySQL Raft( 五 )


下一步Raft 通过提供可证明的安全性和简单性,帮助解决了 Meta 中 MySQL 的操作管理问题 。我们的目标是不干涉 MySQL 一致性的管理,并拥有针对罕见的可用性损失情况的工具,这些目标已基本实现 。Raft 现在在未来开辟了重要的机会,因为我们可以专注于增强对使用 MySQL 的服务的提供 。我们的服务所有者提出的其中一项要求是具有可配置的一致性 。可配置的一致性将允许所有者在入职时选择服务是否需要 X 区域仲裁或在某些特定地区(例如欧洲和美国)要求副本的仲裁 。FlexiRaft 对这种可配置的仲裁有无缝支持,我们计划在未来开始推出这种支持 。PACELC 定理) 。
由于代理特性(使用多跳分布拓扑发送消息的能力),Raft 还可以节省跨大西洋的网络带宽 。我们计划使用Raft只从美国复制一次到欧洲,然后使用Raft的代理特性在欧洲内部分发 。这将增加延迟,但考虑到大部分延迟发生在跨大西洋传输中并且额外的跃点要短得多,这将是名义上的 。
Meta 的数据库部署和分布式共识空间中一些更具推测性的想法是关于探索无领导协议,如Epaxos 。我们当前的部署和服务已经在强大的领导者协议附带的假设下工作,但我们开始看到一些需求,其中服务将受益于 WAN 中更统一的写入延迟 。我们正在考虑的另一个想法是将日志从状态机(数据库)中分离出来,形成一个分解的日志设置 。这将允许团队将日志和复制问题与数据库存储和 SQL 执行引擎的问题分开管理 。
致谢


推荐阅读