1.7亿学生涌入钉钉直播间,亿级用户的在线课堂PolarDB-X该如何支撑?

1、病毒引爆的在线教育流量

如果没有意外,元宵节过后的2月10号,本应是中国大部分中小学开学的日子,计划将有超过1亿的小学生,4600万的初中生,2400万的高中生返回学校。合计接近1.7亿中小学生,坐在线下的教室里,在老师们的教导下开启新一年的学习。

然而突如其来的新冠肺炎疫情打乱了这一切,开学时间的不确定导致所有正常教学计划受到影响,而此时距离中考和高考仅有不到140天的时间。1.7亿的中小学生加上3~4亿的家长迅速涌入在线学习平台,涌入各科老师们的钉钉直播间。我们知道,中国的家长们是重视教育的,所以"停课不停学"这个希望就寄托在钉钉等软件提供的家校服务上。

钉钉迅速冲上了AppStore下载榜单的位!在线教育与在线办公汇聚起来的流量洪峰冲击着钉钉的业务后台。这股流量洪峰给钉钉后台系统、给数据库带来的冲击不亚于每年的双11。每年双11阿里的程序员们会有半年的准备时间,而这次钉钉业务团队和阿里巴巴的数据库团队只有10天左右的时间对系统进行扩容。

在整个软件系统中,数据库作为所有数据的终存储目的地,本是重难以应对突发流量的单元。但借助于PolarDB-X强劲的性能以及弹性扩缩容能力,钉钉的后台数据库系统迅速扩容准备到位,稳稳承受住了每天早8点的流量洪峰。

2、生死时速-10天扩容10W台服务器

企业停工学校放假的春节假期,本是钉钉业务团队以及阿里的数据库技术团队一年中轻松的几天。

疫情发生后,所有人都预期流量会增长,但涨到多少谁也不知道,必须要早作准备。借助于阿里云提供的弹性基础设施,钉钉业务团队及阿里巴巴的数据库团队通力合作,迅速预备了超过10W台服务器,这其中PolarDB-X分布式数据库系统使用的服务器超过1W台。于是:

1.7亿中小学生需要在线上课,钉钉家校业务首先获得资源加持,家校业务所用的PolarDB-X集群对服务器规格进行升级,升级完成之后高峰期依然有直播卡顿,互动延迟。在调整程序参数缓解问题的同时,继续向家校业务的数据库系统中增加机器,在线不停服务进行进行Scale-Out扩容, 将数据和流量分布到更多的机器上。

几天之内,钉钉活跃用户的增长达到千万级别,存储钉钉业务会话系统和消息系统的PolarDB-X集群写入量达到数百万TPS级别。聊天消息发送,已读/未读状态相继出现延迟,数据库团队迅速增加机器到消息集群的PolarDB-X资源池,有了计算和存储资源助攻的数据库系统很快恢复正常。

作为一个企业IM,聊天记录信息是需要保存并支多端漫游, 在流量洪峰下,钉钉的功能没有降级,没有丢弃一条用户的消息,所有消息"应收尽收",这依赖PolarDB-X底层的存储引擎X-Engine所具有的写入性能和存储成本优势

数据库系统容量不足时,增加服务器远不是把服务器插上网线,接上电那么简单。流量高峰期的在线扩容,需要业务功能不中断,数据不能丢失。PolarDB-X分布式数据库系统作为钉钉业务的底座,完美的打赢了这场遭遇战!

3、为什么是PolarDB-X

PolarDB分布式版(PolarDB-X)依托于阿里巴巴双十一核心分布式数据库架构,融合分布式SQL引擎DRDS与分布式自研存储X-DB,基于云原生一体化架构设计,是阿里巴巴全新自主研发的分布式关系型数据库,可支撑千万级并发规模及百PB级海量存储,专注解决海量数据存储、超高并发吞吐、大表瓶颈以及复杂计算效率等数据库瓶颈问题。

经历过去IOE,单机MySQL,基于分库分表中间件加MySQL的架构。阿里巴巴数据库技术团队每经历一次痛苦就会为PolarDB-X点亮一颗技能树,超过10年的迭代,终汇聚出下图所示的分布式数据库系统技能森林!

  • 为了高效低成本的处理海量数据我们为PolarDB-X研发了X-Engine存储引擎,并获得国际学术届的认可。
  • 为了让用户不改一行SQL就切到分布式数据库,我们研发了Global Secondary Index功能。
  • 为了保障数据一致性PolarDB-X使用Paxos协议进行节点间数据同步并支持分布式事务。
  • 为了让分布式SQL像单机上跑的那样快,我们研发了分布式SQL引擎并持续演进迭代。

很难用一句话讲清楚一款分布式数据库所具有的方方面面的能力和特点。能证明一款分布式数据库能力的是其所承载的业务的体量和复杂性以及业务的稳定性。跟随阿里巴巴这颗参天大树一天成长起来的PolarDB-X分布式数据库抗过了历年双11的洪流,经过阿里内外各行业客户的业务洗礼。

PolarDB-X是双11背后的分布式数据库

