120万人同时在线考试,这么大的流量如何支撑

云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

 

image

三月原本是全国各地中小学生逐步开启新学期的日子,但这场突如其来的疫情使得1.8亿中小学生只能纷纷在家开启“停课不停学”的学习生活,线上教育也顺势成为了这一特殊时期首选的学习方式。

但突如其来的流量洪峰,却让许多线上教育平台力不从心。开学不久,包括学习通、慕课网等在内的多家在线教育平台都出现了“卡顿”和“死机”的情况,“学习通崩了”这一词条一度登上了微博热搜。

 

image

与此同时,阿里云教育领域客户的扩容需求也在飞速增长,其中数据库扩容需求更是十分强烈,阿里云数据库通过分钟级扩容,保障了沪江教育、猿辅导、VIPKID、洋葱学院等多家教育平台的平稳,为学生们构建起了线上战“疫”的防火墙。

猿辅导是国内知名在线教育机构,旗下有猿辅导、猿题库、小猿搜题、小猿口算、斑马英语五款核心在线教育APP,为学生和家长提供在线辅导、拍照答疑、智能题库、自动批改等相关的智能教育服务。

作为K-12在线教育领域的首个独角兽公司,猿辅导在疫情期间非但没有出现卡顿、延迟等问题,反而发起了一场120万学生同时在线的英语模拟考试,系统10分钟内直接出分,并生成智能诊断分析报告。

“为了提升百万人的答题体验,猿辅导对使用的阿里云PolarDB云数据库进行了临时弹性扩容。”猿辅导运维负责人张文治说,他们评估过很多数据库产品,PolarDB性能好,能够通过快速扩容为用户体验提供支持与保障。

01延时、卡顿、高成本,自建方案打不赢这场仗

在线教育行业面临着海量的题库、音视频答题资料、用户数据以及日志等巨大的数据存储需求,这些都对猿辅导后台数据存储和处理能力都提出了严峻的要求。

猿辅导之前采用的是自建数据库的解决方案,在周末或者在线模考的时候,同时在线人数会瞬间激增,原本的自建数据库方案难以应对这样的访问峰值,导致大约三分之一的学生无法正常进入在线考试。而答题的延时也从正常情况下的1秒之内增长到平均5秒,使得学生用户的答题体验急剧下降。

与此同时,猿辅导的用户量每年飞速增长,自建MySQL数据库的CPU利用率已经达到了70%以上。此外,猿辅导的DBA原本由运维人员兼职,但是面对这样纷繁复杂的数据库管理任务,兼职DBA力不从心,而招聘专职DBA却预计会需要每年至少100万的成本。

总之,自建数据库方案难以应对访问峰值,难以满足业务高速发展的需求,并且难以管理,且会增大人力成本等问题,这些都是摆在高速发展的猿辅导面前的巨大挑战。

02技术战“疫”,PolarDB助力猿辅导应对业务高峰

面对上述的诸多挑战,猿辅导基于阿里云PolarDB实现了新的数据库解决方案。猿辅导之所以选用阿里云PolarDB数据库,除了PolarDB数据库具有较高的性能,并且能够与MySQL实现100%兼容之外,更加看重PolarDB的弹性伸缩能力和容量最高可达100T的能力。

🔶PolarDB分钟级弹性能力轻松应对各种业务场景

因为猿辅导的业务特点,用户访问量在平时可以轻松应对,但是在周末以及考试期间达到业务访问的高峰,因此应对数据库问题的主要难点在于用户的高并发访问所造成的读写争用,进而使得I/O较高,而如果一直购买高配置的MySQL数据库,成本难以接受。而猿辅导通过使用阿里云PolarDB,借助其快速弹性的能力,在业务的高峰期临时增加数据库配置和集群规模,与之前的方案相比整体成本大大降低。

 

image

对于猿辅导这样具有明显业务峰值特征的产品而言,最为看重的就是PolarDB的分钟级弹性能力。而在其强大的弹性能力的背后其实是PolarDB存储与计算分离设计。

