Twitter:我们已经亲手打造自己的数据库解决方案

Twitter已经步步发展并且走向成熟,因此在即时可用性之外、他们也开始意识到数据一致性保障的重要意义。该公司已将打造全新的“曼哈顿”数据管理软件这一诉求摆上了核心地位,并在上周的博文中正式披露了这套基础存储系统的诞生。

Twitter公司已经步步发展并且走向成熟,因此在即时可用性之外、他们也开始意识到数据一致性保障的重要意义。

至少该公司通过打造的全新“曼哈顿”数据管理软件将这一诉求摆上了核心地位,并在本周三的一篇博文中正式披露了这套基础存储系统的诞生。

虽然博文并没有提到,但根据我们掌握的消息、Twitter正在开发一套所谓次级索引方案。这是一项被囊括在曼哈顿软件中、具备巨大潜力的功能,能够帮助公司员工在搜索社交网络的庞大存储数据时提供出色的灵活性,足以成为这家上市公司进一步推进商业运作的重要利器。

我们首先来分析Twitter本周在博文中所公开的相关信息。

“在过去几年当中,我们发现自身对于一套能够每秒处理百万级别查询并能在实时环境下实现极致低延迟的存储系统的需求正变得愈发迫切。系统的可用性及速度当然同样非常重要,不过这套存储系统不仅要具备出色的性能表现、同时也需要拥有跨越全世界多个地区的卓越可扩展能力,”Twitter在其网站上写道。

曼哈顿是一款由该社交网络自家工程师所打造的软件方案,旨在应对每秒接近六千条推文所带来的巨大系统压力。尽管六千条推文本身所涉及的数据量并不是很大,但这部分信息存在多种复杂特性,因为曼哈顿软件还需要处理与之相关的回复以及针对每条推文的转发——如果某位名人发布了新动态,数百万关注者的回复将立即汹涌而来,这就让原本看似简单的问题变得复杂起来。

在这项技术的帮助下——也许曼哈顿软件最终会走上开源道路——Twitter得以利用Cassandra的最终一致性功能外加其它工具通过单一大型系统实现坚实的一致性保障,而这也正是推动社交网络下决心更替存储系统的主要理由。根据我们掌握的情况,曼哈顿的开发工作已经持续了一年以上。

开发人员可以在从曼哈顿中读取或者向其写入的过程中选择数据一致性级别,从而通过创建新服务的方式在可用性(即如何快速实现访问)与一致性(即如何确保查询结果的准确性)之间找到平衡点。

有鉴于此,Twitter的程序员们能够访问“高一致性服务”,它会将一致性算法与副本日志结合起来、从而确保事件按照实际顺序对副本产生影响。

到目前为止,Twitter已经推出了LOCAL_CAS(单一数据中心内部的高一致性)与GLOBAL_CAS(跨越多个设施间的高一致性)。它们将“在应用程序以及数据建模方面采取不同的平衡点选取方式,”Twitter在一篇讨论曼哈顿项目的博文中指出。

让我们更进一步

该系统当中的数据会被保存在三套不同的系统当中:seadb是一种只读型文件格式,sstable是一种面向高强度写入工作负载的日志结构型合并树,而btree则是一种重读取而轻写入的系统。曼哈顿项目的“Core”系统随后会决定要把信息保存在磁盘、内在或者是固态硬盘(简称SSD)当中。

曼哈顿项目可以将输入数据匹配为最合适的格式。举例来说,Hadoop工作负载的输出内容会以Hadoop文件系统的形式导入到曼哈顿当中,而后者则将其转换成seadb文件格式“从而利用速度更快的SSD或者内存机制将其进一步导入至集群当中,”Twitter方面解释道。

该数据库支持多租户机制并包含自有速率限制服务,从而避免Twitter开发者们的海量请求将系统彻底淹没。这些系统被打包成前端,这样工程技术人员就可以访问这套“自助式”存储系统了,Twitter解释道。

“工程技术人员能够针对其应用程序的具体需求进行配置(例如存储规模乃至每秒查询数量等等)并在几秒钟之内开始使用其存储功能,而且完全不必等待硬件安装或者模式设置过程,”Twitter在文中对该系统作出这样的描述。

Twitter已经计划在未来发布一份用于概述该技术的白皮书,甚至很有可能将该数据库项目推向开源。当然,开源工作在短时间内还无法完成,因为一位前任Twitter工程师曾在一篇博文的在线留言板中表示:“这套数据库中包含大量运作部件以及内部集成机制,因此将其转为开源还有很多工作要做。”

下一布计划?打造次级索引

根据我们了解到的情况,在未来的开发工作中,该公司将把工作重心放在次级索引机制的缔造上。

次级索引机制允许开发人员向数据库索引中添加一套额外键,从而显著提升开发者在浏览并查询大规模数据集时的速度表现。

举例来说,Amazon Web Services的主力方案DynamoDB就以localglobal(多数据中心)两种格式实现了这一技术。

通过向曼哈顿数据库内添加次级索引,Twitter为其开发者赋予了面向超大规模数据集编写复杂查询的能力,这套索引机制将被保存在内存当中。

这意味着,假如Twitter的商业团队希望建立起一套速度出众的广告系统,则可以从多种不同因素出发、以更低的成本与远超以往的灵活性向用户呈现出近实时广告内容。

要想提供更等级、针对性进一步细化的广告内容呈现效果,次级索引这类系统可谓至关重要;而这类技术也将成为Twitter实现商业化运营的重要武器。

不过技术挑战也仍然存在:次级索引初期只能实现单一数据中心内部的一致性保障,这是因为全局次级索引对计算量要求过高、暂时还无法实现。

来源:ZDNet存储频道(编译)

0赞

好文章,需要你的鼓励

2014

04/08

11:10

分享

点赞

邮件订阅
白皮书