?

基于Spring Cloud的系統設計與優化

2021-11-30 15:55廖梓洋曾玉林
科技經濟導刊 2021年24期
關鍵詞:在線視頻分布式架構

廖梓洋,曾玉林

(四川大學錦城學院 計算機與軟件學院,四川 成都 611731)

隨著互聯網的飛速發展,數字經濟時代,大眾學習的個性化需求不斷增強,時間碎片化問題逐漸增多,為在線教育提供了廣闊的發展前景。特別是遭遇近些年的突發狀況,學校以及培訓機構無法進行線下教學,助推了教育行業的線上轉變。但也正是由于大量增長的用戶來使用在線學習服務,導致許多傳統的單體架構的學習系統無法承載突然增長的用戶數量,從而導致了服務器癱瘓。因此,隨著微服務的風靡,我們考慮設計一種微服務架構的在線學習系統。微服務架構具有獨立部署、動態擴展、快速迭代等優勢,可使開發者短時間內構建高可部署性,高可擴展性的應用。

1.微服務架構概述

微服務是一個具有高并發、高擴展、獨立部署等特性的應用,它將復雜的應用系統按照業務劃分,以獨立業務模塊的形式拆解成多個服務單元。微服務架構的出現是互聯網飛速發展的必然結果,是將傳統的單服務架構垂直拆分為若干個微服務,每個微服務都是單獨的模塊,擁有單獨的數據庫與配置等等,并且由于spring Cloud 能異構支持多種語言開發,所以能夠將系統不同的模塊分配交給最佳的技術團隊去完成,然后每個微服務通過Nacos 的注冊中心進行協助,完成一個完整的功能,極大提高了系統完成的效率和質量。

2.系統的設計與實現

2.1 系統的總體框架

在線視頻學習系統是采用Spring Cloud 微服務框架,并且是前后端完全分離式進行開發。該學習系統前端采用Vue.js、Node.js、Element UI、Axios 等技術進行開發環境搭建以及頁面的開發。而后端框架采用的是Spring Cloud、Spring Boot、Mybatis-plus、Swagger、Nacos 等關鍵技術開發。

存儲方面則是運用到了Mysql 數據庫、Redis 緩存、阿里云OSS 以及系統日志等技術來完成,同時可采用Hystrix 斷路器來解決服務響應超時的問題。使用阿里巴巴的Nacos 技術來完成微服務注冊中心、配置中心持久化。隨著前后端都相繼完成開發,最后則是可通過Nginx 反向代理以及Gate Away 網關技術來完成交互。

2.2 系統的功能模塊設計

2.2.1 前臺用戶學習模塊

在線視頻學習系統的前臺學習模塊是面向廣大用戶設計的瀏覽器客戶端,它提供在線視頻播放、相關文章查看、導師問答、留言互動、用戶中心、微信支付與登錄等等服務。同時在性能方面,考慮到瀏覽器客戶端的訪問次數可能會因為運營推廣而日益增加導致服務器壓力過大的情況,可以采取分布式集群部署的方式,引入緩存、負載均衡來解決。

用戶通過微信或者手機號進行注冊,注冊后系統會默認為普通用戶,在使用該系統時會封鎖一些會員功能。當然,用戶可以通過多種途徑來進行升級,一是根據在線學習的時長,二是根據留言互動中正確解答問題的次數,三是直接通過在線充值進行快速升級,而當用戶成為會員時,就會解鎖一系列權限,從而得到更好的用戶體驗。

2.2.2 后臺運營管理模塊

該系統的后端運營管理模塊則是為系統的后臺運營維護人員而設計的,它為運營維護人員提供了如下功能:用戶管理、權限設置、導師管理、數據統計、課程管理、視頻管理、文章資源、問答管理、幫助中心、短信服務、系統消息等等。

后臺運營維護人員通過獲取權限的管理賬戶成功登錄進后臺管理系統后,可以根據數據統計中各個視頻、導師、課程的點擊率以及熱度來對前臺用戶頁面的相關內容進行優化,把最近熱度最高的視頻、導師、課程排版到最首頁,從而通過優質的資源來吸引更多的用戶。

通過后臺系統的路由導航可以進入不同功能的管理模塊,可以查看各個模塊的具體內容,也可以通過精準查詢或者模糊匹配來完成相關目標的查找,從而進行相應的更改。

2.3 數據庫設計

在線視頻學習系統使用目前較為流行的關系型數據庫MySQl 進行存儲,采用多張表對相關的內容進行存儲,部分表之間存在一對多、多對多等關系,對部分關鍵的數據表設計如下。

