已經(jīng)在家隔離兩個(gè)多月了,整個(gè)人都胖了一圈。自從胖了以后,大家關(guān)注的焦點(diǎn)就變成了我的胖,而忽略了我的丑,真好。
靠著微弱的手機(jī)網(wǎng)絡(luò),我依然堅(jiān)持在家辦公,下面就說(shuō)說(shuō)在家辦公我都做了什么。
1. 業(yè)務(wù)需求
在經(jīng)歷了購(gòu)物便利性和消費(fèi)民主化之后,電子商務(wù)必然會(huì)迎來(lái)新的一輪零售變革,這就是內(nèi)容電商!
內(nèi)容電商,就是電商的下一個(gè)風(fēng)口!
咳咳,扯遠(yuǎn)了!
教育一直都是常青樹(shù),任何時(shí)候教育領(lǐng)域都是一個(gè)不錯(cuò)的選擇。
猿輔導(dǎo)、學(xué)而思、嘰里呱啦、潘多拉英語(yǔ)、斑馬英語(yǔ)、叫叫閱讀等等,都是兒童教育領(lǐng)域的知名品牌。
當(dāng)真是編程五分鐘,扯淡兩小時(shí),說(shuō)正題
業(yè)務(wù)模型是這樣的
基于這樣的模型,很自然地,系統(tǒng)分為這樣幾大塊:商品售賣(mài)(涉及商品、訂單、價(jià)格、物流、交易、會(huì)員等),課程學(xué)習(xí)(設(shè)計(jì)課程相關(guān)的各種存儲(chǔ)、配置、數(shù)據(jù)分析、音視頻加密、題庫(kù)、課中交互等),基礎(chǔ)服務(wù)接入(涉及注冊(cè)登錄、Token認(rèn)證、會(huì)員權(quán)益、消息推送、網(wǎng)關(guān)、注冊(cè)中心等)
2. 技術(shù)實(shí)現(xiàn)
2.1 基本架構(gòu)
簡(jiǎn)要說(shuō)明:
1、基本數(shù)據(jù)存MySQL,一些不規(guī)則數(shù)據(jù)(例如:題目、樓層數(shù)據(jù))存MongoDB,記錄類(lèi)型的數(shù)據(jù)存ES
2、緩存主要用分布式緩存和內(nèi)存緩存,定時(shí)從Redis中刷新內(nèi)存緩存。更新Redis的方式一般有兩種:MQ異步刷新和直接方法調(diào)用同步刷新。Redis注意設(shè)置好連接池相關(guān)參數(shù)。
3、服務(wù)之前用Dubbo調(diào)用,注意設(shè)置超時(shí)時(shí)間和重試次數(shù)
4、業(yè)務(wù)網(wǎng)關(guān)負(fù)責(zé)用戶(hù)身份認(rèn)證、統(tǒng)一日志處理、統(tǒng)一異常處理
5、配置用攜程的Apollo。當(dāng)然,用阿里的Nacos更好。
6、MyBatis plus 很好用,自動(dòng)生成,基本不需要寫(xiě)什么代碼,幾乎不需要寫(xiě)SQL,自帶的方法足夠使用了
7、阿里的CND、OSS、MQ、音視頻處理、容器鏡像、安全審計(jì)等服務(wù),百度CDN,騰訊語(yǔ)音識(shí)別,環(huán)信等
2.2 設(shè)計(jì)要點(diǎn)
項(xiàng)目結(jié)構(gòu)大概是這樣的:
cjs-commons (常量工具類(lèi)等)
cjs-repository (所有數(shù)據(jù)庫(kù)操作寫(xiě)在這里)
cjs-dependency (所有依賴(lài)的服務(wù)都寫(xiě)在這里)
cjs-inner-api (內(nèi)部服務(wù)調(diào)用dubbo api)
cjs-inner-service (內(nèi)部服務(wù)dubbo實(shí)現(xiàn))
cjs-api (面向客戶(hù)端的dubbo api服務(wù))
cjs-service (面向客戶(hù)端的dubbo實(shí)現(xiàn))
cjs-web (面向客戶(hù)端的API接口)
cjs-admin (管理后臺(tái))
約定優(yōu)于配置。項(xiàng)目結(jié)構(gòu)、命名規(guī)范是大家共同達(dá)成的約定,定了以后遵守就完了。
?
1、音視頻要加密,圖片及音視頻上傳之前務(wù)必要按要求進(jìn)行壓縮
2、課程是虛擬內(nèi)容,有的課程帶教具,因此下單時(shí)候就是一個(gè)虛擬商品訂單和一個(gè)實(shí)物商品訂單。實(shí)物訂單就要考慮運(yùn)費(fèi)、物流等信息
(虛擬商品沒(méi)有庫(kù)存、沒(méi)有物流。虛擬訂單也是有SKU的)
3、題目類(lèi)型眾多,且每種題目之間差異比較大,答案選項(xiàng)也是固定,這種數(shù)據(jù)就不用想了,直接放mongodb
4、首頁(yè)展示的商品是通過(guò)首頁(yè)樓層配置的,樓層數(shù)據(jù)最好也放mongodb
5、答題記錄、課程學(xué)習(xí)記錄、星星記錄這種數(shù)據(jù)量太大了,就直接放到ElasticSearch中,主要是檢索快
6、單元小結(jié)、學(xué)習(xí)報(bào)告這種的話(huà),目前是服務(wù)端從上報(bào)的數(shù)據(jù)中計(jì)算出來(lái)的。不過(guò)最好是通過(guò)一些實(shí)時(shí)計(jì)算平臺(tái)來(lái)處理。
7、層級(jí)比較深,一定要維護(hù)好緩存關(guān)系,避免調(diào)用鏈路過(guò)長(zhǎng),可以用Pinpoint查看調(diào)用鏈路
8、課程中的資源文件比較多,下載會(huì)比較耗時(shí),不要想讓客戶(hù)端實(shí)時(shí)去網(wǎng)絡(luò)加載。最好是客戶(hù)端提前下好,所有url改成本地路徑,這樣的話(huà)就可以從本地加載資源。
9、記得不要都放到一個(gè)籃子里。課程學(xué)習(xí)進(jìn)度要定時(shí)上報(bào)(比如,正常2分鐘上報(bào)一次,當(dāng)用戶(hù)暫停、退出、拖進(jìn)度條等事件觸發(fā)后立即上報(bào)),不要等到學(xué)完了才上報(bào)一次,不保險(xiǎn)。
10、接口要注意區(qū)分版本
11、視頻無(wú)法播放,最有可能是CDN的問(wèn)題
12、用戶(hù)數(shù)據(jù)太過(guò),redis不夠用,有兩種方案:
(1)、用SSDB替換
(2)、數(shù)據(jù)導(dǎo)入ES,查詢(xún)走ES
13、記得埋點(diǎn),別等到上線了才想起來(lái)要進(jìn)行數(shù)據(jù)打點(diǎn)
Spark Streaming
3. 協(xié)作與工具
釘釘:必備
語(yǔ)雀:專(zhuān)業(yè)的云端知識(shí)庫(kù)
Worktile:敏捷開(kāi)發(fā),與jira類(lèi)似,需求、任務(wù)、bug跟進(jìn)
wiki:早期用wiki,忘了它吧
石墨文檔:過(guò)~
MindLinker:音視頻會(huì)議
Yapi:可視化接口管理平臺(tái)(忘了swagger吧,idea有插件)
?
充分理解需求,做好設(shè)計(jì)評(píng)審,同客戶(hù)端定好數(shù)據(jù)結(jié)構(gòu),而后各自開(kāi)發(fā)
每天站立會(huì)、日?qǐng)?bào)、周報(bào),及時(shí)溝通,及時(shí)匯報(bào),燃盡圖
每天各種會(huì)議,開(kāi)會(huì)確實(shí)很累人,開(kāi)會(huì)的成本比較高,所以要提高效率
按照需求的級(jí)別來(lái)開(kāi)發(fā),基礎(chǔ)的工作、優(yōu)先級(jí)高的任務(wù)先做,一定要多溝通多確認(rèn),一定要注意優(yōu)先級(jí)
阻塞性的問(wèn)題要及時(shí)拋出
最后,多壓測(cè),就到這兒吧
附上架構(gòu)圖
?
熱門(mén)工具 換一換
