2020-04-24 14:15:27分類:云服務(wù)端開發(fā)6276
這是因?yàn)槲覀冊(cè)谝粋€(gè)系統(tǒng)復(fù)雜且分布在多個(gè)微服務(wù)之間的時(shí)代工作。例如,即使是簡單的電子商務(wù)應(yīng)用程序也可能具有訂購,產(chǎn)品目錄和運(yùn)輸服務(wù)。我們的工具和實(shí)踐有時(shí)難以跟上這種復(fù)雜性。
它使我想起音樂和視頻游戲。在視頻游戲的早期,很多音樂都以MIDI文件的形式出現(xiàn)。這些文件只能播放一組音符,這使音樂感覺平坦。現(xiàn)在,音樂可以充實(shí)了。我們聽見每一種樂器,都在交響樂中演奏。節(jié)奏和樂器的結(jié)合使音樂比它們本身更優(yōu)美。
一次只有一個(gè)系統(tǒng)?
在軟件中,我們練習(xí)一次監(jiān)視一個(gè)系統(tǒng)。當(dāng)我們需要查看其他系統(tǒng)時(shí),我們切換到其他屏幕或工具。但是微服務(wù)就像交響樂中的樂器。我們需要一種看待它們的方法,一眼就能看到它們產(chǎn)生的音樂。
在本文中,我們將探討您可以采取的五個(gè)步驟,以確保您可以監(jiān)視微服務(wù)以查看它們是否和諧地協(xié)同工作。這也使您可以修復(fù)可能會(huì)導(dǎo)致工作不協(xié)調(diào)的地方。
微服務(wù)是什么意思?
微服務(wù)是可自主部署的,以業(yè)務(wù)為中心的單元。并非所有部署工件都是單獨(dú)的服務(wù)。例如,我可能有一個(gè)微服務(wù),該微服務(wù)具有運(yùn)行時(shí)組件和ETL組件。我想將它們一起部署,因?yàn)樗鼈兙o密耦合。在大多數(shù)情況下,我也希望將這些作為一項(xiàng)服務(wù)進(jìn)行監(jiān)視。對(duì)于微服務(wù),我希望將它們視為獨(dú)立的服務(wù),但還要評(píng)估它們之間的相互關(guān)系。
現(xiàn)在,讓我們看看監(jiān)視微服務(wù)時(shí)需要執(zhí)行的五個(gè)步驟。
1.確定只需啟動(dòng)幾個(gè)服務(wù)
在實(shí)施或?qū)W習(xí)新東西時(shí),嘗試一次性安裝并運(yùn)行所有精彩功能可能很誘人。在軟件開發(fā)中,我們稱此為“閃亮工具綜合癥”。我們陷入了無限的可能性,以至于我們可能會(huì)因?yàn)樵O(shè)置事物的復(fù)雜性而迷失了自己。
為了避免這種情況,請(qǐng)限制為微服務(wù)監(jiān)控設(shè)置的內(nèi)容。選擇兩個(gè)或三個(gè)服務(wù)以連接到新的監(jiān)視工具。然后為每個(gè)重復(fù)步驟2至5(請(qǐng)參閱下文)。
您應(yīng)該選擇哪些服務(wù)?
要從這篇文章的開頭繼續(xù)進(jìn)行比較,請(qǐng)選擇您的交響樂中響度最高的樂器。哪些服務(wù)對(duì)您的業(yè)務(wù)最具戰(zhàn)略意義?選擇最具戰(zhàn)略意義的服務(wù)將為您帶來最大的價(jià)值。
您可能無法選擇最具有戰(zhàn)略意義的服務(wù)。也許其中一些是舊版應(yīng)用程序,可能無法在較新的工具上很好地發(fā)揮作用,或者沒有使您輕松重新配置它們的測(cè)試。在這種情況下,請(qǐng)選擇您認(rèn)為最安全的幾項(xiàng)服務(wù),并且可以在本地運(yùn)行,以確保正確連接。
總體目標(biāo)是將注意力集中在僅提供幾個(gè)服務(wù)上,而無論您選擇哪種服務(wù)。
2.確定首先要衡量的事情
與限制注意力的想法一致,您需要熟悉要衡量的最重要的一到三個(gè)最重要的指標(biāo)。一些工具具有許多功能。例如,Retrace可以執(zhí)行性能指標(biāo),警報(bào),集中式日志記錄和錯(cuò)誤跟蹤。如果您尚未選擇監(jiān)視工具,那么審查所有功能可能會(huì)令人生畏。
相反,僅查看您最重要的指標(biāo)中的一到三個(gè),將使您避開這種分析癱瘓。這樣一來,您便可以更快地進(jìn)行第3步的操作,而不必試圖一次了解所有內(nèi)容。
您應(yīng)該關(guān)注哪些指標(biāo)?
要弄清楚要關(guān)注哪些指標(biāo),了解您的業(yè)務(wù)需求很重要。大多數(shù)客戶或運(yùn)營投訴來自哪里?是因?yàn)榉?wù)關(guān)閉過多或請(qǐng)求太慢?可能是由于在高負(fù)載期間彈出了太多數(shù)據(jù)庫錯(cuò)誤。
您對(duì)業(yè)務(wù)的了解越深,就越容易選擇適合的指標(biāo)。而且,為老板提供所需的預(yù)算會(huì)更容易,因?yàn)槟梢再徺I工具。
如果您發(fā)現(xiàn)自己處于孤立狀態(tài)(與其他小組或部門分開),或者不知該對(duì)您的業(yè)務(wù)最重要怎么辦?從四個(gè)黃金信號(hào)開始。這些信號(hào)是一種行之有效的方式,可以從監(jiān)視服務(wù)中獲得即時(shí)價(jià)值。它們幾乎對(duì)所有企業(yè)都通用。Retrace開箱即用地支持這些功能,并具有智能默認(rèn)值,具體取決于您要監(jiān)視的服務(wù)類型。
3.調(diào)試APM和記錄軟件
現(xiàn)在,您已經(jīng)完成家庭作業(yè),可以選擇監(jiān)視工具。使用一到三個(gè)重要指標(biāo)來指導(dǎo)您如何看待一個(gè)指標(biāo)。如果他們有一個(gè)演示實(shí)例,那么您可以盡情地研究內(nèi)容,以了解其實(shí)際工作原理。這是理想的體驗(yàn),因?yàn)槠聊唤貓D只能帶您到現(xiàn)在為止。
無論指標(biāo)如何,您都希望在監(jiān)視工具中看到一些信息。首先,您需要輕松地概述整個(gè)系統(tǒng)。這不僅包括您的運(yùn)行時(shí)服務(wù),還包括您的數(shù)據(jù)庫和其他后端組件。這樣一來,您就可以輕松感受到整個(gè)系統(tǒng)的節(jié)奏,就像聽到一首所有樂器一起工作的歌曲一樣。
您還需要儀表板,使您可以跨服務(wù)關(guān)聯(lián)。這些可能會(huì)揭示在代碼中不容易看到的關(guān)系。(如果您按照下面列出的步驟5進(jìn)行操作,則可以從這些日志快速跳轉(zhuǎn)到集中式日志,以查看發(fā)生了什么。)
該工具應(yīng)該做什么
最后,該工具應(yīng)使您可以輕松地將概述分為系統(tǒng)的特定服務(wù)和部分。您應(yīng)該可以切成幾個(gè)不同的尺寸。該工具應(yīng)該完成查明潛在問題的大部分艱苦工作。具有智能默認(rèn)設(shè)置的工具將使此操作變得容易,因?yàn)樗鼘⒁远喾N粒度設(shè)置所需的顯示器組合。
您不僅應(yīng)查看用于監(jiān)視的工具,還應(yīng)查看用于集中日志記錄的工具。我提出集中式日志記錄也是因?yàn)楸O(jiān)視器總是以某種方式聚合。他們擅長顯示趨勢(shì)和整體健康狀況。但是在某些時(shí)候,您需要深入挖掘到底發(fā)生了什么。您無需訪問多個(gè)日志字段即可查看跨多個(gè)微服務(wù)的請(qǐng)求的故事。相反,您應(yīng)該能夠在一處查看來自多個(gè)服務(wù)的日志。
Retrace具有監(jiān)視和集中記錄功能,但這不是必需的。監(jiān)控工具可以與日志記錄工具分開,只要您可以將日志與在監(jiān)視器中看到的內(nèi)容相關(guān)聯(lián)即可,例如,應(yīng)用程序ID和時(shí)間戳。(在第5步中,我們將討論如何創(chuàng)建強(qiáng)相關(guān)ID。)
4.擴(kuò)展點(diǎn)的儀器指標(biāo)
一個(gè)好的工具將具有某種自動(dòng)檢測(cè)服務(wù)的方式。通常,這意味著您必須添加一個(gè)庫并配置一些屬性才能連接到正確的服務(wù)器。確保該工具支持所選語言和框架的檢測(cè)。否則,您將必須在框架的請(qǐng)求生命周期中找到接縫以進(jìn)行自我檢測(cè)。一些框架(例如Spring Boot)內(nèi)置了監(jiān)視擴(kuò)展。
即使使用自動(dòng)樂器,大多數(shù)工具也應(yīng)允許您自定義。這樣一來,您就可以進(jìn)入應(yīng)用程序中由于不理想的情況而演變而來的那些怪異的地方。
進(jìn)行檢測(cè)和配置后,請(qǐng)?jiān)诒镜剡\(yùn)行服務(wù),指向監(jiān)視器服務(wù)器。確保數(shù)據(jù)實(shí)際上已從服務(wù)進(jìn)入您的工具。如果您使用的是Retrace,這是一篇很棒的文章,描述了如何驗(yàn)證應(yīng)用程序是否正常運(yùn)行。
5.儀器追蹤到您的日志
即使一切都已連接并開始運(yùn)行,我仍然建議您做一件事。我之前提到過集中式日志記錄,以及最終找出問題的重要性。使用微服務(wù),可能很難跟蹤系統(tǒng)中事件的蹤跡。這使得跨服務(wù)的錯(cuò)誤幾乎找不到。
我建議在每個(gè)服務(wù)中實(shí)現(xiàn)跟蹤ID。您需要以一種標(biāo)準(zhǔn)的方式在整個(gè)服務(wù)中執(zhí)行此操作,以便一個(gè)跟蹤ID可以在整個(gè)系統(tǒng)中流動(dòng)。OpenTracing標(biāo)準(zhǔn)是實(shí)現(xiàn)此目標(biāo)的好方法,并且許多框架都有支持它的工具庫。有了此功能,您將能夠輕松查詢跨多個(gè)服務(wù)的日志,并探究問題如何在您的軟件中泛濫。
結(jié)論
監(jiān)視微服務(wù)就像監(jiān)視大多數(shù)系統(tǒng)一樣,但是只有幾步曲折。您將需要一個(gè)可以同時(shí)監(jiān)視多個(gè)服務(wù)的工具。您還需要向每個(gè)服務(wù)添加跟蹤信息,以便您了解它們之間的交互方式。有了這些,您將擁有美麗的服務(wù)交響樂,隨時(shí)隨地提供見解,使您能夠就我們的擴(kuò)展和架構(gòu)做出明智的決策。