Metrics:讓微服務(wù)運(yùn)行更透明

內(nèi)容來源:2018年1月11日,華為開發(fā)工程師鄭揚(yáng)勇在“ServiceComb在線直播”進(jìn)行《特性:Metrics》演講分享。IT 大咖說(WeChat_ID:itdakashuo)作為獨(dú)家視頻合作方,經(jīng)主辦方和講者審閱授權(quán)發(fā)布。

閱讀字?jǐn)?shù):1860?| 4分鐘閱讀

觀看嘉賓完整演講視頻及PPT,請點(diǎn)擊:http://t.cn/E2e1zjI

摘要

讓微服務(wù)運(yùn)行狀態(tài)清晰可見。

Metrics是什么

直譯是“度量”,不同的領(lǐng)域定義有所區(qū)別,在微服務(wù)領(lǐng)域中的定義:

“對微服務(wù)的某個(gè)指標(biāo)給予一個(gè)可量化程度的測量”

Metrics應(yīng)該具備的特性:

Comparative(可對比):指標(biāo)能夠在不同的微服務(wù)或同一個(gè)微服務(wù)的多個(gè)實(shí)例之間比較;

Understandable(易理解):指標(biāo)所衡量的對象、計(jì)算方法和輸出的結(jié)果值都是容易理解的;

Ratio(理想的比例):理想結(jié)果可預(yù)見,可以立即用于比較。

如何判定Metrics實(shí)現(xiàn)的優(yōu)劣?

衡量Metrics實(shí)現(xiàn)優(yōu)劣的標(biāo)準(zhǔn)有:

1、關(guān)鍵指標(biāo)覆蓋全,這是能夠快速定位問題的基礎(chǔ);

2、計(jì)量準(zhǔn)確,錯(cuò)誤的計(jì)量和算法只會幫倒忙;

3、高性能低資源占用,畢竟Metrics是可選模塊,要保證資源占用不超過10%;

4、無侵入或低侵入,同樣,由于Metrics是可選模塊,讓用戶修改代碼是不可取的。

Metrics的分類

Metrics有很多種分類方式,在技術(shù)實(shí)現(xiàn)上我們偏向以取值方式區(qū)分為兩種。

1、直接取值。任何時(shí)候都能夠立刻獲取到最新值,例如資源使用率,包括CPU使用率,線程數(shù),Heap使用數(shù)據(jù)等等,還有調(diào)用累加次數(shù),當(dāng)前隊(duì)列長度等等。

2、統(tǒng)計(jì)取值。經(jīng)過一個(gè)特定的時(shí)間周期才能夠統(tǒng)計(jì)出值,這個(gè)時(shí)間間隔我們可以稱為窗口周期(Window Time)或統(tǒng)計(jì)周期,例如:

a) 多值取其一的,比如Max、Min、Median(中位值);

b) 與時(shí)間相關(guān)的,比如TPS(transaction per second);

c) 與個(gè)數(shù)相關(guān)的,比如累加平均值、方差等等;

獲取此類Metrics的值,返回的是上一個(gè)周期的統(tǒng)計(jì)結(jié)果,具有一定的延后性。

為什么需要Metrics

上圖是傳統(tǒng)的單體應(yīng)用,多模塊緊耦合,Client Application調(diào)用API,然后模塊在內(nèi)部相互調(diào)用,還會涉及操作數(shù)據(jù)庫的一大堆邏輯,隨著功能的不斷增加,它的體積會越來越大,這樣的系統(tǒng)開發(fā)人員維護(hù)起來會頭暈?zāi)X脹,到某個(gè)階段重構(gòu)幾乎是不可避免的。

但是這種單體應(yīng)用卻很受系統(tǒng)運(yùn)維人員歡迎,維護(hù)它的工作很簡單。

進(jìn)入微服務(wù)時(shí)代之后,我們會將單體應(yīng)用切分成很多微服務(wù),還會使用負(fù)載均衡,這樣一個(gè)單體應(yīng)用最終可能轉(zhuǎn)化為成百上千的微服務(wù)實(shí)例。

所以微服務(wù)化后,問題沒有消失,只是轉(zhuǎn)移了,開發(fā)人員把這個(gè)“鍋”甩給了運(yùn)維人員。因此微服務(wù)平臺化或上云成為趨勢,通過自動化程度很高的平臺工具降低運(yùn)維人員的負(fù)擔(dān)。要使這些平臺工具發(fā)揮作用,例如制定報(bào)警策略、彈性伸縮策略等等,必須提供豐富的Metrics數(shù)據(jù)作為支撐。

開源領(lǐng)域的Metrics比較

由于Metrics的重要性日漸凸顯,開源領(lǐng)域已有較多實(shí)現(xiàn),熱門的包括Netflix Servo、Dropwizard Metrics和Spring Boot Actuator等,比較如下:

我們結(jié)合ServiceComb Java Chassis的優(yōu)勢,更進(jìn)一步開發(fā)了包含關(guān)鍵指標(biāo)無侵入自動打點(diǎn),豐富的統(tǒng)計(jì)維度和極低的資源占用等諸多優(yōu)點(diǎn)的Metrics系統(tǒng)。

ServiceComb Java Chassis中的Metrics

ServiceCombJava Chassis是一個(gè)包含了服務(wù)注冊,服務(wù)發(fā)現(xiàn),服務(wù)配置以及管理功能的微服務(wù)框架,因此我們決定提供內(nèi)置的更強(qiáng)大的Metrics功能:

