微服務模塊化需要的幾個基礎功能


首先對項目拆分, 根據業務服務內容拆分項目, 最終結果是一堆dll. 相關的dll組合起來服務一項業務功能, 稱為模塊. 如果單獨部署, 則為一個微服務模塊. 

這樣先拆分模塊之后根據具體項目配給的人力物力進行最終的部署: 哪些模塊作為獨立服務部署, 哪些模塊組合成一個服務部署. 

這里的模塊所指的都是業務模塊. 結構如圖:

 

 於是模塊化的微服務需要的幾個基礎功能就顯現出來了:

一 模塊的生命周期

  一個模塊接入服務中需要監聽幾個生命周期事件, 初始化\配置\啟動\停止...也可以作為一個基類由繼承模塊重寫. 這樣一個模塊的基礎定義完成. 

二 模塊間的接口調用

  模塊內部有各種ApplicationService, 各個service之間通過接口IApplicationService進行調用. 

  於是, 對於host中有接口實現的則調用具體實現, 約等於直接調用. 對於分為兩個host部署的模塊, 自己host中不含接口具體實現的, 通過接口代理走服務發現\負載均衡\遠程請求進行調用. 

  這里的關鍵是需要實現一個代理所有IApplicationService的接口調用代理類型. 目前我調查和使用過的是Autofac和AspectCore, 都可以. Autofac是基於Castle.DynamicProxy, AspectCore則是它的AspectCore.DynamicProxy組件, 可以單獨使用組件. 個人喜歡單獨使用Castle.DynamicProxy, 不需要更換asp.netcore的自帶容器. 

三 事件

  與接口調用類似, 事件也需要分為模塊內事件和分布式事件兩種. 

  內部事件派發很簡單, 跟普通事件類似, 走內存. 分布式事件可以依賴RabbitMQ等, 類庫有CAP\Masstransit.

四 其他分布式需要的功能

  如服務注冊/發現/分布式事務等, 這是屬於微服務(分布式)帶來的問題, 無論模塊化與否都存在. 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM