浅谈新型教学-“女娲云教室”性能压测
1、背景
为解决线上教学的痛点,我们通过把云桌面技术运用到在线职业教育,自研云端虚拟化技术,创设在线实操课堂,实现边学边练的新型教学模式 —— “女娲云教室”由此诞生。
前面也有文章介绍女娲云教室(叮咚!女娲云开发者团队首次亮相)及相关技术(女娲调度系统浅谈),欢迎溯源查看。
此时,面临一个问题:协议构造难度大,主流的性能测试工具并不能满足压测需要。在无法借助性能工具进行压测的情况下,我们由此思考了自研方案来解决问题。方案详解如下。
2、自研解决方案
回顾学员直播课上课业务场景的实现,让我们眼前一亮,开始思考:或许我们也可以做个类似C/S架构的web服务,通过服务端设计和客户端设计以实现性能压测。
服务端设计,即使用技术 Django restful framework 提供web服务控制;客户端设计,即通过Puppeteer & Selenium技术模拟学员端上课实操场景。
自研解决方案的系统流程图:
1)一键创建直播
我们需要简化创建直播的流程:一键创直播,生成上课链接。在Django服务里面实现手动创建直播的全流程,包括:创建直播课、推送媒体流、关联课中练习、通过调用腾讯云的接口实现应用服务pod扩缩容,并开启日志监控,统一对外提供一个接口。
2)构造批量用户
在实际的课程场景中,学员是通过使用微信或手机号进行授权上课。进行性能压测需要大量的虚拟用户,经过与开发同学沟通,通过改造账户体系,提供批量生成虚拟用户的接口,我们通过接口批量生产虚拟用户,一次可以构造几万用户且永久有效。
3)购买课程
图2.1.1 格式参照图
2.2 客户端设计
我们在腾讯云购买一台虚拟机,安装客户端脚本需要运行的技术环境:chrome浏览器、python和node.js,通过自启动的脚本完成镜像文件的制作,并存放于腾讯云。
自动化脚本有两个版本:
1)Puppeteer版本:使用无头浏览器节约内存和CPU,代码示例如下:
图2.2.1 Puppeteer版本代码示图
2)python版本:使用Selenium,结合UI自动化思路打开浏览器,代码示例如下:
图2.2.2 python版本代码示图
经测试比较,在腾讯云32核64G的虚拟机上打开chrome浏览器,打开数量≤100,Selenium版本相较稳定;打开数量介于100-180之间,则优先考虑Puppeteer版本。而我们在腾讯云购买一台虚拟机就能模拟100-180的用户,进入女娲云教室实操系统。
通过2.1和2.2操作步骤完成性能压测后,如何有效监控多少学员登录女娲云教室进行实操练习?即通过内部自研的服务工作台,能够监控多少学员进入了女娲云教室。
图2.3.1 服务工作台示图
同时,通过应用服务云监控,监控实例的运行情况。
图2.3.2 应用服务监控示图
本文作者:女娲技术团队
------------ END ------------
也许你还想看
|叮咚!女娲云开发者团队首次亮相
|微服务系统SaaS化改造实战
|女娲调度系统浅谈