微服務(wù)治理與統(tǒng)計(jì)分析
引言:
微服務(wù)架構(gòu)下,服務(wù)拆得越細(xì),服務(wù)的粒度越小,可組裝性就越好;與之相對(duì)的服務(wù)之間的調(diào)用關(guān)系就會(huì)變復(fù)雜,為了保證服務(wù)更好的運(yùn)行,需要對(duì)這些服務(wù)進(jìn)行監(jiān)控和管理。本文大家介紹下EOS微服務(wù)平臺(tái)如果對(duì)微服務(wù)進(jìn)行日志查看、API調(diào)用統(tǒng)計(jì)、限流、熔斷、負(fù)載均衡的管理。
目錄:
1.EOS微服務(wù)平臺(tái)簡(jiǎn)介
2.微服務(wù)監(jiān)控統(tǒng)計(jì)
3.微服務(wù)治理
1.EOS微服務(wù)平臺(tái)簡(jiǎn)介


(1)域是平臺(tái)中一組系統(tǒng)的統(tǒng)稱,通常為一組系統(tǒng)定義成有業(yè)務(wù)含義的域,比如信貸域。一個(gè)域有多個(gè)系統(tǒng),一個(gè)系統(tǒng)只能屬于一個(gè)域。一個(gè)域下可以日志中心、注冊(cè)中心、配置中心、APM監(jiān)控中心已經(jīng)斷路器監(jiān)控中心
(2)系統(tǒng)是平臺(tái)中一組應(yīng)用的統(tǒng)稱,通常為一組應(yīng)用定義成有業(yè)務(wù)含義的系統(tǒng),比如信貸系統(tǒng)。一個(gè)系統(tǒng)有多個(gè)應(yīng)用,一個(gè)應(yīng)用只能屬于一個(gè)系統(tǒng)。
(3)應(yīng)用(微服務(wù)應(yīng)用)是平臺(tái)開(kāi)發(fā)出的基本部署單元,一個(gè)應(yīng)用只能屬于一個(gè)系統(tǒng),一個(gè)應(yīng)用有1到多個(gè)應(yīng)用實(shí)例組。
(4)應(yīng)用實(shí)例組是平臺(tái)中應(yīng)用的實(shí)例分組,每個(gè)應(yīng)用可以有1到多個(gè)應(yīng)用實(shí)例分組,不同的應(yīng)用實(shí)例組擁有獨(dú)立的應(yīng)用配置與管理能力,不同的應(yīng)用實(shí)例組之間可以通過(guò)流控策略,實(shí)現(xiàn)應(yīng)用的灰度發(fā)布能力。應(yīng)用實(shí)例組下面有多個(gè)應(yīng)用實(shí)例。
(5)應(yīng)用實(shí)例是平臺(tái)下實(shí)際部署應(yīng)用的進(jìn)程,應(yīng)用實(shí)例屬于某一個(gè)應(yīng)用實(shí)例組。
2.微服務(wù)監(jiān)控統(tǒng)計(jì)
(1)應(yīng)用監(jiān)控

通過(guò)應(yīng)用監(jiān)控可以查看一個(gè)系統(tǒng)內(nèi)應(yīng)用之間的調(diào)用關(guān)系。單個(gè)應(yīng)用的平均響應(yīng)時(shí)間、平均吞吐以及慢的端點(diǎn)訪問(wèn)。
(2)實(shí)例監(jiān)控


通過(guò)實(shí)例監(jiān)控可以查看一個(gè)實(shí)例的運(yùn)行情況包括:平均吞吐、平均響應(yīng)時(shí)間、CPU、內(nèi)存以及SQL的執(zhí)行。
(3)請(qǐng)求監(jiān)控


通過(guò)請(qǐng)求監(jiān)控可以查看一個(gè)請(qǐng)求是成功還是錯(cuò)誤,它的響應(yīng)時(shí)間,以及它的調(diào)用鏈路:經(jīng)過(guò)了幾個(gè)微服務(wù),在每個(gè)微服務(wù)內(nèi)的耗時(shí)是什么情況。
(4)API調(diào)用統(tǒng)計(jì)

