張代釗 王東 王強 萬佳欣 熊林 周輝
摘要:家庭是孩子最直接受教育的地方,父母需要懂得深厚的知識和道理來為孩子的前程掌好舵,準父母有必要獲得“合格父母”上崗證。該文旨在設計與實現了一個專為父母人群提供付費視頻學習、試題測驗等能幫助其獲得“合格父母”認證的學習平臺。該平臺前端使用Vue.js搭建,后端使用Spring Boot+Spring Cloud+Mybatis-Plus等技術進行開發(fā),從系統(tǒng)調試和試運行情況看,平臺具有實用、可維護、可分布式部署等優(yōu)勢。
關鍵詞:SpringCloud;微服務架構;Vue;大數據;準父母
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)30-0001-03
開放科學(資源服務)標識碼(OSID):
1 背景
隨著信息化、數字化時代的到來,網絡應用已觸及生活的每個角落,為人類的生活帶來了很多便利。與此同時,人們也更容易接觸到網絡中的不良信息。尤其是小孩,他們會更加容易受到網絡不良信息的影響,因此,這個時代的父母對孩子的成長引導顯得比以往更加重要。然而,年輕的父母們往往是缺乏育兒經驗的,如果不具備教育孩子的相應知識就結婚生子,必然會對孩子的健康成長產生不利影響。因此,該文設計和實現了一個5G時代下“合格父母”資格認證學習平臺,為準父母人群提供全面的育兒課程推薦、視頻課程教學、習題練習、教育經驗分享和討論服務;也為擁有豐富教育經驗的講師,提供一個可發(fā)布付費視頻從中獲取利益的平臺。該平臺的建立和應用,必將提升準父母人群在家庭教育方面的素養(yǎng),促進未成年人的健康發(fā)展。接下來,該文將從需求分析、系統(tǒng)設計、系統(tǒng)實現幾方面對平臺的設計與實現過程進行詳細討論。
2 需求分析
2.1 前臺功能需求
用戶未登錄時,是以游客的視角進行網站的訪問,可以簡單地瀏覽網站首頁的相關信息,比如廣告信息、熱門課程信息、熱門講師信息等。在課程列表,用戶可以通過設置類別、瀏覽數、購買人數、收藏數等參數來對課程進行查看,或直接在搜索欄搜索查找;在講師列表,可以通過設置瀏覽數、關注數等參數進行查看。點擊課程封面或講師頭像可進入對應的詳情頁面,包含了該課程的簡介、課程大綱、評論或者該講師的教育經歷、教育資質和創(chuàng)作的視頻等信息。
用戶在通過驗證并登錄該平臺后,成為該平臺的正式用戶,擁有了前臺全部功能的使用權限。在游客原有的前臺操作權限的基礎上,可以在課程的詳情頁中進行評論、收藏、購買、視頻學習、題庫練習等操作;在講師的詳情頁中進行私信、關注等操作。正式用戶有個人中心模塊的操作權限,可以修改個人基本信息、查看關注列表、查看購買課程列表、申請加入講師、回復他人私信等。
2.2 后臺管理功能需求
講師需要擁有以下權限:1)可以對自己創(chuàng)建的課程進行查看、添加、修改和刪除等操作;2)可以對自己每個課程對應的題庫進行查看、添加、修改和刪除等操作。
管理員需要擁有以下權限:1)可以對正式用戶提出的講師申請和講師發(fā)布的視頻進行審核的操作;2)可以對課程進行查看、添加、修改、上架和下架等操作;3)可以查看、添加、修改、刪除課程分類。4)可以對課程對應的題庫進行查看、添加、修改、刪除等操作;5)可以添加、修改、查看、刪除講師賬號信息等操作;6)可以對前臺頁面的廣告、熱門課程和熱門講師等信息的修改。
超級管理員擁有管理員的全部操作權限,除此之外還需要擁有以下權限:1)可以對系統(tǒng)的管理員賬號進行添加、刪除等管理操作;2)可以對管理員賬號添加后臺操作權限、刪除后臺操作權限等操作。
系統(tǒng)由準父母用戶、講師、管理員、超級管理員四種角色共同參與系統(tǒng)的操作。角色用例圖如圖1所示。
3 系統(tǒng)設計
3.1 系統(tǒng)功能結構設計
系統(tǒng)主要分為前臺顯示和后臺管理兩大模塊。前臺系統(tǒng)的功能模塊主要有首頁信息、課程信息、講師信息、練習題信息、登錄注冊、個人中心等;后臺管理系統(tǒng)的功能模塊主要有權限管理、講師管理、課程管理、題庫管理、廣告管理等。系統(tǒng)的功能結構如圖2所示。
3.2 數據庫設計
根據功能的需求分析,該系統(tǒng)使用MySQL關系型數據庫來對大多數表和字段進行設計,使用MongoDB非關系型數據庫來對題庫進行表和字段的設計。在設計數據庫表的字段長度時,需要根據實際需求對表中的字段長度進行設置,要充分考慮各個字段的長度,尤其是數字類型字段和文本類型的字段[1]。在數據庫設計過程中,確定合適的外鍵和主鍵尤為重要,主鍵是每個表的唯一標識,表與表之間采用外鍵進行聯系[2]。系統(tǒng)數據庫中主要表包括:用戶信息表、講師表、課程表、課程類別表、章節(jié)表、訂單表、題庫表、父評論表、子評論表、視頻表、權限表等。部分數據表之間的關系如圖3所示。
4 系統(tǒng)實現
4.1 系統(tǒng)關鍵技術
該系統(tǒng)采用B/S結構,前端的前臺頁面采用基于Vue.js的Nuxt.js框架,該前端框架有強大的模塊化體系結構;前端的后臺頁面則采用Vue+ElementUI框架,是一個美觀、方便的后臺管理框架。后端是基于Java實現微服務開發(fā)的主流框架Spring Cloud+Spring Boot,Spring Cloud是一系列框架的集合;其中的服務注冊發(fā)現、服務日志、負載均衡、請求限流、服務容錯與服務配置等功能[3],都可以基于Spring Boot框架的開發(fā)特性去實現簡單啟用和部署。數據庫使用MySQL關系型數據庫、Redis和MongoDB非關系型數據庫來進行數據的存儲。為了應對大數據時代的到來,部分課程數據上傳到HDFS分布式文件系統(tǒng),以便后續(xù)Hadoop集群進行MapReduce任務的數據處理與分析。最后選取MyBatis-Plus框架作為主要的持久層的框架[4]。
4.2 系統(tǒng)主要模塊實現
5G時代下“合格父母”資格認證學習平臺系統(tǒng)采用Spring Cloud+MySQL+Redis+MongoDB+Hadoop的微服務架構方式進行搭建。每個服務都會通過Spring Cloud Feign,使用HTTP協(xié)議進行遠程服務的請求和調用,用戶的請求由Spring Cloud Ribbon組件來實現負載平衡。當前端進行服務接口的請求時,由Gateway網關為微服務架構提供簡單、有效且統(tǒng)一的API路由管理方式[5]。在分布式系統(tǒng)中部署的服務,由Spring Cloud Hystrix來提供服務隔離、故障恢復等容錯功能;最后采用 Nacos 作為服務發(fā)現和配置中心的微服務管理平臺,完成項目簡單的配置和維護。
根據業(yè)務需求和系統(tǒng)具體實現,系統(tǒng)分為八個微服務,分別是權限服務、課程講師服務、題庫服務、郵件服務、訂單服務、用戶服務、視頻存儲服務和圖像存儲服務。每個模塊的功能由單個或多個服務的調用來實現。系統(tǒng)中每個模塊都按照高內聚,低耦合的思想,使系統(tǒng)擁有高度可擴展性[6]。由于篇幅限制,只介紹該平臺具有代表性的三個模塊的實現。
1)注冊登錄模塊
游客用戶想要獲取前臺更多的操作權限,必須進行正式用戶的注冊與登錄。在用戶注冊頁面,調用郵件服務,由spring-boot-starter-mail實現發(fā)送注冊驗證碼的功能;后端使用Redis緩存存儲注冊驗證碼,來對用戶的注冊提交進行計時驗證。
登錄則采用SSO單點登錄,一處登錄處處登錄。登錄成功后,后端會按照規(guī)則由登錄的用戶信息加密生成一串Token字符串,把該Token字符串以鍵值對的方式存入Redis,并將Token字符串返回給前端,在前端獲取到該字符串后立刻存入Cookie;當進入其他需要用戶驗證的模塊時,直接從Cookie中取出Token字符串,然后調用后端對應的接口,根據Token值獲取用戶信息來實現用戶驗證及登錄,如果在Redis中沒有查詢到該Token值或者時間失效,就返回給前端驗證失敗的信息,強制其重新回到登錄頁面進行登錄。具體實現流程如圖4所示。
2)課程管理模塊
課程管理模塊主要實現了對課程分類、課程詳情、課程章節(jié)、課程列表的管理。
①在添加新的課程分類時,由后端的MultipartFile對象實現Excel文件的上傳,使用阿里巴巴開源的EasyExcel工具來進行文件信息的讀取和存儲。Easy Excel工具對數據進行按行讀取,逐個分析,這種讀取數據的方式造就了Easy Excel使用簡單、節(jié)省內存的特點,是excel數據處理得力助手[7]。這種特性使程序開發(fā)更加簡單方便。
②課程詳情中包含課程標題、課程分類、課程講師、總課時、課程簡介和課程封面等信息,課程的添加和修改都由同一頁面進行數據顯示,修改操作時的數據回顯,由前端的路由進行判斷。對于課程封面圖片的存儲,需要調用圖像存儲微服務的接口,使用阿里云OSS云存儲來進行保存,解決了大數據存儲與擴展的難題。為了課程簡介內容顯示出更多豐富的格式,前端使用Tinymce可視化HTML編輯器,該富文本編輯器樣式好看、插件多、滿足本系統(tǒng)的各種基本編輯顯示需求。
③課程章節(jié)中,實現了對章節(jié)、小節(jié)的insert、update和delete操作。每小節(jié)包含課時標題、課時排序、是否免費、視頻等信息;調用視頻存儲微服務下的接口,由阿里云提供的視頻點播服務來實現視頻云存儲。
④課程列表中,為管理員或講師分頁展示了課程信息,實現了對course課程表的select、insert、update和delete操作??筛鶕n程名稱、課程狀態(tài)、課程添加時間來進行課程的排序查詢,方便管理員和講師對課程進行管理。當刪除課程時,和課程表相關聯的chapter章節(jié)表、comment_son評論子表、comment_father評論父表等,需根據外鍵course_id字段進行相關信息的刪除。
3)課程信息模塊
課程信息模塊主要實現了課程搜索、課程評論、課程播放、課程購買等功能。
①在前臺課程展示列表中,課程共有兩個類別,第一分類是準父親的職業(yè)類別,第二分類是準母親的職業(yè)類別。用戶可根據自身需求點擊課程分類的進行查看;或者點擊最新上架、銷量、價格按鈕對課程進行排序查看,后端則根據前端操作對應的gmt_create、buy_count、price字段在course課程表進行SQL語句的查詢篩選,最后分頁顯示出每個課程的封面、課程名、學習人數、評論數等信息。由于現在處于5G大數據時代,大數據技術的使用是必不可少的,課程搜索推薦功能由Hadoop集群實現,進行大數據集的處理與分析。當用戶根據關鍵字進行課程搜索時,后臺調用接口并提交MapReduce任務,從HDFS分布式文件系統(tǒng)讀取備份的課程簡介和標題等數據信息,用MapReduce實現TF-IDF算法進行大數據集的數據挖掘,挖掘出與用戶搜索關聯度高的課程對其進行推薦。
②在課程詳情頁,可以瀏覽其他用戶或講師對該課程的評論、回復。在每個子級評論表中,會包含該評論最外層的評論的id、評論用戶的id、被評論的評論id等信息,其中把被評論的評論id作為外鍵,使每個評論之間具有從屬關系,在子級評論區(qū)根據評論用戶昵稱、被評論用戶的昵稱和評論的時間來區(qū)分每個評論間的回復關系。
③在課程詳情頁,每節(jié)課程是否收費由講師來設置,用戶可點擊免費視頻或者購買的課程視頻進行視頻播放學習。在阿里云提供的視頻點播服務對應的aliyuncs包中,后端根據用戶點擊的視頻id,調用視頻存儲微服務下的接口,創(chuàng)建獲取視頻憑證的DefaultAcsClient請求對象和GetVideoPlayAuthResponse請求返回對象,最后返回給前端一個視頻播放憑證碼。前端使用ApsaraVideo Player SDK阿里云播放器對視頻進行加密播放、安全下載、清晰度切換等功能操作,為用戶提供簡單、快速、安全、穩(wěn)定的視頻播放服務[8]。
④用戶可購買自己想學習的視頻,購買后可解鎖視頻播放和習題練習等相關功能。當用戶點擊課程購買,后端會根據課程id和保存在Cookie中的用戶Token值生成唯一訂單并插入訂單表,在用戶確認訂單信息后,使用vue-cli腳手架的vue-qriously組件來根據訂單信息生成購買二維碼,同時前端設置計時器,每3秒對訂單微服務發(fā)起請求,查詢該訂單狀態(tài)是否已支付,支付成功后銷毀計時器并跳轉到課程視頻播放頁面。
5 結束語
該文設計并實現了一個5G時代下“合格父母”資格認證學習平臺,該平臺為準父母用戶提供了視頻學習、習題練習、評論互動等服務,目的是幫助其獲得更多優(yōu)質的家庭教育知識;也為擁有豐富未成年人教育經驗和政治思想教育經驗的視頻創(chuàng)作者提供一個可以投稿付費視頻的平臺。目前平臺已按預定需求完成設計與開發(fā),但仍有許多不足的地方需要完善,下一步重點是充實平臺的內容和資源。
參考文獻:
[1] 鄭開濤.農產品質量安全追溯多方平臺的研究與設計[D].北京:中國農業(yè)科學院,2018.
[2] 彭榮坤.電動汽車無線充電信息監(jiān)控與管理軟件系統(tǒng)設計[D].哈爾濱:哈爾濱工業(yè)大學,2020.
[3] 馮志勇,徐硯偉,薛霄,等.微服務技術發(fā)展的現狀與展望[J].計算機研究與發(fā)展,2020,57(5):1103-1122.
[4] 洪柏樺,毛文琪,瞿少成.一種基于微服務架構的在線教育平臺設計與實現[J].電腦知識與技術,2021,17(4):10-12.
[5] 張斌,任富彬,沈煒.基于SpringCloud的食品安全溯源系統(tǒng)的設計與實現[J].軟件工程,2019,22(8):27-30.
[6] 馬文藝,徐文欣.微服務架構Saa S多租戶校園管理平臺[J].電子世界,2021(10):150-151.
[7] 趙守才,楊校慶.基于SSM的線上考試系統(tǒng)[J].電子技術與軟件工程,2021(3):220-221.
[8] 陳思慧.多校區(qū)間網絡視頻直播系統(tǒng)解決方案[J].現代計算機,2013(16):65-69.
【通聯編輯:謝媛媛】