作者:
阿里云数据库高级技术专家 暴跳
阿里云数据库解决方案架构师 牛远
2月中下旬原本是全国各地春季学期开学的日子,但这场突如其来的疫情使得1.8亿中小学生只能纷纷在家开启“停课不停学”的学习生活,而线上教育也顺势成为了这一特殊时期首选的学习方式。可突如其来的流量洪峰,却让许多线上教育平台力不从心。
就在开学第一天,包括学习通、慕课网等在内的多家在线教育平台都出现了“卡顿”和“死机”的情况,“学习通崩了”这一词条一度登上了微博热搜。与此同时阿里云平台上的教育领域客户的扩容需求也在飞速增长,尤其是数据库扩容需求更是十分强烈。例如沪江教育、猿辅导、VIPKID、洋葱学院等多家在线教育平台均通过分钟级扩容,平稳应对了流量挑战。
细致分析下来,我们发现各种在线教育企业的业务场景其实较为类似,基本上都面临着海量题库、音视频答题资料、用户数据以及日志等巨大的数据存储需求等,统统都对在线企业后台数据存储和处理能力提出了严峻的要求。那作为在线教育企业,面对今天的应用环境,该如何建设IT才能灵活适配业务发展,不掉链子?
本文主要讨论的就是在线教育企业的数据库建设问题。
延时、卡顿、高成本,自建方案打不赢这场仗,上云是最佳选择
阿里云平台上有些在线教育客户之前采用的是自建数据库的解决方案。在企业业务发展初期,数据库可以支撑业务的发展;但是企业发展到一定程度,很快自建数据库的方案开始捉襟见肘。
例如,阿里云的一家大型在线教育客户,在周末或者在线模考的时候同时在线人数会瞬间激增,原本的自建数据库方案难以应对这样的访问峰值,导致很多学生无法正常进入在线考试;而答题的延时也从正常情况下的1秒之内增长到平均5秒,使得学生用户的答题体验急剧下降。与此同时,这家在线教育客户的用户量每年飞速增长,自建MySQL数据库的CPU利用率已经达到了70%以上,招聘专职DBA也导致公司每年产生至少100万以上的成本。总之自建数据库方案难以应对访问峰值,难以满足业务高速发展的需求,并且难以管理,且会增大人力成本等问题,这些都是摆在高速发展的在线教育企业面前的巨大挑战。
面对上述的诸多挑战,这家在线教育企业选择放弃自建IT,整体将业务迁移到阿里云上,核心的数据库选择了阿里云PolarDB。通过充分利用云计算的技术优势,这家在线教育企业实现了IT架构的极大灵活性,不但降低了IT成本,还得以让技术团队专注于业务体验的提升。
此外以猿辅导为例,通过将数据库迁移到阿里云PolarDB之后,在业务平峰的时候,能够同时支撑大体量学生在线进行课程学习,并且业务根本不会感觉到压力;而当应对业务高峰的时候只需要提前一小时进行准备,就能够将业务能力临时提升至足以应对100万学生并发访问的等级。由于PolarDB数据库资源可以按需弹性伸缩,因此在猿辅导从MySQL迁移到PolarDB之后节省了5个只读库的容量,节省了近70%的数据库费用支出。
总体来说,在线数据库维护工作量能够降低95%,无需资深的专业DBA坐镇,因此大大降低了数据库维护的人力成本;如果从业务维度来看,猿辅导在迁移到PolarDB之后大大提升了用户体验。随着云计算技术的进一步成熟,云平台已经成为最佳的业务支撑平台。
数据库分钟级扩容帮助在线教育企业应对业务高峰
在线教育企业中很多的产品或者服务都具备明显业务峰值特征,即在周末以及考试期间会产生业务访问的高峰。
用户的高并发访问所造成的读写争用,进而使得数据库I/O较高,而如果一直购买高配置的MySQL数据库,高昂的成本使得企业难以接受。
在阿里云上,很多在线教育企业通过使用阿里云PolarDB,借助其快速弹性的能力,在业务的高峰期临时增加数据库配置和集群规模,与之前的方案相比整体成本大大降低。一般而言,传统数据库的扩容配置要以天为单位计算,而云数据库则可以实现分钟级的扩容,效率提升数十倍以上;从在线教育企业的反馈来看,之所以选用阿里云PolarDB数据库,除了PolarDB数据库具有较高的性能,并且能够与MySQL实现100%兼容之外更加看重PolarDB的分钟级弹性伸缩能力。
其强大的弹性能力的背后其实是PolarDB存储与计算分离设计。
所谓分离就是计算节点(DB Engine)和存储节点(DB Store)在不同的物理服务器上,任何落地到存储设备的I/O操作均为网络I/O。而且,借助PolarFS经过网络访问PolarStore的测试性能效果基本能够与本地单副本SSD持平;而PolarDB的存储与计算分离的架构,除了可以降低存储成本,保证主备数据强一致、不丢数据之外,还带来了一个巨大的优势,就是让数据库的弹性伸缩变得极为简单、便捷。
正如上图所示,PolarDB采用了分层架构,从上层的代理PolarProxy提供了读写分离、SQL加速等功能,到中间的数据库引擎节点PolarDB构造了一写多读的数据库集群,再到底层的分布式存储PolarStore为上层提供多节点挂载的数据共享,每一层各司其职,共同构建了PolarDB云数据库集群。
通常意义的扩展性一般有纵向(Scale up)和横向(Scale out)和两种方式,纵向是指提升配置,横向是指配置不变,但增加节点。对于PolarDB而言,其弹性能力可以概括为“横向最多可以到16个节点,纵向最高可到88核,并且存储容量动态扩展,毋须配置”,其超强弹性背后的技术实现细节不再赘述,但是数据库具备分钟级的扩容能力,对于在线教育企业而言非常重要,在本次疫情期间也很好地帮在线教育客户应对了流量洪峰。
上云+云数据库是在线教育企业最佳路径
疫情以来,在线教育的需求爆发式增长,但是如果因为IT能力的不足而拖累业务的表现,这是很多在线教育企业最不愿看到的情况;云计算和云数据库等技术是助推在线教育企业快速发展的最佳技术路线。