最近跟朋友在溝通,問我私下作的開發(fā)平臺支不支持拆分成多個(gè)微服務(wù),讓可以支持水平擴(kuò)展.
我回去細(xì)想了一下,確實(shí),現(xiàn)在做項(xiàng)目,如果不搞成多個(gè)微服務(wù),都不好意思說,我是搞IT的.
說做就做,將自己的項(xiàng)目拆成多個(gè)微服務(wù).
- 拆分目標(biāo):
- 支持ALL in One, 即還是可以單體應(yīng)用部署,這樣在小企業(yè)可以快速實(shí)施,因?yàn)樾∑髽I(yè)對性能要求不高
- 支持多個(gè)應(yīng)用服務(wù),各服務(wù)的相互獨(dú)立,服務(wù)之間的通訊使用dubbo,這樣降低耦合,可以快速持水平擴(kuò)展.
動手之前,先介紹一下自己做的開發(fā)平臺吧:
-
開發(fā)平臺功能介紹
總體功能
有圖有真相,截些圖吧
流程管理
組織管理
權(quán)限管理
數(shù)據(jù)字典
定時(shí)任務(wù)
訪問日志
我自己做的平臺,還不錯(cuò)吧,前臺后臺都是自己一個(gè)做的.暫時(shí)供學(xué)習(xí)用,后面可能考慮開源.
回歸主題,我們開始對平臺的功能進(jìn)行分解,劃分哪些需要微服務(wù)化的,哪些不需要.
- 自動建表功能
自動建表其實(shí)就是內(nèi)部的一個(gè)功能,在應(yīng)用啟動時(shí),根據(jù)PO對象自動建表,這個(gè)不可能做到微服務(wù)化,只能做為一個(gè)系統(tǒng)的組件
自動建表的功能,如有興趣,請參考我的文章
給mybatis添加自動建表,自動加字段的功能 - 數(shù)據(jù)過濾功能
數(shù)據(jù)過濾功能有兩部分,分為過濾的攔截,及過濾功能的設(shè)置
過濾的攔截應(yīng)該做為一個(gè)組件,即一個(gè)功能jar包來合并成各個(gè)微服務(wù)中,
而過濾功能的數(shù)據(jù)管理作為一個(gè)微服務(wù),各個(gè)服務(wù)如有需要,從該服務(wù)中取該功能配置的數(shù)據(jù)
該數(shù)據(jù)過濾的功能請參考文章通用數(shù)據(jù)級別權(quán)限的框架設(shè)計(jì)與實(shí)現(xiàn) - 附件上傳
其實(shí)附件上傳我一直很猶豫,是做為系統(tǒng)組件,還是微服務(wù).理論上,附件承載了各個(gè)應(yīng)用的業(yè)務(wù)附件數(shù)據(jù),應(yīng)該自己存儲.這樣附件不應(yīng)該服務(wù)化, 但后面想想技術(shù)上,前端上傳附件的地址應(yīng)該只有一個(gè),所以附件應(yīng)該是微服務(wù)化. - 組織管理
這個(gè)微服務(wù)化,肯定沒異義,對外輸出組織的相關(guān)接口. - 權(quán)限管理
這里說的權(quán)限管理指的是系統(tǒng)資源及角色的管理.這個(gè)才需要做微服務(wù)化.
而權(quán)限攔截功能是系統(tǒng)的組件,攔截的規(guī)則數(shù)據(jù)從權(quán)限管理微服務(wù)中獲取 - 訪問日志
這個(gè)作為一個(gè)日志服務(wù),系統(tǒng)每訪問一個(gè)URL地址,向其發(fā)送一個(gè)kafka消息 - 定時(shí)任務(wù)
定時(shí)任務(wù)分為定時(shí)任務(wù)的觸發(fā)及定時(shí)任務(wù)日志.定時(shí)任務(wù)日志,合并到上面的日志服務(wù)中,這個(gè)是沒什么問題.
但定時(shí)任務(wù)的觸發(fā),我考慮了很久,讓各個(gè)系統(tǒng)自己定時(shí)觸發(fā),還是做成一個(gè)微服務(wù),如果做成一個(gè)微服務(wù),觸及到定時(shí)任務(wù)調(diào)用多個(gè)微服務(wù),如何去尋找對應(yīng)的服務(wù)呢.
這點(diǎn)我想了很久,在后面的文章會提及具體怎么實(shí)現(xiàn). - 表單引擎
肯定微服務(wù)化,沒啥異義 - 流程引擎
肯定微服務(wù)化,沒啥異義
總結(jié)完好,需要實(shí)現(xiàn)微服務(wù)化的功能有以下這些
需要微服務(wù)的功能
定好工作的邊界及需求,動手開工,有些我已經(jīng)完成了,我會邊完成功能,邊對過程進(jìn)行總結(jié)上傳,謝謝!
[未完待續(xù)]







