999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

采用Redis高并發應用系統設計與實現方法?

2020-07-13 12:48:34周立軍
計算機與數字工程 2020年5期
關鍵詞:數據庫系統

張 杰 劉 凱 周立軍

(海軍航空大學航空基礎學院 煙臺 264001)

1 引言

隨著互聯網信息技術的發展,校園信息化程度不斷提升,傳統的信息系統一般可抽象為三層相對獨立模型:表示層、應用層和數據庫層,并且在維護、部署、穩定性等方面具有一定的優勢,但是在并發性和擴展性方面,存在難以逾越瓶頸。當今移動互聯網高速發展已經深刻影響數字化校園的系統架構,尤其時移動互聯網的廣泛應用,用戶前端展示與訪問已經不再局限于單一的Web、Win-Form、APP等形式[1],甚至包括對第三方開放的擴展服務,此時信息系統的并發訪問能力將成為每一個系統必須面對的關鍵問題。

本文主要闡述了信息系統高并發訪問涉及的相關技術,針對數據庫讀寫系統瓶頸,即數據庫讀寫屬于磁盤IO,性能低[2~3],分析了選課系統中高并發的功能點,通過將選課部分數據和業務邏輯轉移到內存緩存,并搭建了一個基于Redis高速讀寫的高并發選課系統,實現了選課信息發布、學生選課及課表查詢等功能,通過實驗表明:采用Redis的選課系統在高并發訪問性能方面具有明顯優勢,響應速度和并發處理能力有較大提升。

2 系統總體設計

選課計劃系統用于根據教學計劃、教學資源等,每周制定的選課計劃及相關信息,供學員在除正課之外的時間進行自主選擇,系統分為包括教務處、教研室、學生管理單位及學生等角色,其中本文重點分析選課子系統的設計與實現。

圖1 系統功能設計

選課子系統主要功能包括選課批次管理、選課計劃管理、學員選課、選課排課、系統管理等,其中,學員選課包括多種展示方式,如Web網頁、APP終端、Win-Form程序等形式,并且當選課的課程表發布時,會存在短時間內高并發訪問操作情況發生,并且對系統的穩定性與并發處理能力要求較高,為了提升系統擴展性、降低程序耦合度,系統設計實現時將前端顯示和業務處理分離。

圖2 選課系統總體架構

系統功能按照服務進行拆分,用戶經過授權后,可調用選課系統開放的服務完成相應功能,如選課業務中學員經登陸驗證后,通過RESTful API調用系統后端選課服務。

3 關鍵技術

本文提出的高并發系統設計方法涉及的關鍵技術主要包括:Redis緩存熱點數據和Quartz任務調度定時加載熱點數據。

3.1 Redis內存數據庫

Redis是一種基于內存的高性能Key-Value數據庫[4],在解決高并發與大數據等應用場景,可用于提升熱點數據訪問的性能,Redis與傳統的關系型數據庫有所不同,支持鏈表(List)、字符串(String)、集合(set)和有序集合(zset)等4種抽象數據結構,此外,還支持數據計算中常用的集合并、交和補集等操作及多種排序算法[5],Redis所有數據都是保存在內存中,通過不定期半持久化模式(異步方式保存到磁盤上)和持久化模式等操作,提供周期性地把數據操作寫到AOF文件中,數據恢復時將數據加載到內存中,保障數據安全,在Redis中緩存的選課數據及所使用數據類型如表1所示。

表1 熱點數據緩存及類型說明

3.2 Quartz作業調度

Quartz是一個開源完全作業調度框架,將任務調度的相關問題進行了抽象,提出了調度器、觸發器和任務等三個核心概念,分別對應Scheduler、Trigger和Job,為應用程序進行作業調度提供了簡單強大的機制,當一個在預先確定的任務(如定時發布選課課表)的時間到達時,負責執行指定任務或功能(將選課數據加載到Redis數據緩存),Quartz實現上述功能的主要接口是Scheduler,通過SchedulerFactory創建一個Scheduler任務調度實例,它提供了的操作包括:將任務納入日程或者從日程中取消、開始/停止/暫停日程進度等,其中Trigger和Job是任務調度的元數據,Scheduler是實際執行調度的控制器,Trigger是用于定義調度時間的元素,描述觸發Job執行的時間觸發規則,Job用于表示被調度的任務,按狀態可分為無狀態(stateless)和有狀態(stateful)兩種類型。對于同一個trigger來說,有狀態的job不能被并行執行,只有上次觸發的任務被執行完之后,才能觸發下次執行[6~7]。

