呂翔 羅回彬 陳蔓 陳國俊 丘柏俊 宋家豪



摘要:針對在校學生進行日常練習時只可在PC端的問題,提出了基于微信小程序的在線練習平臺——“題客”。與傳統學習方式不同,該平臺結合數據挖掘技術和微信小程序應用,可以較好地滿足學生靈活做題需求以及方便教師及時掌控學生學習情況。
關鍵詞:分布式系統;微信小程序;在線練習平臺
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)03-0122-03
Abstract: In order to solve the problems that can only be solved on PC during daily practice, an online practice platform based on WeChat was proposed. Different from the traditional way of learning, this platform combines data mining technology and WeChat small program application, which can better meet students' demands for flexible problem solving and facilitate teachers to control students' learning situations in time.
Key words: distributed system; WeChat Mini Program; online practice platform
1 背景
在大數據時代下,教育這個傳統行業也開始越來越多地走向智能化,網絡課堂、線上問答學習模式的興起,使得手機教育系統應運而生,充分利用好手機能夠讓學生們更好地汲取知識。其中,手機在線練習系統在智能教育中扮演著不可或缺的角色,在高校學習知識的過程中,大學生也需要通過課程習題來鞏固知識以及檢驗自己的水平,然而傳統的學習檢驗方法都是通過筆試或是PC的web在線刷題,這種模式受限于時間和場地,不便于教師及時管理,不僅教師無法及時知道學生學習情況,而且也不便于學生學習。
如今,手機以它的便攜性與輕巧性成為每個大學生隨身攜帶的必需物,據調查,比起傳統模式,大學生更愿意通過手機刷題做練習,但是,當前手機應用中并沒有很實用且面向對象為高校老師和學生的做題軟件,針對這些情形,高校可利用面向大學生且使用手機就可以操作的在線練習系統來管理學生學習,以便提升管理質量、促進學生們的學習。
2 平臺設計方案
2.1 系統架構
在此練習平臺研發的過程中,技術上突破了傳統的WEB后臺的架構開發模式,采用了最新的分布式系統架構模式替代,并且在前后端分離開發的基礎上,采用模塊化的微服務模式,具體架構如圖1所示。學生將微信小程序作為入口,而老師端通過WEB瀏覽器可以登錄練習平臺的后臺。此外,以Spring Cloud Gateway作為API網關入口,應用服務器進行數據處理、存儲以及報表統計等等,普通數據存儲在關系型數據庫MySQL中,而需要進行分析挖掘的數據放置Elastic Search非關系數據庫中。為了解決性能瓶頸問題,采用了RabbitMQ消息隊列以及Redis緩存等中間件,并采用Eureka負責服務的注冊與發現,同時采用docker[1]來管理各個部件,以此保證各個模塊在自己的工作區順利完成任務。
2.2 平臺功能模塊
使用在線練習平臺的角色有兩個,分別是學生和老師,學生端通過微信小程序進入該平臺,該角色功能主要由三個模塊組成,分別是答題模塊、班級模塊以及論壇模塊。教師端通過瀏覽器進入該平臺,該平臺由四個模塊組成,分別為題目導入模塊、班級初始化模塊、答題分析模塊以及報表服務模塊。具體功能點如圖2所示。
3 主要技術
3.1 MySql集群機制
為了保證數據庫的可靠性和應用服務器的可靠性,作者采用了主從復制的MySQL集群技術,部署了兩臺MySQL服務器,分別作為主服務器(master)和從服務器(slave),主服務器將更新寫入二進制日志文件,并維護文件的一個索引以跟蹤日志循環。這些日志可以記錄發送到從服務器的更新。當一個從服務器連接主服務器時,它通知主服務器和從服務器在日志中讀取最后一次成功更新的位置。從服務器接收那時起發生的任何更新,然后封鎖并等待主服務器通知新的更新。具體如圖3所示。
3.2 Redis緩存技術
考慮到平臺有許多業務邏輯都有高并發的需求,比如在做題時需要獲取題目,查看排行榜等等業務,數據庫的讀寫操作將成為平臺的瓶頸,作者使用Redis緩存技術并采用主從復制的Redis集群[2]技術來保證其可靠性和高效性,具體如圖4所示。這樣當要從數據庫中讀取數據時,首先都要先查詢Redis中是否存在緩存數據,若有,則直接使用緩存數據,若沒有,才去訪問數據庫,同時將讀取的數據存放到數據庫中。
3.3 RabbitMQ消息隊列
考慮到學生扎堆完成答題任務,需要將數據保存到數據庫中,在應用服務器邏輯處理過程中,如果是多個學生在同一時間提交,會出現超出應用服務器的處理能力的問題,會導致用戶操作得不到反應,這將極大影響用戶體驗。為此,作者采用了RabbitMQ[3]消息隊列技術中的異步Topic轉發模式,如圖5所示。學生只要提交請求,首先會將提交的做題數據保存起來放入消息隊列中,然后應用服務器即可響應用戶,而應用服務器則可以慢慢地從消息隊列中取出數據進行處理。
3.4 Elasticsearch檢索技術
在統計學生成績以及報表服務的時候,需要對答題結果這一張表進行大量檢索,答題結果這張表的每條記錄作為一個學生一道題的做題結果,這意味著這張表中的記錄的增加速度十分迅速,若放在MySQL關系型數據庫中,一段時間之后的檢索速度會有所下降,所以作者采用專門做檢索的Elastic Search[4]來實現這一部分。同時,在MySQL數據庫中的該表用于保存數據,這樣可以保證學生答題情況得到保存的可靠性。所有數據先插入到MySQL數據庫中,在應用服務器中開啟了一個定時任務,每隔一分鐘就會從MySQL數據庫中的答題結果表數據傳輸到Elastic Search中并做好記錄。
@Scheduled(cron = "0 * * * * MON-SAT")
@Override
public void helloScheduled(){
Object data = getDataFromMySQL(); //將數據從數據庫中取出
data = ESService.refreshData(data); //重新編排數據,以適用es
ESService.addResult(data); //將數據保存到es
}
3.5 學生成績數據分析設計
該功能是根據學生平均做題時間與和老師布置任務所答題的正確率來進行劃分,分為四個部分。根據所有答題學生的做題情況計算得出平均做題正確率 [accuracy]和 平均做題時長 [time],同時通過公式 [i=1n(accuracyi-accuracy)2] 和 [i=1n(timei-time)2] 分別計算答題正確率標準差 [σ1] 和答題時長標準差[σ2],由正態分布[5]曲線的面積概率可知 [μ+2σ] 為95.45%([μ]為平均值,[σ]為標準差),我們認為如果某個學生的做題正確率或平均答題時間不在[μ+2σ]的范圍內,則認為該學生做題異常,有掛科的可能。如圖6所示。
4 結束語
基于微信小程序的在線練習系統,是利用微信的普及程度,制作一個無須下載,就可方便使用的在線練習系統,具體實現效果如圖7、圖8所示。與傳統教學管理相比較,教師可以利用該系統上傳題庫、創建班級,這不僅減少了教師批改作業的時間,而且教師通過學生們做題情況及答題質量,利用大數據分析,總結學生的問題所在,促使老師可及時了解學生的學習動向與問題,并在課堂做出相應調整,以此來達到高質量教學以及提高學生學習質量。而學生可以隨時隨地刷題、查看解析以及提問討論,不再受限于時間和地點,此外,排名榜功能也會有助于學生學習興趣的提高,此系統旨在解決在智能時代下如何利用好科技實現課堂、線下一體化。
參考文獻:
[1] 劉鑫的博客.docker容器技術[EB/OL].(2019-05-30)[2019-12-17].https://blog.csdn.net/liuxe1990/article/details/90641973.
[2] Java架構技術分享.Redis.集群管理[EB/OL].(2019-04-19) [2019-12-17].https://blog.csdn.net/weixin_44861409/article/details/89406795.DOI.
[3] 王磊. RabbitMQ系列[EB/OL].(2018-07-06)[2019-12-16].https://www.cnblogs.com/vipstone/p/9275256.html.
[4] zkycaesar.ElasticSearch底層原理淺析[EB/OL].(2018-04-18)[2019-12-15].https://blog.csdn.net/zkyfcx/article/details/79998197.
[5] ClintonZero.正態分布[EB/OL].(2019-01-26)[2019-12-15].https://blog.csdn.net/Dulpee/article/details/86662035.
【通聯編輯:謝媛媛】