AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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:084943
用户头像

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

关注

评论

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

大数据入门学习框架

Lansonli

大数据 大数据学习框架 学习大数据

React面试八股文(第一期)

beifeng1996

React

Jenkins流水线(pipeline)实战之:从部署到体验

程序员欣宸

Java jenkins 10月月更

【愚公系列】2022年10月 Go教学课程 032-结构体方法继承

愚公搬代码

10月月更

来自大厂 10+ 前端面试题附答案(整理版)

loveX001

JavaScript

C++ | bool变量值在程序运行过程中自动篡改问题解决

中国好公民st

c++ 变量 10月月更

元宇宙持续火爆,这些问题值得思考和警惕

CECBC

元宇宙,是噱头还是创新?

CECBC

数字货币:影响深远的创新

CECBC

元宇宙的当下与未来

CECBC

kubernetes的Controller

急需上岸的小谢

10月月更

搭建一套 gocd 的环境

lihui

CI/CD pipeline gocd

始料未及-- 元宇宙传来好消息,全球轰动

CECBC

React的useLayoutEffect和useEffect执行时机有什么不同

beifeng1996

React

React循环DOM时为什么需要添加key

beifeng1996

React

网络安全之等保2.0测评

网络安全学海

黑客 网络安全 信息安全 渗透测试 等保测评

Java多线程 ThreadPoolExecutor-RejectedExecutionHandler拒绝执行策略

Yeats_Liao

后端 Java core 10月月更

【一Go到底】第十八天---函数的注意事项

指剑

Go golang 10月月更

JS模块化—CJS&AMD&CMD&ES6-前端面试知识点查漏补缺

loveX001

JavaScript

聊聊运营活动的设计与实现逻辑

Java 架构 活动运营

2022-10-17:特殊的二进制序列是具有以下两个性质的二进制序列: 0 的数量与 1 的数量相等。 二进制序列的每一个前缀码中 1 的数量要大于等于 0 的数量。 给定一个特殊的二进制序列 S,以

福大大架构师每日一题

算法 rust 福大大

搞一搞明白Vitepress的文档渲染基础

小鑫同学

前端 markdown vite markdown-it 10月月更

js事件循环与macro&micro任务队列-前端面试进阶

loveX001

JavaScript

Kubernetes的pod调度

急需上岸的小谢

10月月更

Java多线程 ThreadPoolExecutor自定义线程池

Yeats_Liao

后端 Java core 10月月更

2022年证券行业818理财节,量变开始转向质变

易观分析

证券 理财节

Java多线程 CompletionService和ExecutorCompletionService

Yeats_Liao

后端 多线程 Java core 10月月更

你有真正的享受过闲暇吗?

暮春零贰

成长 时间管理 10月月更

2022年中国小微普惠数字化进程专题分析

易观分析

小微金融

Kubernetes的pod

急需上岸的小谢

10月月更

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