
如果没有意外,元宵节过后的2月10号,本应是中国大部分中小学开学的日子,计划将有超过1亿的小学生,4600万的初中生,2400万的高中生返回学校。合计接近1.7亿中小学生,坐在线下的教室里,在老师们的教导下开启新一年的学习。
然而突如其来的新冠肺炎疫情打乱了这一切,开学时间的不确定导致所有正常教学计划受到影响,而此时距离中考和高考仅有不到140天的时间。1.7亿的中小学生加上3~4亿的家长迅速涌入在线学习平台,涌入各科老师们的钉钉直播间。我们知道,中国的家长们是最重视教育的,所以"停课不停学"这个希望就寄托在钉钉等软件提供的家校服务上。
钉钉迅速冲上了AppStore下载榜单的第一位!在线教育与在线办公汇聚起来的流量洪峰冲击着钉钉的业务后台。这股流量洪峰给钉钉后台系统、给数据库带来的冲击不亚于每年的双11。每年双11阿里的程序员们会有半年的准备时间,而这次钉钉业务团队和阿里巴巴的数据库团队只有10天左右的时间对系统进行扩容。
在整个软件系统中,数据库作为所有数据的最终存储目的地,本是最重最难以应对突发流量的单元。但借助于PolarDB-X强劲的性能以及弹性扩缩容能力,钉钉的后台数据库系统迅速扩容准备到位,稳稳承受住了每天早8点的流量洪峰。
企业停工学校放假的春节假期,本是钉钉业务团队以及阿里的数据库技术团队一年中最轻松的几天。
疫情发生后,所有人都预期流量会增长,但涨到多少谁也不知道,必须要早作准备。借助于阿里云提供的弹性基础设施,钉钉业务团队及阿里巴巴的数据库团队通力合作,迅速预备了超过10W台服务器,这其中PolarDB-X分布式数据库系统使用的服务器超过1W台。于是:
1.7亿中小学生需要在线上课,钉钉家校业务首先获得资源加持,家校业务所用的PolarDB-X集群对服务器规格进行升级,升级完成之后高峰期依然有直播卡顿,互动延迟。在调整程序参数缓解问题的同时,继续向家校业务的数据库系统中增加机器,在线不停服务进行进行Scale-Out扩容, 将数据和流量分布到更多的机器上。
几天之内,钉钉活跃用户的增长达到千万级别,存储钉钉业务会话系统和消息系统的PolarDB-X集群写入量达到数百万TPS级别。聊天消息发送,已读/未读状态相继出现延迟,数据库团队迅速增加机器到消息集群的PolarDB-X资源池,有了计算和存储资源助攻的数据库系统很快恢复正常。
作为一个企业IM,聊天记录信息是需要永久保存并支多端漫游, 在流量洪峰下,钉钉的功能没有降级,没有丢弃一条用户的消息,所有消息"应收尽收",这依赖PolarDB-X底层的存储引擎X-Engine所具有的优秀写入性能和存储成本优势。
数据库系统容量不足时,增加服务器远不是把服务器插上网线,接上电那么简单。流量高峰期的在线扩容,需要业务功能不中断,数据不能丢失。PolarDB-X分布式数据库系统作为钉钉业务的底座,完美的打赢了这场遭遇战!
PolarDB分布式版(PolarDB-X)依托于阿里巴巴双十一核心分布式数据库架构,融合分布式SQL引擎DRDS与分布式自研存储X-DB,基于云原生一体化架构设计,是阿里巴巴全新自主研发的分布式关系型数据库,可支撑千万级并发规模及百PB级海量存储,专注解决海量数据存储、超高并发吞吐、大表瓶颈以及复杂计算效率等数据库瓶颈问题。
经历过去IOE,单机MySQL,基于分库分表中间件加MySQL的架构。阿里巴巴数据库技术团队每经历一次痛苦就会为PolarDB-X点亮一颗技能树,超过10年的迭代,最终汇聚出下图所示的分布式数据库系统技能森林!

