JAVA單服務(wù)應(yīng)用拆分成多個(gè)服務(wù)的實(shí)踐(1)--拆分的設(shè)計(jì)思想

最近跟朋友在溝通,問我私下作的開發(fā)平臺支不支持拆分成多個(gè)微服務(wù),讓可以支持水平擴(kuò)展.
我回去細(xì)想了一下,確實(shí),現(xiàn)在做項(xiàng)目,如果不搞成多個(gè)微服務(wù),都不好意思說,我是搞IT的.
說做就做,將自己的項(xiàng)目拆成多個(gè)微服務(wù).

  • 拆分目標(biāo):
  1. 支持ALL in One, 即還是可以單體應(yīng)用部署,這樣在小企業(yè)可以快速實(shí)施,因?yàn)樾∑髽I(yè)對性能要求不高
  2. 支持多個(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ù)化的,哪些不需要.

  1. 自動建表功能
    自動建表其實(shí)就是內(nèi)部的一個(gè)功能,在應(yīng)用啟動時(shí),根據(jù)PO對象自動建表,這個(gè)不可能做到微服務(wù)化,只能做為一個(gè)系統(tǒng)的組件
    自動建表的功能,如有興趣,請參考我的文章
    給mybatis添加自動建表,自動加字段的功能
  2. 數(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)
  3. 附件上傳
    其實(shí)附件上傳我一直很猶豫,是做為系統(tǒng)組件,還是微服務(wù).理論上,附件承載了各個(gè)應(yīng)用的業(yè)務(wù)附件數(shù)據(jù),應(yīng)該自己存儲.這樣附件不應(yīng)該服務(wù)化, 但后面想想技術(shù)上,前端上傳附件的地址應(yīng)該只有一個(gè),所以附件應(yīng)該是微服務(wù)化.
  4. 組織管理
    這個(gè)微服務(wù)化,肯定沒異義,對外輸出組織的相關(guān)接口.
  5. 權(quán)限管理
    這里說的權(quán)限管理指的是系統(tǒng)資源及角色的管理.這個(gè)才需要做微服務(wù)化.
    而權(quán)限攔截功能是系統(tǒng)的組件,攔截的規(guī)則數(shù)據(jù)從權(quán)限管理微服務(wù)中獲取
  6. 訪問日志
    這個(gè)作為一個(gè)日志服務(wù),系統(tǒng)每訪問一個(gè)URL地址,向其發(fā)送一個(gè)kafka消息
  7. 定時(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).
  8. 表單引擎
    肯定微服務(wù)化,沒啥異義
  9. 流程引擎
    肯定微服務(wù)化,沒啥異義
    總結(jié)完好,需要實(shí)現(xiàn)微服務(wù)化的功能有以下這些
    需要微服務(wù)的功能

    定好工作的邊界及需求,動手開工,有些我已經(jīng)完成了,我會邊完成功能,邊對過程進(jìn)行總結(jié)上傳,謝謝!
    [未完待續(xù)]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容