服務調用鍊技術是微服務架構中對服務進行監控的重要環節,它可以幫助我們清晰地了解當前系統的運行情況,同時幫助我們定位問題,解決分布式網絡下服務交互追蹤的問題。
APM與調用鍊技術
在單體應用架構拆分為微服務架構後,一個用戶請求會跨網絡依次調用不同的服務節點進行分布式交互處理,最後将結果彙總處理,再将結果返回給用戶。那麼在整個處理的鍊條中,如果有任何一個節點出現了延遲或者超時等問題,都有可能導緻最終結果出現異常。在很多場景下,一個功能可能需要多個技術團隊、多種技術棧、多個跨地域網絡中的不同服務協調完成。我們想要排查出鍊條中具體哪個服務節點出了問題,其實并不容易。所以微服務架構的一大挑戰就是分布式網絡交互帶來的固有複雜性。
談到分布式網絡環境下的應用交互,就不得不提到分布式計算的八大誤區,這些誤區無疑都與我們對應用構架所在的基礎設施——網絡認識不足有關。下面我們将這些誤區從應用使用網絡的視角,按照正确的理解總結如下:
● 網絡是不可靠的,我們的應用可以随時發現網絡的異常,并适應網絡的不可靠。
● 網絡存在延遲,應用系統需要通過網絡監控工具了解網絡狀況,避免系統的異常行為。
● 帶寬是有限的,應用的傳輸數據在逐漸增大,盡管應用系統無法控制生産環境下的網絡帶寬,但是我們需要模拟網絡,監控并控制應用數據的傳輸上限。
● 網絡是不安全的,應用需要在早期就将安全因素考慮到設計方案中。
● 網絡的拓撲是變化的,網絡設備(例如DNS)、存儲資源的遷移都需要在應用架構層面盡量做到對用戶無感知。
● 系統存在多個管理員,應用需要向不同管理員提供可視化的應用管理界面,并幫助他們去管理應用。
● 數據傳輸是需要成本的,應用在網絡上傳播,無論如何都會耗費額外資源。數據序列化會耗費計算資源、網絡傳輸上的延遲,這些都是數據傳輸的成本,都要求應用使用更加經濟高效的解決方案。
● 網絡是異構的,應用之間可能采用不同的網絡協議,應用集成交互時最好采用通用協議。
總結來看,這些問題都是分布式網絡下的陷阱。在微服務架構下,由于服務之間的交互對網絡有如此強的依賴,我們需要時刻了解請求耗時、網絡延遲、業務吞吐、系統運行等情況,所以,我們需要一個系統來分析當前系統的瓶頸,解決系統問題。而一套APM系統和調用鍊技術就可以幫助我們了解當前應用的狀态。
APM與調用鍊的概念
APM是一種應用性能管理/監控技術架構,用以将應用運行過程中的函數調用、網絡調用等時間和性能進行指标化及可視化展現。
而調用鍊技術可以說是APM應用性能管理的子集。通過跟蹤一次業務調用請求,記錄業務在進程内部及進程之間的調用關系(調用信息包括時間、接口、結果)到日志中,然後根據日志信息進行分析處理,掌握分布式網絡環境下請求的全鍊路跟蹤還原及展示的技術。調用鍊技術綜合了數據埋點、采集、數據聚合、數據展示等多項技術,可以根據不同層次和維護的分析,标識出服務調用異常,快速定位問題,從微觀層面監控系統的運行狀态,是一種細粒度的服務監控模式。
調用鍊技術的作用
● 快速定位問題:業務全鍊路監控就是要從業務的視角出發,監控整個業務流程的健康狀況,無須多個系統切換,直觀看到全局和上下遊,方便快速發現、定位問題。這個作用前面一直在講,在微服務架構下,問題定位就變得非常複雜了,一個請求可能會經過多個服務節點,使用調用鍊技術能讓開發人員快速地定位到問題和問題所在的相應模塊。
● 拓撲關系:當微服務拆分後,服務之間的調用關系也随之變得複雜,而調用鍊技術可以幫助我們準确地掌握服務之間的調用關系,并清晰地表現為網絡拓撲圖。
● 優化系統:優化系統也是調用鍊技術很重要的一個功能。因為我們記錄了請求在調用鍊上每一個環節的信息,就可以通過這個來找出系統的瓶頸,做出針對性的優化。還可以分析調用鍊是否合理,是否調用了不必要的服務節點,是否有更近、響應更快的服務節點。通過對調用鍊的分析,我們就可以找出最優的調用路徑,從而提高系統的性能。
本文給大家講解的内容是服務監控治理,服務調用鍊技術,APM與調用鍊技術- 下篇文章給大家講解的内容是服務監控治理,服務調用鍊技術,Dapper與分布式跟蹤原理
- 覺得文章不錯的朋友可以轉發此文關注小編;
- 感謝大家的支持!