所谓分离就是计算节点(DB Engine)和存储节点(DB Store)在不同的物理服务器上,任何落地到存储设备的I/O操作均为网络I/O。而且,借助PolarFS经过网络访问PolarStore的测试性能效果基本能够与本地单副本SSD持平。而PolarDB的存储与计算分离的架构,除了可以降低存储成本,保证主备数据强一致、不丢数据之外,还带来了一个巨大的优势,就是让数据库的弹性伸缩变得极为简单、便捷。

 

image

 

阿里云PolarDB分层架构图

正如上图所示,PolarDB采用了分层架构,从上层的代理PolarProxy提供了读写分离、SQL加速等功能,到中间的数据库引擎节点PolarDB构造了一写多读的数据库集群,再到底层的分布式存储PolarStore为上层提供多节点挂载的数据共享,每一层各司其职,共同构建了PolarDB云数据库集群。

从PolarDB产品定义上看,用户购买的节点数和规格大小(比如4核16G)指的是中间这一层PolarDB的配置,上层PolarProxy可以根据PolarDB的配置自适应调整,用户不需购买也不用关心性能和容量。底层PolarStore的容量是自动扩容,只须按照实际使用容量付费。

通常意义的扩展性,一般有纵向(Scale up)和横向(Scale out)和两种方式,纵向是指提升配置,横向是指配置不变,但增加节点。对于数据库来说,都是先纵向,比如4核不够升到8核。但终归会遇到瓶颈,一方面性能提升非线性,跟数据库引擎自身的设计和应用访问模型有关(比如MySQL的多线程设计,如果只有一个session,那么很难体现出多核的优势),另一方面,计算物理服务器配置有上限,存在天花板。因此终极手段还是横向扩展,增加节点数。

 

image

阿里云控制台PolarDB升降配操作示意图

🔶PolarDB的底层技术实现

对于PolarDB而言,其弹性能力可以概括为“横向最多可以到16个节点,纵向最高可到88核,并且存储容量动态扩展,毋须配置”。那么,在这样强大的弹性能力的背后,PolarDB的底层技术究竟是怎样实现的呢?接下来就从纵向、横向两个方面介绍。

纵向扩展(升级/降级配置):得益于存储与计算分离,PolarDB数据库节点的配置可以单独升级或降级,如果当前服务器资源不足,还可以快速地迁移到其他服务器,整个过程目前只需要5-10分钟,中间不需要任何的数据搬迁,只是如果涉及到跨机迁移,未来还可以通过PolarProxy消除升级对业务应用的影响。

因为目前同一集群内的所有节点必须绑定升级,因此PolarDB采用了Rolling Upgrade滚动升级的方式,通过控制升级的节奏、搭配主备切换来进一步减少不可用时间。

同时目前PolarDB新版本将会支持warm buffer pool 功能, 也就是说升级以后, 不需要重新加载buffer pool 的数据, 避免升级重启导致的性能抖动, 是整个升配流程更加的顺滑.横向扩展(增/减节点):由于存储是共享的,因此可以快速增加节点,而不需要任何的数据COPY。整个过程也只需要5-10分钟,如果是增加节点,对业务应用没有任何影响,如果是减少节点,那么仅对落到该节点执行的连接有影响,重新连接即可。

目前在Polar DB 新版本支持warm buffer pool 功能后, 新加入的节点能够迅速提供跟老节点一样的性能, 无需从存储中读取数据就可以有用户最常用的page 的内容, 可以提供更顺滑的体验. 当增加节点之后,PolarProxy可以动态感知并自动加入到读写分离后端的读节点中,对于使用集群访问地址(读写分离地址)连接PolarDB的应用程序可以立马享受到更好的性能和吞吐。

在猿辅导的应用场景中, 答题场景类似于双十一的抢购场景, 老师发布题目, 这个时候, 所有的学生需要同时对一个数据库进行修改. 通过PolarDB 的秒杀场景plugin, 能够增强PolarDB 在大压力情况下的并发能力, 有效解决了突增场景带来写入压力。

