作为世界上使用最广泛的微博客服务,Twitter月活跃用户如今已经达到了2.183亿人,每天大约有5亿条推文被发送,几乎每秒钟就产生了超过6000条推文。
在最初Twitter还没有这么大数据量的时候,该公司主要使用一些主流的技术来处理这些数据,比如开源数据库MySQL和Cassandra等,但随着用户量的飞速扩增,这些技术逐渐显示出了一些瓶颈,已经达不到Twitter实时、低延迟的需求,Twitter工程师也需要花费大量的时间来扩展这些产品。因此,基于目前需求及长远考虑,Twitter开发了自己的分布式数据库系统——Manhattan。
Twitter表示,未来该系统可能会开源,该公司还在在官方博客中介绍了该系统的详细信息。下面就来看看。
Twitter目前对于数据库产品的需求(也是Manhattan的特性):
可靠性
可用性
可扩展性
易操作性
低延迟
细粒度的可缩放性
开发人员的工作效率
Twitter在设计Manhattan时主要遵循的原则:
保持核心轻量和简单
能够更快地带来价值
有限考虑多租户、服务质量(QoS)和自助服务
专注于可预测性
存储作为服务,而不仅仅是技术
下面来看看Manhattan的主要特性。Manhattan共分为如下4层:
核心:这是存储系统最关键的部分,需要高度稳定和强大,用来处理异常、一致性、路由、拓扑管理、数据中心区域内/跨区域复制、冲突解决等。核心中的关键组件完全可插拔。
存储引擎:目前有3个内部存储引擎——seadb、sstable、btree
存储服务:在核心基础上构建了更多传统数据库中包含的一些功能,比如:Hadoop数据批量导入、强一致性服务、时间序列计数器服务
接口:用于实现客户与存储系统的交互
来源:ITeye
|
|