已經在家隔離兩個多月了,整我的都胖了一圈。自從胖了之後,你們關注的焦點就變成了個人胖,而忽略了個人醜,真好。web
靠着微弱的手機網絡,我依然堅持在家辦公,下面就說說在家辦公我都作了什麼。redis
1. 業務需求mongodb
在經歷了購物便利性和消費民主化以後,電子商務必然會迎來新的一輪零售變革,這就是內容電商!數據庫
內容電商,就是電商的下一個風口!編程
咳咳,扯遠了!api
教育一直都是常青樹,任什麼時候候教育領域都是一個不錯的選擇。緩存
猿輔導、學而思、嘰裏呱啦、潘多拉英語、斑馬英語、叫叫閱讀等等,都是兒童教育領域的知名品牌。安全
當真是編程五分鐘,扯淡兩小時,說正題網絡
業務模型是這樣的數據結構
基於這樣的模型,很天然地,系統分爲這樣幾大塊:商品售賣(涉及商品、訂單、價格、物流、交易、會員等),課程學習(設計課程相關的各類存儲、配置、數據分析、音視頻加密、題庫、課中交互等),基礎服務接入(涉及註冊登陸、Token認證、會員權益、消息推送、網關、註冊中心等)
2. 技術實現
2.1 基本架構
簡要說明:
一、基本數據存MySQL,一些不規則數據(例如:題目、樓層數據)存MongoDB,記錄類型的數據存ES
二、緩存主要用分佈式緩存和內存緩存,定時從Redis中刷新內存緩存。更新Redis的方式通常有兩種:MQ異步刷新和直接方法調用同步刷新。Redis注意設置好鏈接池相關參數。
三、服務以前用Dubbo調用,注意設置超時時間和重試次數
四、業務網關負責用戶身份認證、統一日誌處理、統一異常處理
五、配置用攜程的Apollo。固然,用阿里的Nacos更好。
六、MyBatis plus 很好用,自動生成,基本不須要寫什麼代碼,幾乎不須要寫SQL,自帶的方法足夠使用了
七、阿里的CND、OSS、MQ、音視頻處理、容器鏡像、安全審計等服務,百度CDN,騰訊語音識別,環信等
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 (管理後臺)
約定優於配置。項目結構、命名規範是你們共同達成的約定,定了之後遵照就完了。
一、音視頻要加密,圖片及音視頻上傳以前務必要按要求進行壓縮
二、課程是虛擬內容,有的課程帶教具,所以下單時候就是一個虛擬商品訂單和一個實物商品訂單。實物訂單就要考慮運費、物流等信息
(虛擬商品沒有庫存、沒有物流。虛擬訂單也是有SKU的)
三、題目類型衆多,且每種題目之間差別比較大,答案選項也是固定,這種數據就不用想了,直接放mongodb
四、首頁展現的商品是經過首頁樓層配置的,樓層數據最好也放mongodb
五、答題記錄、課程學習記錄、星星記錄這種數據量太大了,就直接放到ElasticSearch中,主要是檢索快
六、單元小結、學習報告這種的話,目前是服務端從上報的數據中計算出來的。不過最好是經過一些實時計算平臺來處理。
七、層級比較深,必定要維護好緩存關係,避免調用鏈路過長,能夠用Pinpoint查看調用鏈路
八、課程中的資源文件比較多,下載會比較耗時,不要想讓客戶端實時去網絡加載。最好是客戶端提早下好,全部url改爲本地路徑,這樣的話就能夠從本地加載資源。
九、記得不要都放到一個籃子裏。課程學習進度要定時上報(好比,正常2分鐘上報一次,當用戶暫停、退出、拖進度條等事件觸發後當即上報),不要等到學完了才上報一次,不保險。
十、接口要注意區分版本
十一、視頻沒法播放,最有多是CDN的問題
十二、用戶數據太過,redis不夠用,有兩種方案:
(1)、用SSDB替換
(2)、數據導入ES,查詢走ES
1三、記得埋點,別等到上線了纔想起來要進行數據打點
Spark Streaming
3. 協做與工具
釘釘:必備
語雀:專業的雲端知識庫
Worktile:敏捷開發,與jira相似,需求、任務、bug跟進
wiki:早期用wiki,忘了它吧
石墨文檔:過~
MindLinker:音視頻會議
Yapi:可視化接口管理平臺(忘了swagger吧,idea有插件)
充分理解需求,作好設計評審,同客戶端定好數據結構,然後各自開發
天天站立會、日報、週報,及時溝通,及時彙報,燃盡圖
天天各類會議,開會確實很累人,開會的成本比較高,因此要提升效率
按照需求的級別來開發,基礎的工做、優先級高的任務先作,必定要多溝通多確認,必定要注意優先級
阻塞性的問題要及時拋出
最後,多壓測,就到這兒吧
附上架構圖