Silky微服務框架之模塊( 三 )


模塊的依賴關系是通過特性DependsOnAttribute指定的,通過DependsOnAttribute在對模塊的類進行標注,就可以解析到各個模塊的依賴關系,從而實現通過模塊的依賴關系進行排序;

提示熟悉APB框架的小伙伴應該可以看出來,Silky模塊的設計主要是借鑒了APB框架的模塊設計,在一些細節方面做了調整 。
Silky的核心模塊通過上面的介紹, 我們知道一個模塊類的最重要的工作主要由兩點: 1. 實現服務的注冊; 2. 在應用啟動時或是停止時執行指定的方法完成初始化任務或是釋放資源的任務;
如何判斷是否是silky的核心模塊呢? 核心模塊最重要的一個作用就是在應用啟動時,通過Initialize()方法執行該模塊的初始化資源的任務;
通過查看源碼,我們發現大部分silky模塊在應用啟動時并沒有重寫Initialize()方法,也就是說,大部分silky模塊在應用啟動過程時主要是完成各個模塊的服務類的注冊并不需要做什么工作 。
Silky微服務框架之模塊

文章插圖
如上圖所示,我們看到silky框架定義的模塊,由如上幾個模塊是在應用啟動是完成了主機啟動時的關鍵性作業;
我們再根據模塊的依賴關系,可以看到主機在應用啟動時,通過模塊初始化任務的一個執行順序如下所示:
RpcModule --> DotNettyTcpModule | TransactionModule | WebSocketModule | [RpcMonitorModule] --> GeneralHostModule(啟動模塊[StartUpModule])[DefaultGeneralHostModule|WebSocketHostModule|DefaultWebSocketHostModule] 通過上述的依賴關系,我們可以知道:
  1. Rpc模塊在應用啟動時是最早被執行;
  2. 然后依次執行: DotNettyTcpModule | TransactionModule | WebSocketModule | [RpcMonitorModule] 等模塊;
  3. 最后執行應用啟動模塊指定的初始化方法;
在上述的過程中,Silky主機在啟動時需要完成如下的工作:
  1. 實現Rpc消息監聽的訂閱;
  2. 解析應用服務與服務條目;
  3. 啟動Rpc消息監聽;
  4. 解析服務主機和注冊該主機實例對應的端點;
  5. 向服務注冊中心更新或是獲取服務元數據(應用服務描述信息和服務條目描述信息);
  6. 向服務注冊中心注冊該服務當前實例的端點以及從服務注冊中心獲取該服務對應的所有實例;
  7. 通過心跳的方式從服務注冊中心獲取最新的服務元數據以及服務實例信息;
在下面的篇章中,我們將著重介紹上述的過程是如何實現的 。

推薦閱讀