您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何進行微服務架構中的模塊劃分和服務識別,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
最近在進行微服務架構的交流和討論中,除了談到微服務技術架構外,客戶往往更加掛你微服務模塊的劃分粒度,已經具體的微服務API接口的識別和定義問題,因此這篇文章將重點談下微服務架構實踐過程中的微服務模塊劃分和服務識別。
首先我們還是再總結在在跨系統間的接口集成中服務的識別和定義方法,可以總結為:
1. 基于流程架構和業務架構,從跨系統交互流程出發,分析業務交互接口點,識別關鍵的業務服務能力。
2. 基于數據架構和主數據建模分析,識別關鍵的數據服務能力。
3. 基于技術架構和共性平臺層技術組件的分析和定義,以能力開放原則識別關鍵技術服務能力。
因此對于跨系統間的集成,對于服務識別和定義思路是相對清晰的。那么在傳統方法中業務系統的劃分和定義粒度又是如何?在前面企業架構分析中,我曾經談到過,通過跨系統交互流程分析,識別出最細粒度的業務功能模塊和功能單元,然后再從底向上進行聚合,以CRUD分析為主要方法,多次迭代出***的滿足高內聚,松耦合條件的業務系統劃分。這里面沒有一個精確方法,但是卻有該大原則下的指導方法。
微服務模塊的劃分
微服務模塊的劃分不是什么新鮮事物,就是傳統的業務系統內部的業務功能組件的劃分,但是我要注意到的關鍵一點還是業務組件本身的粒度和大小。原來沒有完全拆分為獨立的微服務模塊的時候,我們一個業務系統可以劃分20個以上的業務模塊,因為由于數據庫本身沒有拆分,同時業務模塊間的調用本身又是內部的API調用,因此感覺不到有什么問題。但是如果把這20個業務模塊完全拆分為獨立的微服務模塊,你才會發現模塊間的緊耦合或者說大量的交互集成接口,會導致整個系統集成和交互關系相對復雜,后期很難管理。
這也是我們原來經常強調的,傳統的一個大業務系統劃分微服務模塊的時候,盡量是劃分到6到8個模塊比較合適,當你本身的IT成熟度達到一定水平后你可以劃分的更加細點。同時在微服務模塊劃分的時候一定要考慮數據庫本身的劃分,即底層的數據庫也是劃分開的,類似我原來談私有云PaaS的時候談的數據庫的水平拆分。
究竟如何拆?實際上方法仍然是一樣的,還是要分析單個業務系統內部的流程,然后分解到具體的業務組件或功能,再按照高內聚的原則進行聚合,盡量確保各個微服務模塊之間的交互最少。同時對于大家都要用到的基礎數據模塊,仍然采用共性下沉的策略和思路進行。同時一個有價值的參考方法是,分析該業務系統承載的主體業務流程是什么?然后分析這個業務流程可以橫向劃分微哪幾個獨立的階段,然后先將這些獨立的階段劃分微不同的微服務模塊,在劃分好后再進行CRUD分析進行修正。
微服務接口的識別和定義
不管是傳統的跨業務系統間交互的接口,還是微服務模塊間的交互API接口,我一直強調的一個關鍵就是接口一定要保證粗粒度特性,實現業務規則和邏輯的高度內聚。接口面對的應該是核心的業務對象,領域對象或業務規則能力暴露,而不是微服務模塊內部的數據庫表的CRUD操作的暴露。如果將數據庫表CRUD操作暴露為Rest API接口并在微服務模塊間相互調用。一個是耦合性增加,一個是完全沒有實現高內聚的基本要求。
基于以上基礎原則,我們在進行微服務接口識別和定義的時候,仍然需要從業務流程出發,梳理清楚完成一個完整的業務流程各個微服務模塊之間有哪些業務交互接口,然后將這些接口識別出來后,才進行接口的拆分或合并,最終形成微服務API接口,只有這樣最終的微服務API接口才是可以復用的。
由于我們已經將基礎數據管理獨立到一個基礎模塊,因此可以基于數據能力開放和暴露的原則將這些基礎數據的能力以查詢服務方式暴露為獨立的數據服務能力接口。要求仍然是領域對象級而不是數據庫表級別。
每一個微服務模塊在開發和實現的時候,如果都是基于領域驅動架構設計的思路進行的,那么只有微服務模塊的領域對象定義完整,完全可以將領域對象的能力以API接口的方式暴露出去,這里既包括了查詢類接口,也包括了導入或數據插入類接口,其次對于核心的業務規則的實現可以獨立暴露為接口服務。
在前面微服務架構咨詢里面我曾經談到過,在多個微服務模塊之上,還可能有一個微服務能力組合層,實現類似流程服務和組合服務類的能力。如果存在這種情況,那么***也是獨立的微服務模塊來實現,這個微服務模塊本身可能并不對應具體的數據庫,而是將底層的微服務模塊之間服務能力進行組合,形成新的接口服務能力。
由于在微服務架構設計中,我們更加強調數據不落地的方式進行后續的開發和實現,由于數據不落地,我們就可以更好的以能力開放的思路來進行接口的識別和暴露。簡單來說有哪些數據或業務對象在你這,有哪些業務規則屬于你管理?這些都在經過粗粒度聚合后,都可以識別和定位為微服務API接口。
上述就是小編為大家分享的如何進行微服務架構中的模塊劃分和服務識別了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。