你的技術(shù)團隊到底需要什么樣的APM產(chǎn)品?
目前,國內(nèi)的APM市場雖未及全球市場的繁盛,也已開始呈現(xiàn)騰飛的態(tài)勢,國內(nèi)出品的APM產(chǎn)品可謂百花齊放。然而自從進入2016年之后,國內(nèi)的IT從業(yè)者們開始紛紛把目光聚集在通過Server端植入探針來獲取數(shù)據(jù)的后端Server類APM產(chǎn)品上面。從數(shù)據(jù)獲取的角度來說,這類產(chǎn)品可以更加全面深入地展現(xiàn)業(yè)務(wù)的性能損耗,幫助企業(yè)技術(shù)團隊更好地管理業(yè)務(wù)質(zhì)量和IT設(shè)備質(zhì)量。但是,現(xiàn)階段國內(nèi)Server類產(chǎn)品五花八門,想選擇一款最適合自己團隊的產(chǎn)品還應(yīng)先從APM本身需求來看。
企業(yè)為什么需要APM服務(wù)?答案很簡單,APM可以幫助企業(yè)技術(shù)團隊更好的管理業(yè)務(wù)質(zhì)量和IT設(shè)備質(zhì)量。那么是不是所有的APM產(chǎn)品都能做到這兩方面呢,以Server端APM產(chǎn)品為例,我們需要從如下幾個方面來分析:
關(guān)鍵字:大量服務(wù)集群、多層級業(yè)務(wù)拓撲
首先,你的技術(shù)團隊所運維或者運營的Server架構(gòu)體系是什么規(guī)模的呢?是兩三臺服務(wù)器,還是數(shù)十臺、數(shù)百臺甚至上千臺服務(wù)器?另外,你的業(yè)務(wù)拓撲關(guān)系是簡單的單線調(diào)用關(guān)系還是極其復(fù)雜的網(wǎng)狀的連環(huán)調(diào)用拓撲?我想,以目前國內(nèi)互聯(lián)網(wǎng)和APP發(fā)展的規(guī)模與勢頭,稍具規(guī)模的企業(yè),其業(yè)務(wù)服務(wù)的拓撲架構(gòu)以及后端服務(wù)器規(guī)模都不會太簡單的。業(yè)務(wù)被執(zhí)行時,一條請求就可能需要在各個應(yīng)用服務(wù)器、web服務(wù)器、數(shù)據(jù)庫、NoSQL等服務(wù)節(jié)點之間反復(fù)調(diào)用、跳轉(zhuǎn),這些節(jié)點可能組成一個大的業(yè)務(wù)集群,此外,我們還通常會在某個節(jié)點部署幾臺虛擬機來做負載均衡。因此,你所需要的Server端APM產(chǎn)品就必須支持復(fù)雜的邏輯結(jié)構(gòu)和多層級的集群拓撲。當然,你所關(guān)注的業(yè)務(wù)集群不會僅是兩三個,所以你的APM產(chǎn)品還需要支持同時接收并處理大量探針產(chǎn)生的數(shù)據(jù)。如果能夠支持三個邏輯拓撲層級,并且可以同時處理500個以上探針的數(shù)據(jù),應(yīng)該能夠滿足現(xiàn)階段國內(nèi)大部分企業(yè)的技術(shù)團隊了。
關(guān)鍵字:多線程、自定義代碼
其次,我們使用Server端APM產(chǎn)品,最主要的目的還是做業(yè)務(wù)流程分析,找出業(yè)務(wù)被調(diào)用時,時間損耗最嚴重的代碼。因此,若想準確定位出業(yè)務(wù)的性能損耗瓶頸,就需要探針能擷取到足夠全面的數(shù)據(jù)。所以這里有兩個因素需要注意:***,APM產(chǎn)品要支持異步線程調(diào)用的數(shù)據(jù)獲取,并能夠?qū)惒骄€程數(shù)據(jù)與主線程數(shù)據(jù)以及業(yè)務(wù)調(diào)用關(guān)聯(lián)起來。因為在請求調(diào)用中,除了主線程的處理之外,很可能還會調(diào)用其它服務(wù),從而新開一到多個線程來工作。這些異步線程同主線程一樣在消耗著整個業(yè)務(wù)的運行時間,且有可能對主線程產(chǎn)生拖累。第二,一定要支持用戶自定義代碼的監(jiān)測。我們都知道,研發(fā)工程師在coding過程中會寫出大量符合自己業(yè)務(wù)邏輯的自定義函數(shù)以便調(diào)用,這就會給探針獲取數(shù)據(jù)造成瓶頸。所以說,支持‘關(guān)聯(lián)異步線程’與‘自定義代碼’這兩個從使用者角度看來非常關(guān)鍵的需求點,正是一部分APM產(chǎn)品功能上相對欠缺的地方。
關(guān)鍵字:數(shù)據(jù)關(guān)聯(lián)分析
除以上兩點外,Server端APM產(chǎn)品還應(yīng)在數(shù)據(jù)分析中突顯出各環(huán)節(jié)數(shù)據(jù)的關(guān)聯(lián)性。已經(jīng)使用過APM相關(guān)產(chǎn)品的朋友會了解,APM平臺中會提供很多不同的分析入口,如:業(yè)務(wù)過程、數(shù)據(jù)庫、NoSQL等。使用者從不同的入口進入查看相應(yīng)層面的數(shù)據(jù)。但是,在有一些APM平臺中,這些模塊是相互割裂的,使得大家無法對數(shù)據(jù)進行真正的鉆取分析。更先進的做法是把各個層面的數(shù)據(jù)全部打通,讓使用者可以對每條業(yè)務(wù)請求自由的串聯(lián)查看。比如:從數(shù)據(jù)庫入口進入后,可以關(guān)聯(lián)查看每條錯誤SQL語句都是由哪些請求調(diào)用的。這一點對于細化關(guān)鍵問題尤為重要,也是我們需要著重關(guān)注的。