最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Dynomite: NetFlix 对 dynamo 的开源通用实现

  • 2014-11-11
  • 本文字数:1331 字

    阅读完需:约 4 分钟

Dynomite NetFlix 对亚马逊分布式存储引擎 Dynamo 的一个开源通用实现,它不仅支持基于内存的 K/V 数据库,还支持持久化的 Mysql、BerkeleyDb、LevelDb 等数据库,并具有简单、高效、支持跨数据中心的数据复制等优点。Dynomite 的最终目标是提供数据库存储引擎不能提供的简单、高效、跨数据中心的数据复制功能。目前,Dynomite 已经实现了对 Redis Memcached 的支持。

Dynomite 的拓扑结构如下图:

从图中可以看出每个 Dynomite 集群包括多个数据中心(dc),每个数据中心都有一组机架,每个机架包括多个节点,每个机架都包括完整的数据集,该数据集被划分在同一机架的多个节点上。因此,多个机架架构能够提供更高的可用性的数据服务。机架上的每个节点都有个一个唯一的标示,该标示用来识别节点属于哪个数据集。每个 Dynomite 节点都有一个 Dynomite process 组件用来协同数据服务器提供服务,该组件具有代理、路由、协调等作用。

Dynomite 支持多数据中心的复制,当发送写操作时,客户端能够连接到 Dynomite 集群的任意一个节点。如果 Dynomite 节点恰好接收的数据是属于本节点的数据时,该数据首先会被写到本地数据库服务中,并且异步的复制到所有数据中心的集群中的其他机架中。如果节点接收到不属于本节点的数据,Dynomite 将会以一个协调者的角色发送写的操作到相同机架上应该存储数据的节点上,并复制写操作到其他机架和数据中心的相应节点上。下图所示的是 Dynamo 客户端正将数据往一个集群上写,该数据属于节点 a2、b2、c2、d2。该请求发送给了 a1 节点,a1 节点就充当协调员的角色,并将请求转发给节点 a2、b2、c2、d2。

Dynomite 还具有一个常规、一致性的哈希环,但是复制是不对称的。Dyno 客户端的本地写使用了基于令牌的负载均衡,Dyno 客户端在相同区域知道 Dynomite 的集群拓扑结构,因此,Dynomite 能够使用一致性哈希直接将数据写到一个具体的节点中。

一致性是 Dynomite 的一个重要特性,但是在目前版本中,Dynomite 开发团队把高可用性放在了首位,把 Dynomite 的一致性放到了下一个版本中。如果开发者的使用场景是存储高频率的时间序列数据的话,Dynomite 完全能够满足需求。为了降低数据复制的延迟, Dynomite 开发团队将进行代码路径优化和增强复制策略来降低数据复制的延迟。Dynomite 开发团队还进行了线性试验, 结果充分证明了 Dynomite 完全能够满足高效、跨数据中心的数据复制的性能要求。Dynomite 遵循 Apache License V2.0 开源协议发布,其代码托管在 GitHub 上,更多关于 Dynomite 的信息请查看 NetFlix 技术博客对 Dynomite 的介绍

Dynomite 是 Dynamo 的一个用于 K/V 数据库的实现,Dynamo 是亚马逊的一个分布式 K/V 存储系统,它具备去中心化、高可用性、高扩展性的特点。非常著名的 NoSql 数据库 Cassandra 就是按照 Dynamo 的 P2P 架构,同时融合了 BigTable 的数据模型及存储算法实现的。另外,还有一个数据库也叫做 Dynomite ,它由于受到 Dynamo 设计思想的启发,并采用 ErLang 语言开发的分布式 K/V 数据库,请读者不要将二者混淆.


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-11-11 00:535500
用户头像

发布了 92 篇内容, 共 45.0 次阅读, 收获喜欢 5 次。

关注

评论

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

只用了半个Redisson的Semaphore实现并发控制

做梦都在改BUG

Java 并发控制 Semaphore redisson

秒云加入金兰组织,携手共建信创新生态

MIAOYUN

信创 信创云 信创产业 金兰组织

由浅入深,聊聊OkHttp的那些事(很长,很细节)

Petterp

android okhttp

TDengine 3.0.2.5 查询再优化!揭秘索引文件的工作原理

TDengine

数据库 tdengine 时序数据库

前端培训学习方法有哪些

小谷哥

模块6如何设计微服务架构

程序员小张

软件测试/测试开发 | Web 控件定位与常见操作

测试人

软件测试 自动化测试 测试开发 Web自动化测试

热点面试题: Array中有哪些非破坏性方法?

控心つcrazy

JavaScript array 前端面试题 Javascript框架 超全前端面试题

嵌入式ARM设计编程(一) 简单数据搬移

timerring

arm

特定领域知识图谱融合方案:文本匹配算法之预训练Simbert、ERNIE-Gram单塔模型等诸多模型【三】

汀丶人工智能

人工智能 自然语言处理 知识图谱 2月月更 2月日更

Sentinel 是如何实现分布式限流的?

做梦都在改BUG

sentinel 分布式限流

面试官:谈谈你对JVM内存结构的理解

做梦都在改BUG

Java JVM

Svelte框架结合SpreadJS实现表格协同文档

葡萄城技术团队

fabric.js开发图片编辑器的细节实现

秦少卫

架构 编辑器 Fabric.js 前端编辑器

安擎董事长俞跃渊:打造智能算力,创新产业价值

科技热闻

大数据培训学习选择哪个机构好

小谷哥

新年伊始,谈谈开源软件供应链安全的新趋势

安势信息

开源软件 清源CleanSource SCA 安势信息 ChatGPT 开源软件供应链安全

关于使用消息队列今天被面试官问倒了

做梦都在改BUG

软件测试/测试开发 | 网页 frame 与多窗口处理

测试人

软件测试 自动化测试 测试开发 Web自动化测试

实战分享,电路板设计后这样干,一个人也能轻松搞定项目!

华秋PCB

PCB PCB打样 PCB设计

IoTLink 版本更新 v1.5.2

山东云则信息科技

物联网

大数据培训零基础的方法有哪些

小谷哥

上架的时候怎么向某个版本添加构建版本

雪奈椰子

apple ios开发

宋红康2023版Java视频发布

小谷哥

再获权威认证!秒云顺利通过ISO20000、27001双系统认证

MIAOYUN

ISO9001 ISO20000 ISO27001

SpringBoot 如何保证接口安全?老鸟们都是这么玩的!

做梦都在改BUG

Java Spring Boot 接口

啊啊啊!小程序小游戏也可以在自己的App上架❗️❗️

没有用户名丶

微信小程序 小程序游戏

安势信息入选 SegmentFault思否「2022 中国新锐技术先锋企业」

安势信息

软件成分分析 清源CleanSource SCA 安势信息 技术先锋 SegmentFault

Java培训有哪些不同的学习方法

小谷哥

软件测试/测试开发 | web 控件的交互进阶

测试人

软件测试 自动化测试 测试开发 Web自动化测试

探讨丨传统行业必须数字化转型吗?

优秀

数字化转型

Dynomite: NetFlix对dynamo的开源通用实现_语言 & 开发_李士窑_InfoQ精选文章