03小结

猿辅导将数据库迁移到阿里云PolarDB之后,在业务平峰的时候,能够同时支撑大体量学生在线进行课程学习,并且业务根本不会感觉到压力。而当应对业务高峰的时候,只需要提前一小时进行准备,就能够将业务能力临时提升至足以应对100万学生并发访问的等级。

而且,由于PolarDB数据库资源可以按需弹性伸缩,因此在猿辅导从MySQL迁移到PolarDB之后节省了5个只读库的容量,节省了近70%的数据库费用支出。此外,在线数据库维护工作量能够降低95%,无需资深的专业DBA坐镇,因此大大降低了数据库维护的人力成本。最后,如果从业务维度来看,猿辅导在迁移到PolarDB之后,大大提升了用户体验。

疫情以来,阿里云通过支撑钉钉、优酷、国家中小学网络云平台以及各类社会化教学机构,服务全国近1.8亿中小学生在家上课,成为最大的在线教育类技术服务平台。

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-03-17
本文作者:阿里云数据库
本文来自:“ApsaraDB”,了解相关信息可以关注“ApsaraDB”

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异步懒加载和彻底懒加载

异步懒加载: 彻底懒加载 :

JFrog Container Registry 搭建Docker镜像仓库 (docker 版本)

文章目录1. 镜像拉取2. 创建容器3. 效果验证1. 镜像拉取 docker pull artifactory-jcr:latest2. 创建容器 docker run --name artifactory-jcr \ -d \ -v /app/jfrog/artifactory:/var/opt/jfrog/artifactory \ -p 8081:8081 -p 8082:8082 \ --privilegedtrue \ docker.bintr…

美国AI博士指出,自学Python到底能做什么

我见过市面上很多的 Python 讲解教程和书籍,他们大都这样讲 Python 的:先从 Python 的发展历史开始,介绍 Python 的基本语法规则,Python 的 list, dict, tuple 等数据结构,然后再介绍字符串处理和正则表达式&#xff0…

MySQL实战—更新过程

本文属于个人备忘录,主要是极客时间《MySQL实战45讲》学习笔记。 MySQL实战—更新过程 一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么更新语句又是如何执行? 和查询流程不同的是&…

系列文章:Kubernetes日志采集最佳实践

前言 上一期主要介绍Kubernetes日志输出的一些注意事项,日志输出最终的目的还是做统一的采集和分析。在Kubernetes中,日志采集和普通虚拟机的方式有很大不同,相对实现难度和部署代价也略大,但若使用恰当则比传统方式自动化程度更…

JFrog Container Registry 搭建Docker镜像仓库 (tar.gz 版本)

文章目录1. 下载安装包2. 解压3. 启动软件4. 防火墙5. 效果验证1. 下载安装包 https://www.jfrog.com/ 2. 解压 tar -zxvf jfrog-artifactory-jcr-7.27.10-linux.tar.gz3. 启动软件 前台启动 cd /app/artifactory-jcr-7.27.10/app/bin./artifactory.sh4. 防火墙 关闭防…

智领云荣登“中国大数据企业50强” | 2020大数据产业生态大会盛大召开 智领云斩获多项殊荣

近年来,我国大数据生态环境不断向好,产业发展维持高增长态势,大数据技术在与政府、企业核心业务的融合中,释放出了更多创新活力和应用潜能。 8月27日,2020(第五届)大数据产业生态大会在京隆重召…

性能提升约7倍!Apache Flink 与 Apache Hive 的集成

导读:随着 Flink 在流式计算的应用场景逐渐成熟和流行,如果 Flink 能同时把批量计算的应用场景处理好,就能减少用户在使用 Flink 时开发和维护的成本,并且能够丰富 Flink 的生态。SQL 是批计算中比较常用的工具,所以 Flink 针对于…

日均万亿条数据如何处理?爱奇艺实时计算平台这样做

