写点什么

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

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

关注

评论

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

第三季度加密市场动荡:市场缺乏炒作题材,波动加剧

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

云灾备场景

天翼云开发者社区

公有云 容灾场景

Web 应用框架环境安装指南

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

测试

欢迎来到 Mint Expedition:Web3 和 NFT 的新时代开始

NFT Research

blockchain NFT\

S3基准测试工具 - Warp使用简介

天翼云开发者社区

测试 S3 开源云工具

天润融通用小改进,盘活大资产

天润融通

人工智能 天润融通

rbd常用的配置参数

天翼云开发者社区

rbd 配置参数

C 语言中的 sscanf 详解

EquatorCoco

MySQL 数据库 C语言

没有它,你的Scrum无法实现!

敏捷开发

项目管理 Scrum 敏捷开发

某新员工大量使用Lambda表达式,老员工喷是炫技

源字节1号

小程序 开源 前端 后端

Autobots应用探索:实践中的思考与发现

京东科技开发者

接入单元测试框架:原理与执行流程介绍

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

测试

在 Xcode 中运行和调试单元测试:使用 Debug 和日志

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

测试

抖音商品详情API实战指南:轻松获取并利用商品数据

tbapi

抖音商品数据采集 抖音API 抖音数据采集 抖音商品详情接口

什么是云抄表?

源字节1号

小程序 开源 后端‘’

AI大模型深度对比:腾讯混元大模型 VS 百川大模型

幂简集成

AI API 大模型

etl 常用数据类型转换 元数据配置说明

weigeonlyyou

Go 大数据 物联网 ETL MySQL 8.0

为什么要构建小程序生态

Geek_2305a8

Java/OC 语言知识讲解:反射与回调

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

测试

利用财务工具实现企业不同阶段的有效规划

智达方通

全面预算管理 预算管理 财务预算

TaD+RAG-缓解大模型“幻觉”的组合新疗法

京东科技开发者

从校招新星到前端技术专家的成长之路

京东科技开发者

代码审查完整指南来了!

敏捷开发

编程 软件开发 代码审查 代码管理

Objective-C 语言基础知识:编写测试代码

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

测试

为什么从 Demo 测试开始上手

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

测试

K8S POD控制器:从基础到高级实战技巧

EquatorCoco

Kubernetes 容器 云原生

基于快照的异步远程复制介绍

天翼云开发者社区

Java 前端 rbd

官宣!玲珑项目升级,如意玲珑(Linyaps)全新启航!

nn-30

Linux 开源 操作系统 deepin deepin V23

京东按图搜索商品新视角:jd.item_search_img API返回值解读

技术冰糖葫芦

API 安全 API 文档 API 开发 API 协议

deepin Meetup 上海站回顾,揭秘如意玲珑(Linyaps)升级“内幕” | 附 PPT下载

nn-30

Linux 开源 操作系统 deepin deepin V23

Python循环控制

不在线第一只蜗牛

Python

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