BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Tokutek宣布了用于MongoDB的新一致性算法

| 作者 Benjamin Darfler 关注 0 他的粉丝 ,译者 马德奎 关注 0 他的粉丝 发布于 2014年8月13日. 估计阅读时间: 3 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

Tokutek已经宣布,将致力于一种新的一致性算法,目标是替代MongoDB现有的群首选举算法。该算法名为Ark,Tokutek正在其MongoDB分支TokuMX中开发,并使用它解决MongoDB现有算法中的若干问题。

该算法的设计在很大程度上受到了RaftPaxos算法的影响,其目标是提供同样可验证的强一致性保证。与Raft不同,它实现了拉式异步复制模型,这使它能够支持MongoDB的架构和编程模型。开发人员声称,这

……支持更广泛的客户端语义,允许应用程序开发人员在安全性和延迟之间选择一个平衡点。此外,Ark支持不同的复制拓扑,如链式复制和多数据中心复制,与Raft同步推式模型的做法相比,这有更大的灵活性。

Tokutek解释了需要新算法的理由,它指出了MongoDB现有的群首选举算法的两个问题。首要问题是一个正确性问题。在宣布Ark的博文中,Zardosht Kasheff指出,成功实现majority write concern的更新也可能回滚。

我们的主要目标是修改选举协议,使TokuMX成为一个真正的CP系统。就是说,在面对网络分区时,TokuMX将保持一致性。这样做意味着,在面对一个网络分区时,可以确保任何成功实现acknowledged级别majority write concern的写操作永远不会丢失。对于TokuMX和MongoDB而言,现在并不是这种情况

Tokutek关注的第二个问题是一个可用性问题。在相应的技术报告中,Zardosht与合著者Leif Walsh解释说,MongoDB副本集可能会有30秒钟不可用,在故障转移期间或者会更长。

在任何一个30秒里,MongoDB的选举协议允许一个成员在多次选举中不投“是”。……在实践中,这样一个30秒的阀值可能会有问题,尤其是如果选举失败:这必然会导致副本集至少30秒钟不可用,如果后续选举失败则可能会更长。

Ark通过开发利用TokutekDB的全局事务标识符(GTID)解决了这些缺陷。GTID包含一对64位整数(term,opid),其中,每次在主副本上的操作提交时,opid就会加1,而每次选定一个新的主副本时,term就会加1,而且这时还会将opid置为0。GTID中的term与Raft协议中term概念服务于相同的目的,这种相似性允许Ark采用许多与Raft相同的解决方案来提供强一致性保证。

由于Ark是一种在真实数据库系统中工作的一致性协议实现,它也证实了Raft一致性算法的灵活性。以安全的方式调整Raft使它适合MongoDB的架构和编程模型相对简单些,而且我们认为这是Raft的一个重要特征。

GitHub上提供了一个Ark的开发分支,Tokutek正积极地征求关于设计和实现的反馈。

查看英文原文:Tokutek Announces New Consensus Algorithm for MongoDB

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT