項目使用 Crossbar.io 進(jìn)行通信,流程大概如下

流程圖中的每個塊狀區(qū)域都是 Crossbar 的一個組件,都可以獨立運行。所有通信全部通過 Crossbar 中注冊的路由來進(jìn)行通信。
- Frontend Component
- Crossbar Server
- Backend Component
- MongoDB Component
- S3 Component
由于關(guān)聯(lián)服務(wù)較多,后端開發(fā)人員本地環(huán)境沒有搭完整的測試環(huán)境,只有后端基本環(huán)境寫代碼,連接服務(wù)器端的主干分支環(huán)境測試。
服務(wù)器主干分支是項目發(fā)布運行的分支,主干分支的代碼提交都是需要管理員合并,然后部署更新代碼。持續(xù)了一段時間,發(fā)現(xiàn)前后端開發(fā)效率低下,主干分支總是出問題。
分析原因發(fā)現(xiàn),由于 Backend Component 中 API 出現(xiàn)同一個 uri 會導(dǎo)致前端調(diào)用后端接口后返回結(jié)果異常的情況,后端開發(fā)人員在開發(fā)過程中,如果修改現(xiàn)有接口內(nèi)容只能通過本地寫代碼,然后提交到主干分支后, master 把代碼合并后后端開發(fā)者再測試改動后的代碼效果
目前的解決方案
通過注冊不同的 uri 來實現(xiàn)不同的后端調(diào)用,前端后端調(diào)整使用同一個 uri ,通過配置啟動參數(shù),程序接受一個通道 ch 作為參數(shù),這個通道會被加到所有的 uri 里面。
每開發(fā)者都有屬于自己的名字命名的通道,比如主干分支的代碼版本中的
com.example.frontend.predict 添加對應(yīng)的通道參數(shù)后變成
com.example.frontend.predict_david 或 com.example.david.frontend.predict
這樣就解決了后端開發(fā)人員的本地測試問題