鏈路追蹤概念
- 什么是鏈路追蹤,用來解決什么問題
- 用戶行為鏈路主之,如:瀏覽頁面,觀看視頻李根,購買商品槽奕,收藏,評(píng)論等等行為
- 服務(wù)流程鏈路房轿,快速定位異常:用戶發(fā)起退貨粤攒,遲遲沒收到退回的商品,哪個(gè)鏈條出了問題囱持?
- 大數(shù)據(jù)ai畫像夯接,一個(gè)鏈條下非業(yè)務(wù)的動(dòng)態(tài)行為數(shù)據(jù),才是最貼近用戶的素材
服務(wù)追蹤的基礎(chǔ)出發(fā)點(diǎn)—記錄足跡
- 入口處生成鏈路標(biāo)識(shí)traceid
- 傳遞traceid參數(shù)給下層業(yè)務(wù)方法
- 各方法內(nèi)部記錄訪問信息
使用TreadLocal來傳參數(shù)
ThreadLocal盔几,很多地方叫做線程本地變量,也有些地方叫做線程本地存儲(chǔ)掩幢,其實(shí)意思差不多逊拍。可能很多朋友都知道ThreadLocal為變量在每個(gè)線程中都創(chuàng)建了一個(gè)副本粒蜈,那么每個(gè)線程可以訪問自己內(nèi)部的副本變量顺献。
思考:使用TreadLocal來傳參數(shù)
如何讓traceid的傳遞不侵入業(yè)務(wù)?
- 盡量少侵入業(yè)務(wù)代碼
- 不需要開發(fā)人員來維護(hù)
MDC -----Mapped Diagnostic Context
- 與當(dāng)前線程綁定 ---- Threadlocal
- 放數(shù)據(jù)--- MDC.put(traceid,aaa)
- 取數(shù)據(jù)--- MDC.get(traceid)
- 日志格式----%X{traceId}
分布式調(diào)用來了肿轨?
看看dubbo里的rpc調(diào)用
Dubbo使用filter
Dubbo高階---spi擴(kuò)展機(jī)制
完美藻茂,優(yōu)雅地解決掉了rpc的透傳問題驹暑!
微服務(wù)
軟件架構(gòu)是一個(gè)包含各種組織的系統(tǒng)組織辨赐,這些組件包括 Web服務(wù)器, 應(yīng)用服務(wù)器, 數(shù)據(jù)庫,存儲(chǔ), 通訊層), 它們彼此或和環(huán)境存在關(guān)系优俘。系統(tǒng)架構(gòu)的目標(biāo)是解決利益相關(guān)者的關(guān)注點(diǎn)
微服務(wù)是指開發(fā)一個(gè)單個(gè)小型的但有業(yè)務(wù)功能的服務(wù),每個(gè)服務(wù)都有自己的處理和輕量通訊機(jī)制掀序,可以部署在單個(gè)或多個(gè)服務(wù)器上帆焕。微服務(wù)也指一種種松耦合的、有一定的有界上下文的面向服務(wù)架構(gòu)不恭。也就是說叶雹,如果每個(gè)服務(wù)都要同時(shí)修改,那么它們就不是微服務(wù)换吧,因?yàn)樗鼈兙o耦合在一起折晦;如果你需要掌握一個(gè)服務(wù)太多的上下文場景使用條件,那么它就是一個(gè)有上下文邊界的服務(wù)式散,這個(gè)定義來自DDD領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
相對(duì)于單體架構(gòu)和SOA,它的主要特點(diǎn)是組件化暴拄、松耦合漓滔、自治、去中心化乖篷,體現(xiàn)在以下幾個(gè)方面
- 一組小的服務(wù)
服務(wù)粒度要小响驴,而每個(gè)服務(wù)是針對(duì)一個(gè)單一職責(zé)的業(yè)務(wù)能力的封裝,專注做好一件事情撕蔼。
- 獨(dú)立部署運(yùn)行和擴(kuò)展
每個(gè)服務(wù)能夠獨(dú)立被部署并運(yùn)行在一個(gè)進(jìn)程內(nèi)豁鲤。這種運(yùn)行和部署方式能夠賦予系統(tǒng)靈活的代碼組織方式和發(fā)布節(jié)奏,使得快速交付和應(yīng)對(duì)變化成為可能鲸沮。
- 獨(dú)立開發(fā)和演化
技術(shù)選型靈活琳骡,不受遺留系統(tǒng)技術(shù)約束。合適的業(yè)務(wù)問題選擇合適的技術(shù)可以獨(dú)立演化讼溺。服務(wù)與服務(wù)之間采取與語言無關(guān)的API進(jìn)行集成楣号。相對(duì)單體架構(gòu),微服務(wù)架構(gòu)是更面向業(yè)務(wù)創(chuàng)新的一種架構(gòu)模式。
- 獨(dú)立團(tuán)隊(duì)和自治
團(tuán)隊(duì)對(duì)服務(wù)的整個(gè)生命周期負(fù)責(zé)炫狱,工作在獨(dú)立的上下文中藻懒,自己決策自己治理,而不需要統(tǒng)一的指揮中心视译。團(tuán)隊(duì)和團(tuán)隊(duì)之間通過松散的社區(qū)部落進(jìn)行銜接嬉荆。