Quartz作業調度框架與Java內置java.util.Tim?er定時器相比,除了具有可持久化、靈活、功能強大等優點,Quartz可通過cron表達式精確到特定時間執行,且Quartz每次執行任務都將創建一個新的對象,所以某一次執行任務過程中拋出異常,對下一次任務的執行不會產生影響,Timer在執行某個任務程中拋出異常,則整個定時器生命周期就結束,將失去定時器的作用[8]。

4 系統核心業務設計與實現

選課子系統核心業務是學員選課,具體業務流程包括:

1)教研室為單位,提交下一周自主學習訓練任務,教研室應主要對本學期開設課程安排輔導答疑和實驗室自習等自主學習任務;

2)教科處審核并發布自主學習訓練計劃;

3)學員通過個人賬戶登錄校園網(周末),制定自主學習計劃;

4)教科處進入選課管理進行學員調整和選開課排課;

5)發布每周自主學習選排課供查詢、下載、打印。

圖3 系統高并發核心業務分析

通過分析選課子系統核心業務流程中存在高并發的模塊主要涉及:學生選課的課表信息(按周進行發布)和學員個人課表查詢,在系統實現時,采用Quartz任務調度,在給定時間(每周六24點)按教學周將選課數據從Mysql數據庫緩存至Redis服務器,學生按照教學周查詢已經開放的課表時直接從Redis內存中讀取數據,較大程度提升客戶端相應速度和數據處理能力[9]。

圖4 高并發選課業務流程

選課業務中存在典型的高并發應用場景,供學員選課的信息在特定時間發布,學員會在課程發布后集中完成選課操作,由于選課課程有明確人數限制,高并發選課操作發生時,頻繁的數據庫查詢和寫入操作,容易導致數據庫宕機[10],為了緩解數據庫服務器的處理能力與高并發訪問的矛盾,系統采用以下設計方法進行改進:

1)由定時器按教學周,讀取選課課程數據進行Redis緩存;

2)當學員選擇一門課程時,首先檢查是否已選過,并檢查是否已經超過人數限制,滿足條件進行選課,否則返回選課失敗及原因;

3)實現選課操作,生成學員選課記錄并存入到Redis,更新選課人數;

4)使用Redis消息隊列發送選課記錄,消息接收后完成存入Mysql數據庫。

在第2)、3)步驟完成的動作,必須滿足事務性和原子性,否則在高并發情況下,無法保證數據一致性,但Redis為了保證性能,其事務具有一定局限性(如不支持回滾)[11~12],為了解決這個問題,可采用Lua編寫腳本,提交到Redis執行,Redis會將整個Lua腳本作為一個整體執行,在執行過程中不會被其他命令插入(Redis具有單線程特性),第2)、3)步驟對應的Lua腳本如下:

通過將Lua腳本嵌入到選課服務端,當學員選課時調用Lua腳本,借助Lua腳本,Redis將多個查詢、修改等動作包裝成一個具有原子性操作,在提升了性能的同時,可有效保證數據一致性。

5 實驗分析

在高并發情況下,如集中學員選課場景,容易出現多人同時對已選課人數進行查詢與修改,為了保證數據一致性,防止出現超出選課人數限制的情況發生,傳統實現方法是對該部分數據進行加鎖(如排它鎖、樂觀鎖、悲觀鎖等)[13],但普遍存在性能上的缺失,導致系統并發處理能力降低[14]。通過使用Redis將選課相關熱點數據存入緩存,建立Tom?cat+Redis+Mysql建立高并發選課系統,緩解高并發時數據庫的訪問壓力,并提升處理性能。

