一、 POLARDB产品架构简介
POLARDB是阿里云数据库团队研发的基于第三代云计算架构下的商用关系型云数据库产品,实现100%向下兼容MySQL5.6的同时,支持单库容量扩展至上百TB以及计算引擎能力及存储能力的秒级扩展能力,对比MySQL有6倍性能提升及相对于商业数据库实现大幅度降低成本。
第三代分布式共享存储架构究竟有什么优势?
图为POLARDB的第三代分布式共享存储架构
首先,受益于第三代分布式共享存储架构,使POLARDB实现了计算节点(主要做SQL解析以及存储引擎计算的服务器)与存储节点(主要做数据块存储,数据库快照的服务器)的分离,提供了即时生效的可扩展能力和运维能力。
众所周知,在传统数据库上做扩容、备份和迁移等操作,花费的时间和数据库的容量成正比,往往上TB的数据库容量加个只读副本就需要一到两天时间。POLARDB的存储容量可以实现无缝扩展,不管数据量有多大,2分钟内即可实现只读副本扩容,1分钟内即可实现全量备份,为企业的快速业务发展提供了弹性扩展能力。
其次,与传统云数据库一个实例一份数据拷贝不同,POLARDB同一个实例的所有节点(包括读写节点和只读节点)都实现访问存储节点上的同一份数据,使得POLARDB的数据备份耗时实现秒级响应。(备份时间与底层数据量无关)
最后,借助优秀的RDMA网络以及最新的块存储技术,实现服务器宕机后无需搬运数据重启进程即可服务,满足了互联网环境下企业对数据库服务器高可用的需求。
二、为什么POLARDB能做到6倍于MySQL的性能?
这里我们将分别以存储性能、计算性能来进行解读诠释。
图为阿里云POLARDB性能全景
1.POLARDB的存储引擎性能优化
持续释放硬件红利
众所周知,关系型数据库是IO密集型的应用,IO性能的提高对数据库的性能提升至关重要。过去十年我们看到在数据库领域,SSD替换HDD的过程给数据库数据处理的吞吐能力带来了数量级的提升。
POLARDB采用了领先的硬件技术:包括使用3DXpoint存储介质的Optane存储卡、NVMeSSD和RoCE RDMA网络。同时面向新硬件架构实现软硬一体优化:从数据库、文件系统到网络通讯协议、分布式存储系统和设备驱动,POLARDB实现纵贯软件栈各层次的整个IO链条的深度优化。
为了将3DXpoint颗粒的高性能和3D NAND颗粒的低成本结合起来,POLARDB创新的在软件层实现对高速的Optane卡和大容量高吞吐的NVMeSSD进行组合,实现一个名为混合存储层。既保证数据写入的低延迟、高吞吐、高QoS,又使整体方案兼具较高的性价比。
旁路内核,榨干硬件能力
在POLARDB里,为了追求更高的性能、更低的延迟,阿里云数据库团队大胆的抛弃了Linux内核提供的各种机制,比如块设备、各种文件系统例如ext4,以及TCP/IP协议栈和socket编程接口而选择了另起炉灶。最终,POLARDB实现了一整套在用户态运行的IO和网络协议栈。
POLARDB用户态协议栈解决了内核IO协议栈慢的问题。用户程序在用户态直接通过DMA操作硬件设备,通过轮询的方式监听硬件设备完成IO事件,消除了上下文切换和中断的开销。用户程序还可以将IO处理线程和cpu进行一一映射,每个IO处理线程独占CPU,相互之间处理不同的IO请求,绑定不同的IO设备硬件队列,一个IO请求生命周期从头到尾都在一个线程一颗CPU上处理,不需要锁进行互斥。这种技术实现最大化的和高速设备进行性能交互,实现一颗CPU达每秒约20万次IO处理的能力,并且保持线性的扩展能力,也就意味着4颗CPU可以达到每秒80万次IO处理的能力,在性能和经济型上远高于内核。
网络也是类似的情况。过去传统的以太网,网卡发一个报文到另一台机器,中间通过一跳交换机,大概需要一百到两百微秒。POLARDB支持ROCE以太网,应用程序通过RDMA网络,直接将本机的内存写入另一台机器的内存地址,或者从另一台机器的内存读一块数据到本机,中间的通讯协议编解码、重传机制都由RDMA网卡来完成,不需要CPU参与,使性能获得极大提升,传输一个4k大小报文只需要6、7微秒的时间。如同内核的IO协议栈跟不上高速存储设备能力,再一次的,内核的TCP/IP协议栈跟不上高速网络设备能力,被POLARDB的用户态网络协议栈代替。