很难用一句话讲清楚一款分布式数据库所具有的方方面面的能力和特点。唯一能证明一款分布式数据库能力的是其所承载的业务的体量和复杂性以及业务的稳定性。跟随阿里巴巴这颗参天大树一天成长起来的PolarDB-X分布式数据库抗过了历年双11的洪流,经过阿里内外各行业客户的业务洗礼。
阿里巴巴电商业务整个交易链路几乎所有组件的数据存储,包括商品库存,商品订单系统,优惠折扣系统,快递物流等都是由PolarDB-X承担。在双11期间峰值超过日常100倍的流量下,PolarDB-X依然表现如常,保证了所有的客户可以顺利的买买买!

除了电商系统,包括钉钉,菜鸟,盒马,优酷,高德在内的所有阿里系业务都采用了PolarDB-X。在这些千差万别的业务场景中,PolarDB-X的兼容性让业务方不用承担任何负担即可以享受到分布式数据库带来的红利,业务团队可以专注于自身所面对的技术挑战。

经过实际业务锤炼的技术,让PolarDB-X有了应对钉钉流量爆发式增长的实力和底气,消息及时送达,记录一条不丢,PolarDB-X最终的表现可以说不负众望!
PolarDB-X的技术体系不是完整从零构筑起来的,分布式数据库最核心几个模块的技术基础:存储引擎, 分布式SQL引擎,分布式事务引擎等均在阿里内部孵化并演进了很多年,在存储引擎等数个领域已经走到了中国甚至在全世界领先的地位,最终所有这些领先的技术优势结合在一起,融合成一个全自研一体化的分布式数据库PolarDB-X, 下图展示了PolarDB分布式的整体架构:

业界已经有非常多的分布式数据库系统,PolarDB-X的技术特色是什么?我们将从从分布式数据库的几个关键模块的角度,分别讲述PolarDB分布式的核心技术特点。
PolarDB-X使用的存储引擎基座是全自研的X-Engine。其使用了LSM-Tree作为分层存储的架构基础,凭借阿里巴巴多年的技术积累,X-Engine在各个核心模块做出了大量创新性的设计,主要有:

经过完全重新设计的存储引擎X-Engine对比传统存储引擎具有极大的性能和成本优势。这是PolarDB-X领先的技术基础。
关于 X-Engine 的更多技术细节,欢迎大家阅读 X-Engine 团队在 SIGMOD'19 (数据库领域顶级国际会议)SIGMOD(点击可阅读)和 FAST'2020(存储领域顶级国际会议)发表的论文<< X-Engine: An Optimized Storage Engine for Large-scale E-commerce Transaction Processing>>和<<FPGA-Accelerated Compactions for LSM-based Key-Value Store>>。两篇论文均以 open-access 的形式发表,大家可免费下载阅读。
PolarDB-X的SQL引擎包含分布式优化器和分布式执行引擎两个重要模块,其技术基础演进自阿里巴巴耳熟能详的分布式SQL引擎DRDS:



在PolarDB-X诞生之前,业务使用分库分表中间件结合MySQL来达到数据库容量可扩展的目标时,一般选用MySQL XA协议来实现分布式事务的方案. 但是MySQL XA协议的方案有比较多的限制,包括存储节点MySQL自身主备的数据一致性,无法提供高性能的全局一致性读快照等。
PolarDB-X在分布式事务功能上,支持全局一致性快照,对外表现满足MySQL RC/RR/SI隔离级别的语义。其核心技术点包括:

分布式数据库是一个非常复杂的软件系统,PolarDB-X还有非常多的领先技术这里没有涉及,诸如Global Secondary Index,弹性扩缩容等等,我们会在以后的文章里逐一展开讲述。
作为钉钉业务核心基础设施的PolarDB-X分布式数据库的本次表现堪称完美。但是这次整个中国社会的抗"疫"行动,各行各业都在贡献自己的一份力量。而很多事关国计民生的社会基础社会服务的背后,都有PolarDB-X的身影。
保障通信服务的中国联通,保障灾情期间各种援助物资顺利运输的中国邮政以及各种快递企业EMS,德邦物流等,保证供电及能源供应的国家电网中国石化中国石油等, 它们都是PolarDB-X的用户。
所有这些用户的选择是对PolarDB-X能力的最好证明,而PolarDB团队也将继续努力提升性能,增加功能,努力做出中国自主可控世界领先的分布式数据库产品。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3130399/ ,如需转载,请注明出处,否则将追究法律责任。