為了驗證系統構架在并發處理能力方面的性能,選擇Apache JMeter進行負載功能測試和性能測試,相比其他測試軟件(如Loadrunner),JMeter具有輕量、開源等優勢[15~16]。分別設計兩種方案:傳統數據庫(方案1)與Redis數據緩存(方案2)方式分別完成選課操作,使用JMeter建立用戶線程方式分別模擬500、1000、2000用戶在1s內并發訪問選課系統,如表2所示,實驗環境軟件硬件條件:i5/8G內 存 、Windows 7/Jdk1.8/Tomcat8.5/Jmeter5.0/Je?dis2.4/Mysql5.6。

表2 Jmeter性能統計數據(時間單位:ms)

實驗數據表明:采用Redis數據緩存方式,在并發處理能力的各項指標提升明顯,尤其是吞吐量(單位時間處理請求的數量)可提升40%左右。

6 結語

本文分析了當前信息系統在應對高并發訪問存在的瓶頸,以典型的學員選課應用場景為例,從系統設計到核心功能實現,闡述了使用Redis將選課等熱點數據進行緩存,針對選課并發操作的過程,采用Lua腳本實現多個動作(Redis查詢、修改等)封裝成一個原子性操作[17],在提升Redis操作性能同時,有效避免數據不一致性;最后,通過使用Jmeter性能測試工具,對文中提出數據緩存方案與傳統數據庫實現方式對比進行測試,測試結果表明Redis數據緩存方式并發性能明顯提升,本文使用Quartz和Redis提升系統并發能力的方法,具有一定的通用性和借鑒作用。

猜你喜歡
數據庫系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 特级毛片免费视频| 72种姿势欧美久久久久大黄蕉| 亚洲精品制服丝袜二区| 无码丝袜人妻| 免费无遮挡AV| 四虎永久在线视频| 999精品色在线观看| 一本大道香蕉中文日本不卡高清二区 | 国产毛片一区| 好久久免费视频高清| 久久成人国产精品免费软件 | 亚洲天堂成人在线观看| 99在线观看国产| 国产激爽大片在线播放| 在线人成精品免费视频| 亚洲欧洲自拍拍偷午夜色| 一本久道久久综合多人| 亚洲av无码片一区二区三区| 欧美在线网| 日韩精品久久久久久久电影蜜臀| 国产成人亚洲综合A∨在线播放| 欧美在线伊人| 亚洲精品在线观看91| 亚洲一级色| 国产丝袜啪啪| 99精品这里只有精品高清视频| 国产精品思思热在线| 欧美午夜在线观看| 色婷婷国产精品视频| 亚洲欧美一区二区三区麻豆| 巨熟乳波霸若妻中文观看免费| 99ri精品视频在线观看播放| 亚洲成a人在线观看| 国产超碰一区二区三区| 女人18毛片一级毛片在线 | 亚洲天堂视频在线观看免费| 久久国产精品麻豆系列| 国产国语一级毛片在线视频| 精品国产自| 一级毛片基地| 波多野结衣二区| 亚洲天堂啪啪| 任我操在线视频| 婷婷中文在线| 亚洲成网站| 亚洲另类第一页| 无码AV高清毛片中国一级毛片| 欧美国产日韩另类| 国内精品伊人久久久久7777人| 精品视频在线观看你懂的一区| 一级毛片不卡片免费观看| 久久婷婷综合色一区二区| 人妻夜夜爽天天爽| 91人妻日韩人妻无码专区精品| a毛片免费看| 九九久久99精品| 喷潮白浆直流在线播放| 亚洲综合久久成人AV| 青青草原偷拍视频| 国产后式a一视频| 日本a∨在线观看| 免费观看精品视频999| 国产精品色婷婷在线观看| 91精品国产无线乱码在线 | 操美女免费网站| 久久国产拍爱| 色噜噜久久| 欧美成人免费一区在线播放| 尤物成AV人片在线观看| 国内丰满少妇猛烈精品播| 99热这里只有免费国产精品 | 日韩 欧美 国产 精品 综合| 亚洲女同一区二区| 欧美天天干| 国产精品va免费视频| 国产亚洲第一页| 色婷婷电影网| 青青草国产在线视频| 久操中文在线| 中文字幕欧美日韩| 亚洲福利一区二区三区| 国产乱人乱偷精品视频a人人澡|