1、開箱即用,不寫一行代碼輸出關(guān)鍵Metrics,全面覆蓋調(diào)用數(shù)、TPS、Latency等;

2、基于Netflix Servo,使用固定統(tǒng)計(jì)周期(稍后會詳細(xì)介紹);

3、多維度統(tǒng)計(jì),幫助用戶抽絲剝繭快速定位問題,支持的維度包括:

a) 微服務(wù)實(shí)例(Instance)級和操作(Operation)級;

b) 操作結(jié)果成功(Success)和失?。‵ailed)(開發(fā)中);

c) Transport區(qū)分Rest和Highway(評估中)。

依賴關(guān)系

Metrics-Core是我們的核心功能模塊,之上的Metrics-Extension模塊用于擴(kuò)展。在Metrics Extension里面,我們實(shí)現(xiàn)了Prometheus的集成,它依賴于Prometheus Java Client和Metrics-Core。

Metrics默認(rèn)輸出列表

其中對于時(shí)延類的Metrics,都包含max、min、average三個(gè)指標(biāo)。

使用多周期適應(yīng)不同的場景需求

為了具備高性能的同時(shí)又能保持極低的開銷,我們使用固定周期的方式實(shí)現(xiàn)Metrics統(tǒng)計(jì),同時(shí)支持多周期以適應(yīng)不同的場景需求,多周期的原理可以看下面的例子:

例如統(tǒng)計(jì)報(bào)告中的日報(bào)、周報(bào)、月報(bào)、季報(bào)、年報(bào)就是使用了多周期滿足不同的統(tǒng)計(jì)需求。

支持Health Check

微服務(wù)很可能依賴數(shù)據(jù)庫、其它微服務(wù)或中間件,這些組件狀態(tài)正常是微服務(wù)能夠正常提供服務(wù)的前提,通過Health Check使得微服務(wù)支持檢查依賴組件的狀態(tài)并返回,可以用于制定策略,也可以用于Dashboard展現(xiàn)。

相比使用Metrics返回一個(gè)狀態(tài)值,Health Check的返回更豐富,可以附帶額外信息,例如詳細(xì)的錯(cuò)誤Trace。

未來的開發(fā)計(jì)劃

未來Java Chassis Metrics將強(qiáng)化如下幾個(gè)方面的內(nèi)容:

1、我們需要實(shí)現(xiàn)或?qū)右粋€(gè)更優(yōu)秀的可視化界面用于展示Metrics的更多特性,僅僅是集成Prometheus是不夠的(SCB-252);

2、我們將研究如何與主流的監(jiān)控系統(tǒng)例如Zabbix、Nagios、Cacti等更簡單高效的集成,以及提出通用的集成第三方監(jiān)控系統(tǒng)的方案;

3、我們將強(qiáng)化Metrics作為數(shù)據(jù)源,如何更好的支持在監(jiān)控系統(tǒng)中制定報(bào)警、彈性伸縮等策略,降低運(yùn)維人員的工作量,提升運(yùn)維效率。

如何參與到ServiceComb社區(qū)

官網(wǎng):http://servicecomb.incubator.apache.org/cn/

通過訂閱郵件列表參與討論:

1、發(fā)送任意內(nèi)容至郵箱:dev-subscribe@servicecomb.incubator.apache.org

2、收到來自dev-help的郵件后,再回復(fù)任意內(nèi)容來確認(rèn)訂閱郵件列表

在Apache JIRA(https://issues.apache.org/jira/browse/SCB)上提issue或查看最新的開發(fā)任務(wù)及進(jìn)展;

加入微信群進(jìn)行交流;

通過Github(https://github.com/apache?q=servicecomb)發(fā)起PR

今天的分享就到這里,謝謝大家!

編者:IT大咖說,轉(zhuǎn)載請標(biāo)明版權(quán)和出處

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Service Mesh新秀,初出茅廬便聲勢浩蕩,前有Google,IBM和Lyft傾情奉獻(xiàn),后有業(yè)界大佬俯首膜拜...
    燕京博士閱讀 7,294評論 3 19
  • 貝聊成立于 2013 年,是中國幼兒園家長工作平臺,致力于通過互聯(lián)網(wǎng)產(chǎn)品及定制化解決方案,幫助幼兒園解決展示、通知...
    劍值圓滿閱讀 2,228評論 1 10
  • 摘要:本文中,我們將進(jìn)一步理解微服務(wù)架構(gòu)的核心要點(diǎn)和實(shí)現(xiàn)原理,為讀者的實(shí)踐提供微服務(wù)的設(shè)計(jì)模式,以期讓微服務(wù)在讀者...
    Java架構(gòu)師Carl閱讀 6,361評論 0 20
  • 好累,困死了 今天回來的時(shí)候,出了一點(diǎn)小意外,還好最后處理的沒啥情況,大家相安無事,平平安安的回來了,今天確實(shí)累了...
    蝶飛殘雪閱讀 312評論 0 0
  • 生命修煉的兩大主題| 釋放 | 玄冥 1生命隱藏根性的負(fù)面釋放 2物質(zhì)身體承載的冥靈之象,易象玄變。a...
    UniverseArtwork閱讀 255評論 0 0

友情鏈接更多精彩內(nèi)容