摘要:本文由爱奇艺大数据服务负责人梁建煌分享,介绍爱奇艺如何基于 Apache Flink 技术打造实时计算平台,并通过业务应用案例分享帮助用户了解 Apache Flink 的技术特点及应用场景。提纲如下: 爱奇艺 Flink 服务现状Flink 改进实时…

进入编译器后,一个函数经历了什么?

来源 | 编程技术宇宙责编 | Carol封图 | CSDN 付费下载自视觉中国我是一个函数我是一个函数,名叫str_upper,我可以把输入的字符串从小写变成大写。不信你看,我长这样:char* str_upper(char* str, int len) {char upper[256];if (l…

docker sonarqube 7.7 sonar-scanner-4.6.2 maven 安装、搭建+实战

文章目录一、docker安装Mysql1. 映射目录2. 赋予权限3. 镜像拉取4. 运行容器5. 查看日志6. 创建数据库二、docker安装sonarqube2.1. 映射目录2.2.赋予权限2.3. 镜像拉取2.4. 运行容器2.5. 查看日志二、中文简体2.1. 版本对照2.2. download2.3. 重启容器三、规则添加3.1. 规则无…

使用CLONE TABLE方式实现同region不同可用区的MaxCompute

该文章主要针对于用户同region不同账户之间的MaxCompute数据迁移方式,属于迁移的方式可以有三种方式,一、添加MaxCompute数据源的方式进行数据迁移(该方式针对多个表配置同步节点较为繁琐);二、使用tunnel方式结合代码…

Fabric中的Transient Data与Private Data

在Hyperledger Fabric中有两个相关的概念:私有数据(Private Data)和暂态数据(Transient Data)。本文提供四个示例程序,分别对应私有数据和暂态数据的四种组合使用方式,并通过观察账本的交易以及…

窃隐私、放高利贷,输入法的骚操作真不少!

来源 | 编程技术宇宙责编 | 李雪敬封图 | CSDN 付费下载自视觉中国光说隐私泄露,人们总觉得似乎离自己很远,然而它早已像一个“地雷”,悄悄埋进了我们的生活中,不是不爆,时候未到。别认为自己只是社会中的一个小透明&a…

快速迁移 Next.js 应用到函数计算

首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源&#xff…

为什么字节跳动、腾讯、阿里都在用Python??

Python 作为一种解释型技术脚本语言,越来越被认可为程序员新时代的风口语言。 无论是刚入门的程序员,还是年薪百万的 BATJ 的技术大牛都无可否认:Python的应用能力是成为一名码农大神的必要项。 而作为Python初学者来讲,最大的问题…

Need to upgrade docker package to 17.06.0+. Docker升级到最新版本

文章目录1. 现象2. 查找3. 在线卸载4. 升级docker5. 重启Docker6. 设置Docker开机自启7. 查看版本背景: 在搭建docker私有仓库的时候出现以下错误,版本太低 1. 现象 Need to upgrade docker package to 17.06.0.2. 查找 查找主机上关于Docker的软件包 …

云数据库RDS基础版的优势及适用场景

云栖号快速入门:【点击查看更多云产品快速入门】 不知道怎么入门?这里分分钟解决新手入门等基础问题,可快速完成产品配置操作! 阿里云的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版的相关信息…

docker Harbor2.3.4 http 搭建镜像仓库

文章目录一、环境准备1. 环境要求2. 节点总览3. 安装docker-compose二、安装harbor2.1. 下载2.2. 解压2.3. 调整配置2.5. 安装 harbor2.6. 效果验证三、Docker开启远程API3.1. 修改配置3.2. 支持http3.3. 重新启动Docker服务3.4. 防火墙管理3.5. 重新启动3.6. 监控状态四、测试…

下一代 IDE:Eclipse Che 究竟有什么奥秘?

来源 | CSDN(ID:CSDNnews)Eclipse Che被Eclipse官方称为下一代IDE,作为老牌的IDE,被其寄予厚望的Eclipse Che到底有什么特点,在这篇文章中我们来一探究竟。开发团队的Kuberentes原生IDEEclipse Che对开发团…