本文讲的是改写数据库历史的中国人
数据库好像从来都不是中国人的强项。但转机出现在4年前。
4年前,阿里巴巴宣布向天弘基金注资,成为余额宝的资金管理单位,如今天弘基金管理的资金超过15186亿,蝉联行业第一,改变了整个基金行业的市场格局。
4年前,由蚂蚁金服、腾讯、中国平安等发起成立的互联网保险公司众安保险成立,如今的估值已经超过800亿港元,再过几天就将在香港IPO募集资金超过100亿港币。
是的,互联网正在改变所有行业,同样包括监管最为严格、对数据库要求也最为严格的金融行业。如今,当9月21日阿里云全新一代云数据库产品POLARDB在公开的跑分测试上,读性能超过100万QPS、写性能超过13万TPS,全面超越AWS Aurora站立在世界之巅的时候,在高性能通用数据库这块高地上,第一次有了中国面孔。
契机
众所周知,“IOE”中最难去的是“O”,因为Oracle至今在中国商业交易型数据库市场仍然拥有超过50%的绝对多数市场份额。
而在对交易型数据库要求最严格的金融领域,特别是国有四大行的核心系统,又都是IBM DB2数据库+IBM大型机/小型机的天下。就连DB2的小弟Informix,对国内数据库厂商来说都如获至宝——笔者还记得南大通用CTO在2015年发布基于Informix的GBase 8t的时候,很负责任地说,我们一年能研究透20%就很不错了——那时候,笔者真的有些绝望,看来中国数据库技术真的落后IBM、Oracle二十年!
但是,世事难料,4年前的一天上午,工行在全国多地的柜台、ATM、网银业务出现故障,导致1个多小时的故障。也就是在那个时间点之前不久,众安保险成立、天弘基金管理余额宝,互联网至少已经攻破金融行业的两大领域——保险、证券。
互联网为传统行业带来的不仅仅是商业模式,更重要的是技术革命。
“传统金融是非常保守的,但是互联网总有一个胆大的,比如说这两天IPO的众安保险,第一天就决策把整个系统放在阿里云云数据库上。”阿里云数据库业务资深总监余锋介绍,“虽然几年前我们对金融业务的理解、对稳定性的理解还远远不够,让他吃了很多苦头,但站在今天的业务规模看来,正是因为架构上的领先,才支撑了它的迅速发展。”
如今交易金额已经突破了万亿规模、成为了全球最大货币基金的余额宝,在2013年6月上线之初还是采用传统底层技术架构,但业务在最初短短半个月就增长了14倍,每晚清算的时间迅速从一小时变成通宵达旦。这样的扩张速度,如果采用传统IT的方式扩容,今天单单IT系统的采购费用就会让天弘基金不堪重负。
正是这样的契机,给了阿里云POLARDB数据库成长的机会。
勇气
“我2010年刚来的时候,我们一票人关在小黑屋里,你读一块、我读一块,然后大家来分享一下……然后大概一两年以后,我们把核心数据库给换了……再过一两个月,我们觉得还不错嘛,就开始把我们的能力产品化。”余锋回忆。
其实阿里云的数据库研发是从自家的应用需求开始的,研习成熟商业数据库并开始自研商业交易型数据库,比南大通用早了整整5年,比浪潮早了6年。
原因很简单,因为互联网的高并发,远远超过以往任何一个传统行业的高并发——如果互联网企业像传统行业一样照搬国外成熟的商业数据库和高可靠的小机服务器和存储设备,那么高昂的与日俱增的IT成本,会让这些依靠风投度日的互联网企业很可能永远也等不到盈利的那一天。
阿里云数据库掌门余锋
“POLARDB的研发始于3年前。我们是通过在一个主库下创建更多的存储节点,让存储节点承担负载压力来解决问题的。”余锋所说的其实就是第三代分布式共享存储架构POLARSTORE,他解释说,“因为过去在传统架构体系下,创建读库需要数据复制的过程,10TB数据即便用最高速的网络跑,都需要70个小时。我们采用了共享存储架构——因为数据不需要再搬动,很多事情变得非常简单。”
但共享存储架构说起来简单,实际上背后却非常复杂。据说有个从来都是主动追着产品经理要任务的研发同学,这次负责POLARDB的售卖系统也经常被搞得抓狂,因为POLARDB的弹性售卖接入实在是太复杂了,经常一天编程测试下来,有几十个bug要解。但最终,一个个bug都被攻克下来,这需要的不仅仅是坚持,更需要勇气。
另一位研发同学负责做PFS,需要验证创建POLARDB实例的全链路功能,就必须搞定分布式文件系统,但阿里云当时在PFS上的积累并不深,大家心里都没底,于是准备了备选的NFS方案。没想到这位同学带着两三个实习生,只花了两三周时间就把硬骨头给啃下来了,按照计划完成了创建主实例和只读实例的任务。
到如今,余锋现场演示的主实例创建、数据库加压、创建只读存储节点、压力被存储节点分担的整个过程只需要3分钟时间。从传统架构70小时,到今天的3分钟,得益于共享存储的架构。而这,如今已经是经过实践证明的低成本解决方案。
”我觉得阿里云工程师团队特别不容易的一点,就是只要今天有这样一个契机,整个团队就有这样的勇气去克服任何困难。”余锋由衷地说道,“他们大多非常年轻,也非常拼命,愿意去花时间去琢磨。所以我其实蛮为这个团队自豪的。”
极致
其实,POLARDB的原理并不复杂。阿里云数据库产品总负责人张云杨介绍说,POLARDB其实就是采用了一种计算和存储分离的架构——DB运行在计算节点,计算节点组成了一个计算资源池;数据都放在存储节点上,存储节点组成了一个存储资源池。
如果CPU和内存不够了,就扩充计算资源池;如果容量或者IOPS不够了,就扩充存储资源池,两个池子都是按需扩容。而且存储节点和计算节点可以分别向两个方向优化,存储节点会选择低配的CPU和内存,提高存储密度,而计算节点可以选择小容量、低配的SSD作为操作系统和日志盘,上多路服务器增加CPU的核数。
众所周知,关系型数据库是IO密集型的应用,IO性能的提高对数据库的性能提升至关重要。在POLARDB里,为了追求更高的性能、更低的延迟,阿里云数据库团队大胆抛弃了Linux内核提供的各种机制,比如块设备、各种文件系统例如ext4、TCP/IP协议栈和socket编程接口等,而选择了另起炉灶。最终,POLARDB实现了一整套在用户态运行的IO和网络协议栈。
比如,POLARDB用户态协议栈解决了内核IO协议栈慢的问题。这种技术实现最大化的和高速设备进行性能交互,实现一颗CPU达每秒约20万次IO处理的能力,并且保持线性的扩展能力,也就意味着4颗CPU可以达到每秒80万次IO处理的能力,在性能和经济型上远高于内核。
网络也是类似的情况。过去传统的以太网,网卡发一个报文到另一台机器,中间通过一跳交换机,大概需要一百到两百微秒。POLARDB支持ROCE以太网,应用程序通过RDMA网络,直接将本机的内存写入另一台机器的内存地址,或者从另一台机器的内存读一块数据到本机,中间的通讯协议编解码、重传机制都由RDMA网卡来完成,不需要CPU参与,使性能获得极大提升,传输一个4k大小报文只需要6、7微秒的时间。
如同内核的IO协议栈跟不上高速存储设备能力,再一次的,内核的TCP/IP协议栈跟不上高速网络设备能力,被POLARDB的用户态网络协议栈代替。这让POLARDB完成了6倍性能于MySQL的壮举。
不仅如此,得益于分布式共享存储,POLARDB还实现了OLTP(在线事务处理)与OLAP(联机分析处理)一体化的数据库系统整体设计。这种HTAP(混合交易/分析处理)数据库实际上代表了企业级数据库的未来,因为它解决了企业核心应用以往难以实时计算分析的难题,不仅与如今声名鹊起的SAP HANA的功能类似,而且在OLTP性能上也不输于Oracle。同时由于分布式共享存储成本的下降,使得POLARDB在价格上得以与RDS看齐。
至此,阿里云数据库家族已完成世界上主流的关系型、键值型、文档型、搜索型、时序型、列式数据库引擎的布局, 形成HybridDB、HiTSDB、OpenSearch等全线数据库产品及工具,领先行业进入第三代可靠性方案,采用三机房强制同步机制,以基础版、高可用版、金融版三大场景实例,护航企业数据安全。
可以说,阿里云数据库改写了商业数据库的历史——基于新的3DXpoint存储介质、NVMe SSD和RDMA网卡等最新的软硬件优化技术,实现了低成本与高性能的突破。在标准场景下,性能是MySQL的6倍、单实例实现100T级存储容量、实现AWS Aurora性能1.2倍的POLARDB,已经成为世界级的云数据库引导者。
据悉,阿里云数据库产品团队将在2017云栖大会上持续发力,
举办8大数据库专场,将技术红利再次深度释放,
并宣布重磅产品升级和开源技术,回馈用户和社区。
此外,还有业内知名的数据库创始人、专家站台演讲。
来源:科技看门道
本文作者: TechGate
本文原标题:改写数据库历史的中国人