API調(diào)用統(tǒng)計(jì)可以按照應(yīng)用、實(shí)例組、實(shí)例、API來(lái)統(tǒng)計(jì)匯總請(qǐng)求信息,包括:響應(yīng)狀態(tài)碼,請(qǐng)求數(shù),最小響應(yīng)時(shí)間,最大響應(yīng)時(shí)間,平均響應(yīng)時(shí)間以及響應(yīng)時(shí)間總和。支持按應(yīng)用、實(shí)例組、實(shí)例、API、時(shí)間段等條件進(jìn)行查詢以及按請(qǐng)求數(shù)和響應(yīng)時(shí)間排序。
(5)應(yīng)用日志查看

應(yīng)用日志匯聚多個(gè)應(yīng)用實(shí)例的日志,進(jìn)行統(tǒng)一查看。查看時(shí)支持按實(shí)例以及時(shí)間段進(jìn)行查詢過(guò)濾,應(yīng)用日志自帶traceId, spanId這些請(qǐng)求追蹤號(hào)。
3.微服務(wù)治理
(1)實(shí)例上下線

通過(guò)設(shè)置實(shí)例的狀態(tài),使得實(shí)例不會(huì)被其他應(yīng)用調(diào)用。這個(gè)是在客戶端實(shí)現(xiàn),客戶端是通過(guò)ribbon做負(fù)載均衡,ribbon會(huì)過(guò)濾掉狀態(tài)為OUT_OF_SERVICE的服務(wù)提供者實(shí)例。
(2)API上下線

通過(guò)設(shè)置API的狀態(tài),使得API不會(huì)被其他應(yīng)用調(diào)用。這個(gè)是在服務(wù)端實(shí)現(xiàn),通過(guò)在服務(wù)端增加Filter攔截器,對(duì)已下線的API的請(qǐng)求訪問(wèn),返回403的狀態(tài)碼。
(3)熔斷


EOS的熔斷實(shí)現(xiàn)使用的是Hystrix,通過(guò)在頁(yè)面配置熔斷對(duì)象以及觸發(fā)條件來(lái)設(shè)置斷路器。熔斷對(duì)象對(duì)應(yīng)的是Hystrix的CommandKey,觸發(fā)條件包括:
- 手工熔斷(強(qiáng)制打開(kāi)熔斷器)
- 取消熔斷(強(qiáng)制關(guān)閉熔斷器)
- 自動(dòng)熔斷(規(guī)定時(shí)間內(nèi)請(qǐng)求數(shù)超過(guò)閾值并且失敗率達(dá)到閾值才會(huì)觸發(fā)熔斷, 熔斷后指定時(shí)間內(nèi)嘗試取消熔斷)
這個(gè)配置通過(guò)寫(xiě)入到配置中心及時(shí)下放到各個(gè)應(yīng)用,實(shí)現(xiàn)動(dòng)態(tài)配置能力。
(4)限流

EOS現(xiàn)在的限流是對(duì)于每個(gè)應(yīng)用實(shí)例獨(dú)立計(jì)算,如設(shè)置每秒訪問(wèn)10次,一個(gè)應(yīng)用有3個(gè)實(shí)例,則這3個(gè)實(shí)例每個(gè)都允許每秒訪問(wèn)10次。限流是通過(guò)在服務(wù)端的Filter里使用Guava的RateLimiter實(shí)現(xiàn)。
這個(gè)配置通過(guò)寫(xiě)入到配置中心及時(shí)下放到各個(gè)應(yīng)用,實(shí)現(xiàn)動(dòng)態(tài)配置能力。
(5)負(fù)載均衡

EOS的負(fù)載均衡使用的是Ribbon實(shí)現(xiàn),可以針對(duì)每個(gè)目標(biāo)客戶端設(shè)置規(guī)則類(lèi)型,支持:隨機(jī)、循環(huán)、自定義等;另外還支持容錯(cuò),容錯(cuò)是指當(dāng)對(duì)某個(gè)實(shí)例的調(diào)用超時(shí)后的補(bǔ)救措施:
- 快速失敗(Failfast):什么也不做,直接拋出異常
- 失敗自動(dòng)切換(Failover):嘗試訪問(wèn)新的實(shí)例,按指定次數(shù)嘗試
- 失敗原地重試(Failback):嘗試訪問(wèn)同一實(shí)例,按指定次數(shù)嘗試
這個(gè)配置通過(guò)寫(xiě)入到配置中心及時(shí)下放到各個(gè)應(yīng)用,實(shí)現(xiàn)動(dòng)態(tài)配置能力。
以上向大家分享了普元EOS 8 微服務(wù)平臺(tái)里治理與統(tǒng)計(jì)分析,希望對(duì)大家有所幫助。不足之處,也請(qǐng)多多指正。