写点什么

架构实战营 模块四作业

用户头像
孫影
关注
发布于: 1 小时前

數據結構

Redis key

試卷 key format: 年份_學期_課程ID_第幾次考試

e.g. 2021_1_c01_1

Redis value

選擇 string 作為數據結構


因為試卷題目一但產生就不會再變動,所以可以將試卷題目組合成一個 json string,string value 最大能儲存到 512MB,所以拿來存題目是夠用的。

{. "判斷題": {    "題1": "question bla bla~"    ...  },  "多選題":{     "題1": "question bla bla~"    ...  },  "簡答題":{    "題1": "question bla bla~"    ...  }}
复制代码

驗證讀寫場景

  • 新增試卷: 產生試卷的 key,並將試卷題目組成 json string 作為 value 寫入 redis。

  • 讀取試卷: 產生要讀取的試卷的 key,查回試卷的 json string。

  • 更新試卷: 產生要更新的試卷的 key,將新的試卷題目組成 json string 作為 value 寫入 redis。

評估讀寫性能

根據課件描述如下

请求试卷:1000 万 * 20(课)/ 20(周末不考试) / 4(每天 4 堂考试)/ 1 分钟 = 250 万请求/分钟 ≈ 5 万/每秒。

寫性能

每天 4 堂考試,如果試卷是當日或前一日產生的,其實只有 4 筆。

如果是考試月一開始就把所有試卷產生好,也只有 20 筆。

所以寫的性能可以忽略不計

讀性能

一門課的試卷請求有 5 萬/每秒,預留 1.5 倍抓整數為 8 萬/每秒。

服務器數量

1 台 master,2 台 slave,共 3 台。

3 個 sentinel 節點分別部署在 master 和 slave 機器上。


預估的讀請求約 8 萬/每秒

讀請求可分散到兩台 slave 上,平均ㄧ台 slave 只需支撐 4 萬/每秒的請求。

根據官網資料,connection 越多,每秒能接收的請求量會越低。

4 萬個連線的情況,每秒請求量還可以達到約 6 萬,所以兩台 slave 應該就夠用了。

reference: https://redis.io/topics/benchmarks

发布于: 1 小时前阅读数: 6
用户头像

孫影

关注

还未添加个人签名 2021.06.11 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 模块四作业