天天看點

mooon-agent核心設計圖

說明:以下類圖隻畫出了基礎的核心類和主要關系,弱的依賴關系沒有畫出來。

mooon-agent核心設計圖

<b>應用場景:</b>

在很多應用中,會有一個中心節點(在這裡叫作Center,它可以是Master,也可以不是),每個節點都要和Center建立通訊,兩者之間會有心跳等,Center還可能下發一些控制指令,這個模型是定的,隻是具體的指令字會存在差異和不同的處理。mooon-agent就是為解決這個問題而設計的,提供一個可重用的agent架構,通過抽象指令處理成抽象接口ICommandProcessor,以實作支援不行應用要求的指令字處理。同時對一些常用的行為進行封裝内置,以提升使用效率。

<b></b>

<b>簡述:</b>

以CAgentContext類為入口,以CAgentThread為中心。為何以CAgentThread為中心,因為以它為中心時,以減少對象之間的關聯層次。ICommandProcessor是一個回調接口,由使用者實作,用于對指定指令字的處理,但mooon-agent會内置一些CommandProcessor。CResourceThread是用來定時擷取系統狀态資訊的,如CPU資訊、記憶體資訊、流量資訊等。CSendMachine和CRecvMachine是兩個狀态機,分别處理消息發送和消息接收。限制同一時刻隻能會有一個CAgentConnector,它是用來連接配接Center的,Center就是通常所說的主要或Master,同一時刻隻會有一個主Master,但發生主備Master切換時,要求能夠連接配接到備Master,是以需要多CCenterHost,它的IP資訊通過域名指定,初次和需要重連接配接時,都會對域名重新進行解析,但考慮到域名伺服器也存在不可用的時候,是以如果沒有解析到新的IP,是使用上一次解析到的IP,以增強可用性。

<b>主要功能包括:</b>

1.定時的心跳(但請注意心跳隻有在指定的時間内無資料發送給Center時,才會發送心跳)

2.異步資料接收和發送(前提:要求連接配接已建立,否則CAgentThread會被阻塞在建立連接配接階段)

3.資料上報(是以需要上報的資料都必須銜存于CReportQueue,然後由CAgentThread排程上報)

4.指令字處理架構(實作ICommandProcessor接口,并注入mooon-agent即可)

5.内置的CommandProcessor(實作通用的,由參數控制是否啟用)

6.精确到秒級的時間(很多情況隻需要到秒級,這樣可以減少對time()函數的系統調用)

7.定時的系統資源(可以用來取得CPU、記憶體、流量等資料)

繼續閱讀