超過十載行業(yè)經(jīng)驗(yàn),技術(shù)領(lǐng)先,服務(wù)至上的經(jīng)營(yíng)模式,全靠網(wǎng)絡(luò)和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務(wù)范圍包括了:
成都網(wǎng)站制作、成都做網(wǎng)站,成都網(wǎng)站推廣,成都網(wǎng)站優(yōu)化,整體網(wǎng)絡(luò)托管,
微信小程序定制開發(fā),微信開發(fā),
App定制開發(fā),同時(shí)也可以讓客戶的網(wǎng)站和網(wǎng)絡(luò)營(yíng)銷和我們一樣獲得訂單和生意!
分布式系統(tǒng)調(diào)用鏈監(jiān)控
期間我們會(huì)關(guān)注各個(gè)調(diào)用的各項(xiàng)性能指標(biāo),比如吞吐量(TPS)、響應(yīng)時(shí)間及錯(cuò)誤記錄等。
- 吞吐量,根據(jù)拓?fù)淇上鄳?yīng)計(jì)算組件、平臺(tái)、物理設(shè)備的實(shí)時(shí)吞吐量。
- 響應(yīng)時(shí)間,包括整體調(diào)用的響應(yīng)時(shí)間和各個(gè)服務(wù)的響應(yīng)時(shí)間等。
- 錯(cuò)誤記錄,根據(jù)服務(wù)返回統(tǒng)計(jì)單位時(shí)間異常次數(shù)。
全鏈路性能監(jiān)控從整體維度到局部維度展示各項(xiàng)指標(biāo),將跨應(yīng)用的所有調(diào)用鏈性能信息集中展現(xiàn),可方便度量整體和局部性能,并且方便找到故障產(chǎn)生的源頭,生產(chǎn)上可極大縮短故障排除時(shí)間。
Google Dapper
系統(tǒng)整個(gè)調(diào)用鏈
- 當(dāng)用戶發(fā)起一個(gè)請(qǐng)求時(shí),首先到達(dá)前端A服務(wù),然后分別對(duì)B服務(wù)和C服務(wù)進(jìn)行RPC調(diào)用;
- B服務(wù)處理完給A做出響應(yīng),但是C服務(wù)還需要和后端的D服務(wù)和E服務(wù)交互之后再返還給A服務(wù),最后由A服務(wù)來響應(yīng)用戶的請(qǐng)求;
對(duì)整個(gè)調(diào)用過程的追蹤
- 請(qǐng)求到來生成一個(gè)全局TraceID,通過TraceID可以串聯(lián)起整個(gè)調(diào)用鏈,一個(gè)TraceID代表一次請(qǐng)求。
- 除了TraceID外,還需要SpanID用于記錄調(diào)用父子關(guān)系。每個(gè)服務(wù)會(huì)記錄下parent id和span id,通過他們可以組織一次完整調(diào)用鏈的父子關(guān)系。
- 一個(gè)沒有parent id的span成為root span,可以看成調(diào)用鏈入口。
- 所有這些ID可用全局唯一的64位整數(shù)表示;
- 整個(gè)調(diào)用過程中每個(gè)請(qǐng)求都要透?jìng)鱐raceID和SpanID。
- 每個(gè)服務(wù)將該次請(qǐng)求附帶的TraceID和附帶的SpanID作為parent id記錄下,并且將自己生成的SpanID也記錄下。
- 要查看某次完整的調(diào)用則只要根據(jù)TraceID查出所有調(diào)用記錄,然后通過parent id和span id組織起整個(gè)調(diào)用父子關(guān)系。
調(diào)用鏈監(jiān)控核心工作
- 調(diào)用鏈數(shù)據(jù)的生成,對(duì)整個(gè)調(diào)用過程的所有應(yīng)用進(jìn)行埋點(diǎn)并輸出日志。
- 調(diào)用鏈數(shù)據(jù)采集,對(duì)各個(gè)應(yīng)用中的日志數(shù)據(jù)進(jìn)行采集。
- 調(diào)用鏈數(shù)據(jù)存儲(chǔ)及查詢,對(duì)采集到的數(shù)據(jù)進(jìn)行存儲(chǔ),由于日志數(shù)據(jù)量一般都很大,不僅要能對(duì)其存儲(chǔ),還需要能提供快速查詢。
- 指標(biāo)運(yùn)算、存儲(chǔ)及查詢,對(duì)采集到的日志數(shù)據(jù)進(jìn)行各種指標(biāo)運(yùn)算,將運(yùn)算結(jié)果保存起來。
告警功能,提供各種閥值警告功能。
整體架構(gòu)
- 通過AGENT生成調(diào)用鏈日志。
- 通過logstash采集日志到kafka。
- kafka負(fù)責(zé)提供數(shù)據(jù)給下游消費(fèi)。
- storm計(jì)算匯聚指標(biāo)結(jié)果并落到es。
- storm抽取trace數(shù)據(jù)并落到es,這是為了提供比較復(fù)雜的查詢。比如通過時(shí)間維度查詢調(diào)用鏈,可以很快查詢出所有符合的traceID,根據(jù)這些traceID再去hbase查數(shù)據(jù)就快了。
- logstash將kafka原始數(shù)據(jù)拉取到hbase中。hbase的rowkey為traceID,根據(jù)traceID查詢是很快的。
AGENT無侵入部署
通過AGENT代理的無侵入式部署,將性能測(cè)量與業(yè)務(wù)邏輯完全分離,可以測(cè)量任意類的任意方法的執(zhí)行時(shí)間,這種方式大大提高了采集效率,并且減少運(yùn)維成本。根據(jù)服務(wù)跨度主要分為兩大類AGENT:
服務(wù)內(nèi)AGENT,這種方式是通過Java的agent機(jī)制,對(duì)服務(wù)內(nèi)部的方法調(diào)用層次信息進(jìn)行數(shù)據(jù)收集,如方法調(diào)用耗時(shí)、入?yún)?、出參等信息?/p>
- 跨服務(wù)AGENT,這種情況需要對(duì)主流RPC框架以插件形式提供無縫支持。并通過提供標(biāo)準(zhǔn)數(shù)據(jù)規(guī)范以適應(yīng)自定義RPC框架:
比如生成的數(shù)據(jù)格式如下:
{
"hostIp": "192.168.4.1",
"instanceName": "TracingDemo",
"isEntry": true,
"errCode": 0,
"spanId": "3cbfe7f0-141c-4597-8b15-38d2fb145e01",
"parentId": "16a52a9f-e697-45ce-92fb-7395339eae4b",
"traceId": "e5549498-60f3-4870-8483-fe26f6d0367b",
"className": "dao.impl.ProductDaoImpl",
"methodName": "queryProduct",
"inParam": "",
"createTime": 1448442004537,
"returnTime": 1448442004537,
"callTime": 5
}
調(diào)用鏈監(jiān)控好處
- 準(zhǔn)確掌握生產(chǎn)一線應(yīng)用部署情況;
- 從調(diào)用鏈全流程性能角度,識(shí)別對(duì)關(guān)鍵調(diào)用鏈,并進(jìn)行優(yōu)化。
- 提供可追溯的性能數(shù)據(jù),量化 IT 運(yùn)維部門業(yè)務(wù)價(jià)值。
- 快速定位代碼性能問題,協(xié)助開發(fā)人員持續(xù)性的優(yōu)化代碼;
- 協(xié)助開發(fā)人員進(jìn)行白盒測(cè)試,縮短系統(tǒng)上線穩(wěn)定期。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱:五分鐘教會(huì)你分布式系統(tǒng)調(diào)用鏈監(jiān)控-創(chuàng)新互聯(lián)
鏈接URL:
http://weahome.cn/article/ijchd.html