阿里巴巴电商业务整个交易链路几乎所有组件的数据存储,包括商品库存,商品订单系统,优惠折扣系统,快递物流等都是由PolarDB-X承担。在双11期间峰值超过日常100倍的流量下,PolarDB-X依然表现如常,保证了所有的客户可以顺利的买买买!



PolarDB-X是阿里生态体系业务的基石

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


经过实际业务锤炼的技术,让PolarDB-X有了应对钉钉流量爆发式增长的实力和底气,消息及时送达,记录一条不丢,PolarDB-X终的表现可以说不负众望!

4、什么是PolarDB-X?

PolarDB-X的技术体系不是完整从零构筑起来的,分布式数据库核心几个模块的技术基础:存储引擎, 分布式SQL引擎,分布式事务引擎等均在阿里内部孵化并演进了很多年,在存储引擎等数个领域已经走到了中国甚至在全的地位,终所有这些领先的技术优势结合在一起,融合成一个全自研一体化的分布式数据库PolarDB-X, 下图展示了PolarDB分布式的整体架构:

业界已经有非常多的分布式数据库系统,PolarDB-X的技术特色是什么?我们将从从分布式数据库的几个关键模块的角度,分别讲述PolarDB分布式的核心技术特点。

存储引擎X-Engine

PolarDB-X使用的存储引擎基座是全自研的X-Engine。其使用了LSM-Tree作为分层存储的架构基础,凭借阿里巴巴多年的技术积累,X-Engine在各个核心模块做出了大量创新性的设计,主要有:

  • 使用多事务处理队列和事务流水线技术,减少线程上下文切换代价,并通过计算每个阶段任务量配比,使整个流水线充分流转,极大提升事务处理性能,相对于其他类似架构的存储引擎比如RocksDB,X-Engine的事务处理性能有10倍以上提升。
  • X-Engine使用copy-on-write技术,避免原地更新数据页,从而可以对只读数据页面进行紧凑编码以及压缩,相对于传统存储引擎(比如InnoDB)其空间使用效率高2倍以上。
  • 使用数据复用技术减少LSM-tree数据合并的代价,并进一步利用FPGA硬件加速compaction过程,使得系统上限进一步提升。
  • AI驱动的冷热分离算法,提升热点数据内存命中概率的同时,降低对冷数据的压缩或解压带来的算力浪费,终达到性能和成本的双重目标。


经过完全重新设计的存储引擎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 的形式发表,大家可免费下载阅读。

分布式SQL引擎和执行引擎

PolarDB-X的SQL引擎包含分布式优化器和分布式执行引擎两个重要模块,其技术基础演进自阿里巴巴耳熟能详的分布式SQL引擎DRDS:



  • PolarDB-X的SQL优化器经过TDDL到DRDS历代历史产品持续优化,具有非常完备的功能,同时支持基于规则的查询计划优化(RBO)和基于代价的查询计划优化(CBO)。



  • PolarDB-X的分布式执行引擎可以通过并行查询(Parallel Query)技术充分发挥多机多核的执行能力,无论是在TP场景还是AP场景均有非常优异的性能表现。



基于TSO的分布式事务

在PolarDB-X诞生之前,业务使用分库分表中间件结合MySQL来达到数据库容量可扩展的目标时,一般选用MySQL XA协议来实现分布式事务的方案. 但是MySQL XA协议的方案有比较多的限制,包括存储节点MySQL自身主备的数据一致性,无法提供高性能的全局一致性读快照等。

PolarDB-X在分布式事务功能上,支持全局一致性快照,对外表现满足MySQL RC/RR/SI隔离级别的语义。其核心技术点包括:

  • 使用Timestamp Oracle(TSO)的方案来决定不同节点之间事务的先后次序。
  • 使用Paxos协议来对确保同一个分片复制组之间数据的一致性,单节点故障不影响全局分布式事务的结果正确性。
  • 事务执行引擎与X-Engine存储引擎一体化设计, 通过自定义存储节点X-Engine与分布式执行引擎之间的交互协议,PolarDB-X可以以高的执行效能在分布式环境下支持ACID事务。

5、结语

分布式数据库是一个非常复杂的软件系统,PolarDB-X还有非常多的领先技术这里没有涉及,诸如Global Secondary Index,弹性扩缩容等等,我们会在以后的文章里逐一展开讲述。

作为钉钉业务核心基础设施的PolarDB-X分布式数据库的本次表现堪称完美。但是这次整个中国社会的抗"疫"行动,各行各业都在贡献自己的一份力量。而很多事关国计民生的社会基础社会服务的背后,都有PolarDB-X的身影。

保障通信服务的中国联通,保障灾情期间各种援助物资顺利运输的中国邮政以及各种快递企业EMS,德邦物流等,保证供电及能源供应的国家电网中国石化中国石油等, 它们都是PolarDB-X的用户。

所有这些用户的选择是对PolarDB-X能力的好证明,而PolarDB团队也将继续努力提升性能,增加功能,努力做出中国自主可控的分布式数据库产品。

相关文章