听完京东的存储故事,让我们再来看看“猫狗大战”的另一方——阿里。花名“缪长风 ”的阿里巴巴高级工程师刘林豆与我们分享了阿里分布式结构化存储的发展历程。
开放结构化数据服务(OpenTableService,OTS)是构建在阿里云飞天分布式系统上的NoSQL数据库服务,提供海量结构化数据的存储和实时访问。OTS以实例和表的形式组织数据,通过数据分片和负载均衡技术,实现规模上的无缝扩展。OTS应用在阿里巴巴集团内多个重要的业务场景,每天处理几百亿次请求,数据量达PB级别,目前也已经正式商用对外售卖。
据悉,OTS的产生背景主要是由于用户规模和应用所处理的数据呈现爆炸式增长;服务的高可用性要求;应用的数据库表结构会随着业务的增长而改变;
刘林豆介绍说,传统数据库后台面临以下三个挑战:
1.用户数据的规模和应用所处理的数据规模呈现爆炸式的增长。目前的应用,在互联网的基础上,几千万甚至上亿的用户比较常见。随着用户规模的增长,这些应用所要处理数据的规模和并发量也是会呈指数增长。在这种趋势下,保障应用的性能,访问的体验,这个是非常大的挑战。
2.在大规模用户前提之下,提供一个稳定可靠的后台输出服务,也是一个大挑战。
3.应用的需求随着业务的发展,经常会出现很多的变化,例如用户数据表的列数会动态增加和减少。
而面对这些挑战,阿里OTS的策略是:
1. OTS处理大规模数据。 在OTS的服务里面,表被水平分割成很多数据分区,这些数据分区被自动送到数据节点进行处理,随着业务的发展,一个数据分区变大或者访问越来越多,成为一个热点的时候,系统自动把数据分区分成两个小的,然后再重新进行调度,把它分散到节点,或者新的机器上,达到整个动态能力的扩展。
2. OTS具有高可用的特点。在这样一个系统里面硬件故障是比较普遍一个现象。当一个机器上的处理数据的节点或处理分区的机器发生故障的时候,首先故障被自动侦测,然后机器把失效数据分区移到其他的节点上。为了达到一个高可用特点,除了故障的恢复外,在底层的软件,OTS具有热升级功能,从而确保这些动作对应用不会产生可用性的影响。
3. OTS从容应对表格的SCHEMA动态变化。每一行的属性列,都可以在程序运行过程当中动态增加和动态删除。 这样就做到了对属性列数据要求没有限制,而实际上是使用非常巨大的宽表模型实现。
4. 存储在OTS的数据本身是安全可靠的。首先数据会统一存储在底层分布式的文件系统,分布式文件系统会保证每个数据有多份的拷贝,当拷贝丢失或者损害的时候,系统会自动检测并恢复。其次,每个数据在OTS里面每个是隔离的,这样保证用户的数据是安全可靠的。全托管的服务对用户来讲非常简便,不需要运维。
在刘林豆看来,OTS用户最适合于以下几种场景:
第一,比如移动互联网类的服务,当应用承载的用户基数增大,甚至有上亿用户访问时,这时我们第一个想到就是OTS可以解决这个问题。
第二,今天也有很多企业使用开源的方案自己建立类似的数据库,这个过程非常痛苦,而且成本很高,因为要维护硬件,处理版本升级,甚至有时要在线处理故障。这个场景OTS也可以满足要求,只要把应用的逻辑处理好,服务层面只要交给OTS就可以保障服务的可用性了。