写点什么

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

  • 2014-08-12
  • 本文字数:1053 字

    阅读完需:约 3 分钟

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

该算法的设计在很大程度上受到了 Raft Paxos 算法的影响,其目标是提供同样可验证的强一致性保证。与 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

2014-08-12 19:084838
用户头像

发布了 256 篇内容, 共 88.0 次阅读, 收获喜欢 12 次。

关注

评论

发布
暂无评论
发现更多内容

人工智能—走向智能化生活

测吧(北京)科技有限公司

测试

人工智能 | 自动驾驶的伦理挑战

测吧(北京)科技有限公司

测试

人工智能 | 革命性的物流与运输

测吧(北京)科技有限公司

测试

Lightroom Classic for mac(Lrc2021) 10.3激活版

mac

LRC2022 照片编辑软件 苹果mac Windows软件 Lightroom Classic 2022

实现语言理解与生成的新前沿

百度开发者中心

大模型训练 #人工智能 LLM

人工智能 | 自动驾驶与城市规划

测吧(北京)科技有限公司

测试

中企全球化案例-能源业:“1+2+3+N”,建设全球领先的智慧司库平台

用友BIP

全球司库 中企出海

大模型训练:文本分类的未来之路

百度开发者中心

大模型训练 #人工智能

人工智能 | 自动驾驶汽车的未来:道路安全与出行革命

测吧(北京)科技有限公司

测试

香港服务器购买指南:如何挑选最适合你的网络解决方案?

一只扑棱蛾子

香港服务器

软件测试/测试开发丨Python深拷贝与浅拷贝 学习笔记

测试人

Python 软件测试 测试开发 深拷贝与浅拷贝

用友招聘云助力中企出海,充盈全球化人才蓄水池

用友BIP

招聘 中企出海

预训练模型在NLP中的应用与优化

百度开发者中心

自然语言处理 大模型训练 #人工智能

人工智能 | AI驾驶系统的安全性

测吧(北京)科技有限公司

测试

Mybatis in Springboot

Kevin_913

Java mybatis

腾讯云大数据ES:一文秒懂!使用Elasticsearch进行数据分析

腾讯云大数据

elasticsearch

微信审核趋严,小程序引流需要配一个小程序化App

Speedoooo

超级app 小程序化App superapp App小程序化

一文教你如何发挥好 TDengine Grafana 插件作用

TDengine

时序数据库 ​TDengine

人工智能 | 自动驾驶技术:实现未来的智能交通

测吧(北京)科技有限公司

测试

人工智能 | 无人驾驶汽车:道路安全和效率的未来

测吧(北京)科技有限公司

测试

人工智能 | 自动驾驶与环境保护

测吧(北京)科技有限公司

测试

人工智能 | AI驾驶系统:改变汽车产业的革命

测吧(北京)科技有限公司

测试

城市交通的未来服务:迎接便捷、可持续和智能的交通体验

测吧(北京)科技有限公司

测试

ABAQUS常用功能总结,推荐给自学的朋友们!

思茂信息

abaqus abaqus软件 abaqus有限元仿真

深度学习与预训练语言的突破

百度开发者中心

自然语言处理 大模型训练 人工智能「

优化模型之“平均检出率”

矩视智能

深度学习 机器视觉

华为云CodeArts Check代码检查插件(Cloud IDE版本)使用指南

华为云PaaS服务小智

云计算 软件开发 华为云 代码检查

强化学习与深度学习相结合的新趋势

百度开发者中心

#人工智能 LLM 大语言模型

人工智能 | 机器学习与自动驾驶

测吧(北京)科技有限公司

测试

华为云CodeArts Check代码检查插件(CodeArts IDE本地版本)使用指南

华为云PaaS服务小智

云计算 软件开发 华为云 代码检查

人工智能 | 自动驾驶与卫星导航

测吧(北京)科技有限公司

测试

Tokutek宣布了用于MongoDB的新一致性算法_语言 & 开发_Benjamin Darfler_InfoQ精选文章