開頭:
本次講解基於前面兩節的課程,使用用戶微服務調用訂單微服務,重點介紹下新一代微服務監控治理平台的一個使用,通過本次分享希望大家新一代微服務監控治理平台有個感官的認識,現在項目還在開發過程中,還有不足的地方,我在講的地方有不足的地方也希望大家進行提問。。
應用介紹
應用是平台開發出的基本部署單元,一個應用只能屬於一個系統。
(5)一個應用有1到多個應用實例組。
(4)應用實例組是平台中應用的實例分組,不同的應用實例組擁有獨立的應用配置與管理能力,不同的應用實例組之間可以通過流控策略,實現應用的灰度發布能力。
應用實例組下面有多個應用實例,應用實例是平台下實際部署應用的進程,應用實例屬於某一個應用實例組。
(1) 應用實例上下線
通過設置實例的狀態,使得實例不會被其他應用調用。這個是在客戶端實現,客戶端是通過ribbon做負載均衡,ribbon會過濾掉狀態為OUT_OF_SERVICE的服務提供者實例
(2) API上下線
通過設置API的狀態,使得API不會被其他應用調用。這個是在服務端實現,通過在服務端增加Filter攔截器,對已下線的API的請求訪問,返回403的狀態碼。
服務限流策略
服務限流是微服務集群自我保護的一種常用機制,我們對線上調用比較頻繁及資源占用較大的應用都加上了相應的限流舉措,針對應用我們提供了實例限流的策略。針對網關的限流,后期支持API 級別的服務限流、通過API的限流。通過限流功能保護微服務免受流量沖擊。
限流是對於每個應用實例獨立計算,如設置每秒訪問10次,一個應用有3個實例,則這3個實例每個都允許每秒訪問10次。限流是通過在服務端的Filter里使用Guava的RateLimiter實現。
這個配置通過寫入到配置中心及時下放到各個應用,實現動態配置能力。
服務熔斷功能的介紹
在高並發場景下,我們希望一個請求如果不成功,不要占用資源,應該盡快失敗,盡快返回。這就需要熔斷策略,也即當A調用B,而B總是不正常的時候,為了讓B不要波及到A,可以對B的調用進行熔斷,也即A不調用B,而是返回暫時的fallback數據,當B正常的時候,再放開熔斷,進行正常的調用。
平台提供的熔斷實現使用的是Hystrix,通過在頁面配置熔斷對象以及觸發條件來設置斷路器。熔斷對象對應的是Hystrix的CommandKey,觸發條件包括:
手工熔斷(強制打開熔斷器)
取消熔斷(強制關閉熔斷器)
自動熔斷(規定時間內請求數超過閾值並且失敗率達到閾值才會觸發熔斷, 熔斷后指定時間內嘗試取消熔斷)
這個配置通過寫入到配置中心及時下放到各個應用,實現動態配置能力。
負載均衡策略:
負載均衡策略是服務治理的重要特性,主要是指應用調用的客戶端選擇合適的負載均衡策略來調用服務,我們提供了隨機、循環、自定義等負載均衡策略;
另外還支持容錯,服務調用並不總是一定成功的,可能因為服務提供者節點自身宕機、進程異常退出或者網絡出現故障等原因。對於服務調用失敗的情況,需要有手段自動恢復,來保證調用成功。
快速失敗(Failfast):什么也不做,直接拋出異常失敗
自動切換(Failover):嘗試訪問新的實例,按指定次數嘗試失敗原地重試(Failback):嘗試訪問同一實例,按指定次數嘗試
這個配置通過寫入到配置中心及時下放到各個應用,實現動態配置能力。
鏈路分析功能點的介紹
隨着系統服務數量會逐漸增多,系統之間的關系也日益復雜,這個時候想要了解整個系統的運行情況就成為一個難題。
1、通過鏈路監控你可以了解應用間的拓撲關系,分析應用上下游調用關系,梳理系統依賴。
2、通過請求監控可以查看
一個請求是成功還是錯誤,它的響應時間,以及它的調用鏈路:
這一次請求經過了幾個微服務,在每個微服務內的耗時是什么情況;
1、當遇到請求耗時較長的情況,可以通過調用鏈分析調用瓶頸,快速定位異常。
通過應用監控可以查看一個系統內應用之間的調用關系。單個應用的平均響應時間、平均吞吐以及慢的端點訪問。
通過實例監控可以查看一個實例的運行情況包括:平均吞吐、平均響應時間、CPU、內存以及SQL的執行。
應用監控介紹
2、JVM信息:JVM信息(線程信息、堆信息、非堆信息),系統CPU使用情況
2、指標: |
顯示應用多樣的度量信息,展示了可以追蹤的所有的度量,有了這些數據就可以做預警 |
3、HttpTrace:可以展示當前應用最近100次的api調用信息
日志功能:展示了當前的日志級別,更強大的是,它可以實時調整日志級別,而不用去改log4j2配置文件,也不用重啟。在有問題需要更詳細的日志的時候,非常方便。
1、 線程功能:可以實時地查看每個線程的狀態,並且能下載Thread Dump文件,方便有故障的時候分析。同樣,還能下載Heap Dump文件,在占用內存居高不下,還不能GC時,可以用來分析。
2、 映射功能:能查看所有的@RequestMapping的路徑和方法及返回類型等。
服務統計監控:
應用調用:可以查看當前系統下應用在1天、1小時、十分鍾請求的一個請求的一個統計分析
在服務匯總模塊:
對服務進行實時的監控和信息告警,實現一個可視化的運維監控系統。API調用統計可以按照應用、實例組、實例、API來統計匯總請求信息,包括:響應狀態碼,請求數,最小響應時間,最大響應時間,平均響應時間以及響應時間總和。支持按應用、實例組、實例、API、時間段等條件進行查詢以及按請求數和響應時間排序。
總結:
以上就是本次分享的主要內容,介紹了服務治理發展的 4 個階段的治理需求及特點,給出了微服務治理的整體架構;重點介紹了微服務度量及分析體系的構建,這是微服務管控及管理的前提和基礎;最后,分別針對微服務的線上及線下體系的治理做了深入的討論。