2020年突如其来的新冠疫情,VIPKID发挥“互联网+教育”的专长,为抗击疫情力所能及地做出一份贡献。积极扩容在线直播系统,全力以赴为学生们提供安全的学习环境,为学校提供便利的授课工具,并保证每一节课程的教学质量,让家长和老师放心,让孩子安心。
由于学校停课,学生和家长转向线上教学,给VIPKID核心业务系统带量激增流量压力,如何快速平滑扩容,应对激增洪峰流量,成为当务之急。
得益于VIPKID将其业务系统构建在腾讯云之上,使用腾讯云对象存储COS做为后台数据存储和数据处理平台。VIPKID使用COS轻松应对激增洪峰流量。
一、背景和需求
VIPKID是全球增长速度最快的在线青少儿英语教育品牌,纯北美外教1对1在线授课,通过互联网的方式将中国小朋友与北美老师连接起来。VIPKID使用对标美国小学课程标准(CCSS:美国共同核心州立标准)的定制课程,运用第二语言高效的教学方法——浸入式教学法,帮助孩子快乐学习。
新冠疫情,让客户业务每天面临着巨大的挑战:
1)每天新增 XXX TB级数据,并永久保存,日积月累,汇集成海量数据;
2)每天XX万人次并发在线上课需求;
为此,客户选择了在腾讯云对象存储COS,实现了业务的超大容量扩展和高性能;
二、技术方案
存储腾讯云COS(Cloud Object Storage),承载客户核心业务存储需求。业务拓扑图如下所示:
录制后台、课件后台、或教师端,将数据上传COS,COS通过加密传输、身份授权等机制保障数据安全接入,COS通过全球加速,智能调度用户请求,就近接入到腾讯云,稳定快速的内网专线网络传输链路代替了不稳定的跨地域的互联网访问链路,提升请求的可用性和速率。
COS无数据格式限制、无容量上限,满足海量数据需求,无需规划容量、无需扩容,按需使用、按用量付费。
COS生命周期管理,自动沉降低频、归档,满足数据永久保存。通过设置生命周期策略、基于时间将指定的文件列表自动沉降低频或归档,大幅节省费用。
COS高并发高性能,满足XX万人次并发在线上课需求。
1)COS无容量上限满足海量存储需求
COS是无目录层次结构、无容量上限的云端存储服务,很好满足VIPKID的激增容量需求。
COS基于扁平式架构来组织对象,没有目录层次结构的束缚,所以,文件数量无上限,轻松扩展到10亿+文件,且性能基本没有降低。对于文件存储是不可想象的,文件存储基于目录树来组织文件,目录深度(目录深度,是指目录树的包含嵌套子目录的层次的数据)和广度(目录广度,目录里所包含文件或子目录的数量)都是有限制,而且随着目录深度和目录广度的攀升,性能将逐步降低,因为,每次IO请求,均要去目录树查找到所要访问的文件,查找所需时间跟目录深度和目录广度呈线性关系,再叠加目录树的修改、多节点并发修改,将会更加糟糕。COS扁平式架构,完美解决目录树耗时查询和并发修改等问题,实现容量无上限。
COS容量无上限,解决存储最普遍的痛点,扩容。正因为扩容的苦楚,每次使用存储之前,精确做容量规划,来避免后续扩容烦恼。但这次突如其来的疫情,提前是很难估计容量需求,COS容量无上限正好解决此痛点。
2)COS高性能满足大量学生同时在线上课需求
COS扁平式架构,基于对象Key来访问对象,Key索引引擎成为高并发的关键设计。
为加速索引引擎的性能,采用分布式架构索引引擎,将索引表打散到多个节点,N节点索引引擎并发工作,性能提升N倍;基于KeyHash功能,KeyHash=/前缀/ { md5(path) % N},即把key打散为N份,将有共同前缀且连续的key打散存储,如下图(N=5)字典序连续的对象名会被打散在不同的hash槽位中。
如此一来,用户连续读写请求,被KeyHash平均分配到N个节点并发处理,性能提升N倍。单带来一个副作用,用户执行list请求时,为满足list请求有序性,需要对N个节点的N份数据做全排序,造成list请求时延增加。
为解决list请求时延增加的问题,采用list多路归并方法。在归并之前,从N个节点返回N*listcount条记录中,算出(end_marker,有效最大值】之间的记录,end_marker,是用户上次访问最大值,有效最大值,是每节点最大值的最小值,即min{ max(每个节点listcount条记录集)} ,大幅降低记录数量,加速归并性能。
更进一步,通过list缓存来加速性能。
拉取N * listcount条记录,首次取前N条返回用户,将剩下的N * (listcount - 1)条记录缓存,以便用户顺序List时,能直接从缓存中获取,这样既降低了底层负载,又加快了请求时延。
缓存时长可自定义,某些场景对索引一致性要求高,加大缓存时间,可由接入方灵活设置。过期删除以会话索引为单位管理,采用FIFO队列管理最早待清理的区间,以便快速定位过期记录。
三、结语
《2018中国在线教育行业白皮书》显示,预计2020年中国在线教育用户规模将达2.96亿人。2020新冠疫情,让学生和家长,从转向线上教育,到习惯线上教育、甚至依赖线上教育。
做好线上教育的助手,为线上教育提供最好的存储平台,这就是腾讯云COS过去做的、正在做的、未来依然坚持做的事情。