前言git
微服務計算平臺,即MicroService Computing Platform,簡稱MSCP,應用微智能思想提供了一套基於微服務架構的計算平臺。github
UAV系列軟件中監控代理程序(Monitor Agent)和監控管理服務(Health Manager)都是基於MSCP構建的。MSCP可以編程
提供一系列特性來簡化計算任務的開發工做,包括提供通訊、工做流、定時任務(多線程、異步等)、IO處理、資源限制器等組件;網絡
提供以抽象組件爲基礎的微服務計算編程框架和運行時;數據結構
提供包含服務註冊與發現、負載均衡、自動切換/重試等的服務化支持;多線程
提供以組件編程構建業務功能的能力和單binary多配置實現差別化運行的部署方式以及組件圖譜。架構
MSCP可依據在其中流轉的共識數據實現多個運行實例的協做和跨實例多個能力的協做。負載均衡
術語定義框架
在開始介紹MSCP以前,先簡要介紹一下MSCP相關術語。異步
Component(組件): MSCP中的最小可編程和運行時單位,可完成某一單一處理邏輯,根類是AbstractComponent。
Feature(能力): MSCP運行時的最小生命週期控制單位,由若干MSCP組件和第三方組件構成,並完成某種特定業務功能,具備全局範圍內惟一的名稱,可熱啓停。
Resource(資源): MSCP運行時的全局資源共享單位,由若干MSCP組件和第三方組件構成,爲Feature提供公共資源實例,具備全局範圍內惟一名稱,生命週期與JVM相同。
Node(計算節點): MSCP運行時的資源控制單位,由若干Feature構成,資源佔用就是一個進程,具備全局範圍內惟一Node ID。
架構
爲了理解方便,咱們從小到大去講解MSCP的相關架構及生命週期。
上面咱們已經介紹Component是可完成某一單一處理邏輯的單元,這就意味着從特性上來看Component必然隸屬於某一個Feature,而須要完成某些處理邏輯,又必須可以有足夠的支持和協調響應的能力,因此Component能夠得到來自MSCP的全局能力。MSCP內自帶的組件根據基本功能被劃分爲了多種組件類別:直接繼承AbstractComponent的組件稱爲普通組件;而功能類派生自AbstractComponent的被稱爲功能組件,大體有啓動組件類(SystemStarter)、管理組件類(SystemTimerWorkMgr等)、Feature生命週期控制類(AgentFeatureComponent等)、業務處理類(AbstractHandleWorkComponent等)、通訊類(AbstractHttpServiceComponent等)、流程類(ActionEngine等)、任務處理類(AbstractTimerWork等)、特種功能類(ResourceLimitationAuditor等)。
Resource是MSCP運行時的全局共享單位,因此Resource的類可被Feature直接引用,但Resource中的組件須要經過ConfigurationManager來獲取。在生命週期控制上不一樣於Feature的地方在於,Resource只有一個生命週期控制類的組件,即AgentFeatureComponent。
若干Feature組成一個Node,Resource是Node的可選項。Node具備全局範圍內惟一ID,只要NodeID不變,不管進程幾回重啓,就是同一個Node。Node內Feature之間Component的組件引用以Feature名和組件名的形式經過getComponent方法調用,而各Components間的數據流轉則是經過Feature的AgentFeatureComponent組件的exchange方法進行數據交換。Resource也相似,若是須要獲取相似消息隊列生產者這樣的Resource中的組件,則經過AgentResourceComponent的getComponent獲取對應組件,並用getResource方法獲得對應Resource。
因爲MSCP是Node、Feature、Component三級的形式,並能夠進行單binary多配置的差別化部署方式,這就意味着有了多個實例或跨實例多個Feature進行協做的可能性。
對於MSCP來講,Node是計算的基本單位,也是信息調度的基本單位,而Feature則是Node內部的計算能力,在整個MSCP計算網絡中,心跳服務攜帶的數據通常被稱爲共識數據,包括Node所在Host主機的IP,具有哪些Feature的能力,對外可以提供哪些服務,以及服務的元數據信息。基於這些信息MSCP可以實現基本的動態編排能力:
另外一方面,在這個基礎之上,MSCP也能夠進行服務編排:
本文的主要目的是讓讀者瞭解UAV MSCP代碼結構、機制原理和相關實現。UAV其它重要功能及其實現原理將會在後續文章中依次剖析,敬請期待!
UAVStack已在Github上開放源碼,並提供了安裝部署、架構說明和用戶指南等雙語文檔,歡迎訪問-給星-拉取~~~
掃一掃下方二維碼,關注一個不會讓你失望的公衆號