日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

在线考试系统架构设计

發布時間:2023/12/14 windows 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在线考试系统架构设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在線考試系統需求:

1. 將線下考試轉移到線上進行,包括學生登錄、進入試卷頁面、答題、交卷等關鍵環節;

2. 試題要涵蓋普通考試絕大部分題型,包括但不限于單選題、多選題、判斷題、簡答題、英語閱讀題、英語聽力題等,復雜公式題可以提交圖片答案;

3. 有限預算內,盡可能滿足多人同時在線考試。

需求分析:

1. 各種題型的實現,需要收集各種題型,總結得出相同的題型模板

2. 提交圖片答案,有兩種提交點,一是在交卷時一并提交,二是考試中ajax異步提交,很明顯,多人同時在線考試,一般都會在最后的幾分鐘交卷的人最多,會對服務器造成很大的負荷,所以這里就選擇在考試中提交圖片答案。

3. 多人同時在線考試

因為考試是有考試時間段的,進入考試以及交卷,這兩個時間點都有可能造成高并發的請求,緩解這兩個點的壓力,無疑是提高在線考試系統能承受同時考試的人數最有效的手段。

進入考試時,需要獲取試卷數據,如果全都從數據庫獲取,那對服務器的壓力是很大的,如果將試卷數據放在緩存中,將有效的解決這個問題;

交卷時,不僅需要對學生答案進行入庫操作,還要對題目做各種操作,比如記錄題目的PV,正確率等,如果做完這些才返回,肯定會占用很大的服務器資源,不如,將答案數據放到消息隊列rabbitMQ中,然后響應學生的交卷請求,在另一個服務器中,讀取rabbitMQ中的答案消息,再進行入庫及相關操作。

架構設計:

學生進入考試,如果redis中有試卷緩存,則直接讀取緩存

如果redis緩存中沒有,則讀取MySQL中的試卷數據,并存一份到緩存中,下一個學生進入試卷時,就可以獲取緩存中的試卷數據了

?

考試中提交圖片答案,這里選擇提交到阿里云oss,進一步提高在線考試系統最大負載量

?

交卷時,直接將答案數據放到rabbitMQ中,然后在另一個服務器中,獲取答案消息進行入庫以及相關操作。答案數據,有這些特點:量大、讀多、改少,基于這樣的特點,MongoDB是個不錯的選擇。

架構也僅是停留在思想的層面,真正的實踐還是需要手撕代碼

涉及的技術棧:Redis、MySQL、RabbitMQ、MongoDB、阿里元oss

之前的文章有介紹golang簡單操作Redis、MySQL、RabbitMQ、MongoDB、阿里元oss

以上架構談不上最佳,但對與中小企業來說是個不錯的選擇

真正的實踐中還是會遇到各種問題的,比如外網訪問存在阿里云oss的資源是需要消耗流量的,訪問很多的話會費不少預算,不過也是有解決辦法的,oss+cdn就是個不錯的選擇;再比如,rabbitMQ的消息可靠投遞,確認消費,怎么在速度與安全之間取舍

高手過招,點到為止,還意猶未盡的,可在評論區留言

總結

以上是生活随笔為你收集整理的在线考试系统架构设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。