Categories
程式開發

什麼才是“應用拓撲”?


應用拓撲的特點

應用或服務級監控中有一個非常重要的概念–拓撲,拓撲反映了應用內多個服務之間的調用關係,這種拓撲與傳統的網絡拓撲存在明顯區別,什麼樣的應用拓撲才是運維監控領域最有價值的拓撲呢?

傳統網絡拓撲的特點

節點間關係較為固定,變化的場景較少,只有在網絡發生變更時才會出現變化節點間的關係主要為兩兩之間的關係,由於拓撲關注的層面在網絡層,基本不會關注事務在多台設備之間的流轉,也就是說網絡拓撲只關心兩台設備之間的狀態,而不會關心A設備發起的流量,在經過B設備後到達C設備的情況。簡單來說,在應用流量存在A->B->C時,網絡拓撲只會分別關心A->B和B->C的情況,而不會端到端的分析A->B->C的情況也會有部分網絡分析型工具(如NPM)會關心應用流量的端到端過程,但這種分析其實已經是應用和業務級別的了

應用拓撲需要滿足的幾個需求

與網絡拓撲類似,反應節點間的調用關係,但需要注意的是這種關係可能變化比較頻繁與網絡拓撲不同,需體現事務流在多個節點之間的流轉,需端到端的體現業務的執行過程,而不僅僅是點到點之間的除調用關係外,類似於網絡流量,需體現調用次數、響應時間、錯誤率等指標

設計一個完善的應用拓撲

那麼我們如何來設計一個完善的應用拓撲呢?在開始之前我們先分析幾種各具特色的應用拓撲。

pinpoint應用拓撲

什麼才是“應用拓撲”? 1

可以發現,pinpoint應用拓撲與網絡拓撲類似,關注的仍舊只是點與點之間的關係,沒有體現事務的端到端處理過程,舉個例子,從這個拓撲圖中我們無法了解由FRONT-WEB經BACKEND-API調用Mysql的情況,我們只知道Mysql被BACKEND-API調用了79次,而不知道這79次的業務來源是FRONT-WEB還是BACKEND-WEB。如果我們需要這種粒度的分析,pinpoint應用拓撲就不能幫助到我們了。但同時我們需要注意到,這種拓撲邏輯簡單,用戶學習成本非常低,符合用戶的一般認知。

dynatrace應用拓撲

什麼才是“應用拓撲”? 2

什麼才是“應用拓撲”? 3

與pinpoint應用拓撲相比,dynatrace應用拓撲從外觀上有一個很明顯的區別,它不再像是一個“拓撲圖”,而像是一個“流程圖”,事實上這正是因為dynatrace應用拓撲以端到端體現業務執行過程為核心而做的顛覆性設計,從名稱上它也不在將至稱為“map”或“topo”,而是“serviceFlow”。 dynatrace應用拓撲有如下幾個重要特點:

拓撲內節點不是唯一的,我們從圖中可以發現“easyTravelBusiness”和“JourneyService”出現了多次,它們其實是同一個應用服務,只是由於在調用過程中所處的位置不同而進行了區別由於上一點的限制,拓撲內任何一個幾點只會存在一個調用者,不會出現多個節點對應一個節點的情況,就像一條只會分叉而不會匯聚的水流以上兩點共同作用,使得你選擇任何一個節點進行分析時都能準確的知道業務執行過程的來源和歸宿,這對於應用級監控是很有價值的在這個基礎上,dynatrace甚至提供了事務過濾的功能,通過過濾可以快速掌握哪些具體事務經過了這樣的調用過程,有助於異常問題的深入分析

兩種方式的優劣對比

pinpoint應用拓撲和dynatrace應用拓撲代表了兩種典型的拓撲邏輯,各有優劣:

什麼才是“應用拓撲”? 4

綜上,可以發現dynatrace這種類型的應用拓撲更加貼合應用或服務級監控,但其複雜度的提升導致其不適合簡單的作為總覽界面,如果採用該方式,仍需一個總覽界面來全局的展示各個應用服務的整體狀態。同時需要注意的是,dynatrace的這種應用拓撲大大增加了平台數據處理的複雜度,尤其是在數據量很大的情況下。