前臺用戶user 表用來存儲用戶的相關信息,具體的字段名包括用戶id、電話mobileid、密碼password、昵稱name、性別(1 女,0 男)sex、用戶頭像photo、用戶簽名sign、用戶創建時間time_create、用戶更新時間time_modified。課程course 表用來存儲前臺展示課程的相關視頻以及資料,具體的字段包括課程id、課程講師teacher_id、課程專業subject_id、課程標題title、課程總課時lessom_time、課程封面圖片路徑cover、瀏覽數量view_count、課程發布狀態course_status。視頻video 表用來存儲學習視頻的資源地址、播放次數等等,具體的字段包括視頻id、課程course_id、節點名稱title、云端視頻資源video_sourse_id、播放字數play_count、是否可以免費聽(0 收費,1免費)is_free、視頻時長video_time、視頻資源大小size。數據統計data_statistics 表用來存儲每日的新增課程和視頻數,記錄登錄注冊的用戶數量,具體的字段包括數據統計主鍵id、統計日期data_time、注冊人數user_register、登錄人數user_login、每日視頻新增數video_add、每日視頻播放數video_view。訂單pay 表存儲了訂單的金額數量以及支付狀態等等,具體的字段包括訂單號id、訂單支付完成時間pay_time、支付金額fee、支付狀態status、訂單創建時間pay_create、視頻更新時間pay_modified。

3.系統的性能優化構思

3.1 容器技術

該系統采用的微服務框架技術,相對于傳統的單體服務架構系統的一臺機器完成部署,現在構想可以將眾多模塊的微服務分配到成百上千臺服務器完成部署,只是在進行部署時需要多節點有序發布,這時就需要容器技術(docker、k8s),用來瞬間完成對服務器的成百上千的節點擴容;這樣一來,假若明天是活動日需要容納更多用戶的高頻訪問,那么這些擴容的節點會自動接入我們的微服務集群,注冊到Nacos 的注冊中心,那么注冊中心的注冊表也會及時地自動更新并同步到各個微服務的本地注冊表中,就能實現新增微服務之間的協助,從而瞬間完成對外提供高性能的服務;當活動日過去之后,可以將這些容器去掉,恢復到以前滿足日常訪問的性能即可。

3.2 分布式集群部署

關于微服務架構、分布式架構、集群架構,通常認為微服務架構是分布式架構的實現方式,下面舉個系統實例來解釋分布式架構的概念。例如該系統的一個完整視頻播放服務是由視頻獲取、視頻播放、視頻時長統計等不同的微服務分開來共同通訊協作完成,這就構成了分布式部署。那么,如果將其中的某一個微服務例如視頻播放部署成多個相同的微服務,它們之間配置相同,但是互相不協助,這時假如突然出現大量的用戶進行視頻播放,那么就可以通過多層均衡負載,將這些微服務請求合理地分散到各個集群式部署的相關視頻播放微服務上去,這樣就能有效減緩單個服務器的壓力,那么每個分布式部署的微服務都采用這樣的集群式部署,系統的性能會得到提高,并且提高了系統的容錯率。

3.3 均衡負載

均衡負載是指將工作按照一定的規則分配給多個處理單元共同完成整改任務的一種協同工作方式,根據實現的方式不同可以分為硬件負載均衡和軟件負載均衡。相較于類似F5 等硬件均衡負載,反向代理Nginx、LVS 等軟件均衡負載具備價格更優惠、部署更方便等等優點,因此大多還是采用軟件均衡負載。當然,我們為了性能更加優化,可以采取多層均衡負載的手段,例如可以在底層利用反向代理Nginx 實現對Tomcat 容器的均衡負載。利用LVS 或F5 實現對反向代理Nginx 的負載均衡。DNS 配置實現多機房均衡負載。這樣高可用的負載均衡可使系統在未來面對龐大的客戶端入口高并發時能選擇通過以上手段得到解決,從而到達到高并發情況下系統維持高性能的正常運轉。

4.系統的測試成果概述

選取此系統的幾個核心功能進行測試。在啟動前后端的服務后,對視頻的上傳與下載能正常進行。并且通過前臺系統的視頻播放,發現后臺管理系統的數據統計中視頻播放數量正常增加,并且查看后端的日志顯示該功能的響應時間在500 ms內。至此說明了此系統無論是在協同前臺系統服務調用方面,還是服務響應時間上都成功完成測試。

5.結語

復雜系統微服務化是各種系統提高性能的一種選擇發展方向。本文介紹了該系統的前后端部分功能服務的開發技術和操作步驟,概述了微服務對于系統性能提升的優點,同時基于SpringCloud 微服務框架完成了在線視頻學習系統的開發。相較于傳統的單體服務架構的學習系統,該采用微服務架構的系統部署更靈活,響應更迅速,維運更方便,具有更穩定的性能。但是,由于缺少更大用戶數量的高并發測試,系統還需更多資源來進一步完善性能以及功能業務的開發。

猜你喜歡
在線視頻分布式架構
基于FPGA的RNN硬件加速架構
功能架構在電子電氣架構開發中的應用和實踐
網絡網際之在線視頻
2019年在線視頻行業逆勢增長
淺析分布式發電對電力系統的影響
構建富有活力和效率的社會治理架構
基于預處理MUSIC算法的分布式陣列DOA估計
2017年Q1在線視頻用戶規模5.8億人
VoLTE時代智能網架構演進研究
2015年Q3中國在線視頻市場規模115.3億
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合