輕課系統設計

2022-03-10 15:15:08 字數 2467 閱讀 2025

已經在家隔離兩個多月了,整個人都胖了一圈。自從胖了以後,大家關注的焦點就變成了我的胖,而忽略了我的醜,真好。

靠著微弱的手機網路,我依然堅持在家辦公,下面就說說在家辦公我都做了什麼。

1. 業務需求

在經歷了購物便利性和消費民主化之後,電子商務必然會迎來新的一輪零售變革,這就是內容電商!

內容電商,就是電商的下乙個風口!

咳咳,扯遠了!

教育一直都是常青樹,任何時候教育領域都是乙個不錯的選擇。

猿輔導、學而思、嘰裡呱啦、潘多拉英語、斑馬英語、叫叫閱讀等等,都是兒童教育領域的知名品牌。

當真是程式設計五分鐘,扯淡兩小時,說正題

業務模型是這樣的

2. 技術實現

2.1 基本架構

簡要說明:

1、基本資料存mysql,一些不規則資料(例如:題目、樓層資料)存mongodb,記錄型別的資料存es

2、快取主要用分布式快取和記憶體快取,定時從redis中重新整理記憶體快取。更新redis的方式一般有兩種:mq非同步重新整理和直接方法呼叫同步重新整理。redis注意設定好連線池相關引數。

3、服務之前用dubbo呼叫,注意設定超時時間和重試次數

4、業務閘道器負責使用者身份認證、統一日誌處理、統一異常處理

5、配置用攜程的apollo。當然,用阿里的nacos更好。

6、mybatis plus 很好用,自動生成,基本不需要寫什麼**,幾乎不需要寫sql,自帶的方法足夠使用了

2.2 設計要點

專案結構大概是這樣的:

cjs-commons (常量工具類等)

cjs-repository (所有資料庫操作寫在這裡)

cjs-dependency (所有依賴的服務都寫在這裡)

cjs-inner-api (內部服務呼叫dubbo api)

cjs-inner-service (內部服務dubbo實現)

cjs-api (面向客戶端的dubbo api服務)

cjs-service (面向客戶端的dubbo實現)

cjs-web (面向客戶端的api介面)

cjs-admin (管理後台)

約定優於配置。專案結構、命名規範是大家共同達成的約定,定了以後遵守就完了。

2、課程是虛擬內容,有的課程帶教具,因此下單時候就是乙個虛擬商品訂單和乙個實物商品訂單。實物訂單就要考慮運費、物流等資訊

(虛擬商品沒有庫存、沒有物流。虛擬訂單也是有sku的)

3、題目型別眾多,且每種題目之間差異比較大,答案選項也是固定,這種資料就不用想了,直接放mongodb

4、首頁展示的商品是通過首頁樓層配置的,樓層資料最好也放mongodb

5、答題記錄、課程學習記錄、星星記錄這種資料量太大了,就直接放到elasticsearch中,主要是檢索快

6、單元小結、學習報告這種的話,目前是服務端從上報的資料中計算出來的。不過最好是通過一些實時計算平台來處理。

7、層級比較深,一定要維護好快取關係,避免呼叫鏈路過長,可以用pinpoint檢視呼叫鏈路

9、記得不要都放到乙個籃子裡。課程學習進度要定時上報(比如,正常2分鐘上報一次,當使用者暫停、退出、拖進度條等事件觸發後立即上報),不要等到學完了才上報一次,不保險。

10、介面要注意區分版本

12、使用者資料太過,redis不夠用,有兩種方案:

(1)、用ssdb替換

(2)、資料匯入es,查詢走es

13、記得埋點,別等到上線了才想起來要進行資料打點

spark streaming

3. 協作與工具

釘釘:必備

語雀:專業的雲端知識庫

worktile:敏捷開發,與jira類似,需求、任務、bug跟進

wiki:早期用wiki,忘了它吧

石墨文件:過~

yapi:視覺化介面管理平台(忘了swagger吧,idea有外掛程式)

充分理解需求,做好設計評審,同客戶端定好資料結構,而後各自開發

每天站立會、**、週報,及時溝通,及時匯報,燃盡圖

每天各種會議,開會確實很累人,開會的成本比較高,所以要提高效率

按照需求的級別來開發,基礎的工作、優先順序高的任務先做,一定要多溝通多確認,一定要注意優先順序

阻塞性的問題要及時丟擲

最後,多壓測,就到這兒吧

附上架構圖

輕社交軟體系統ThinkSNS簡正式發布

摘要 超輕量核心功能軟體系統,百萬創業者軟體專案口碑之選。伴隨國內外創業風潮 ai 區塊鏈等網際網路軟體科技領域的高速發展,2019 年thinksns軟體品牌迎來十週年後的新紀元。作為下乙個時間的產品元年,thinksns官方於 2019 年 5 月正式發售輕量核心社交app系統 thinksns...

C語言課設 學生資訊管理系統設計

學生資訊包括 學號,姓名,年齡,性別,出生年月,位址,e mail 等。試設計一學生 資訊管理系統,使之能提供以下功能 系統以選單方式工作 學生資訊錄入功能 學生資訊用檔案儲存 輸入 學生資訊瀏覽功能 輸出 查詢 排序功能 演算法 按學號查詢 按姓名查詢 學生資訊的刪除與修改 有乙個清晰美觀介面來呼...

一種輕量的openresty路由設計

但出於安全性考慮,決定給訪問的介面位址加個白名單功能,不在白名單的位址不允許訪問。這裡載入了乙個對應目錄的route config.lua,由於這個config檔案內容較小,所以我把內容直接列了出來 白名單列表 local whitelist 路由重寫列表 local rewritelist ret...