Spring Cloud構(gòu)建微服務(wù)架構(gòu):分布式服務(wù)跟蹤(抽樣收集)【Dalston版】

原文地址:http://blog.didispace.com/spring-cloud-starter-dalston-8-6/

通過Trace IDSpan ID已經(jīng)實現(xiàn)了對分布式系統(tǒng)中的請求跟蹤,而這些記錄的跟蹤信息最終會被分析系統(tǒng)收集起來啥酱,并用來實現(xiàn)對分布式系統(tǒng)的監(jiān)控和分析功能耘分,比如:預(yù)警延遲過長的請求鏈路添寺、查詢請求鏈路的調(diào)用明細(xì)等侧戴。此時荣回,我們在對接分析系統(tǒng)時就會碰到一個問題:分析系統(tǒng)在收集跟蹤信息的時候吸奴,需要收集多少量的跟蹤信息才合適呢隐绵?

理論上來說,我們收集的跟蹤信息越多就可以更好的反映出系統(tǒng)的實際運(yùn)行情況盲链,并給出更精準(zhǔn)的預(yù)警和分析蝇率,但是在高并發(fā)的分布式系統(tǒng)運(yùn)行時,大量的請求調(diào)用會產(chǎn)生海量的跟蹤日志信息刽沾,如果我們收集過多的跟蹤信息將會對我們整個分布式系統(tǒng)的性能造成一定的影響本慕,同時保存大量的日志信息也需要不少的存儲開銷。所以侧漓,在Sleuth中采用了抽象收集的方式來為跟蹤信息打上收集標(biāo)記锅尘,也就是我們之前在日志信息中看到的第四個boolean類型的值,它代表了該信息是否要被后續(xù)的跟蹤信息收集器獲取和存儲布蔗。

在Sleuth中的抽樣收集策略是通過Sampler接口實現(xiàn)的藤违,它的定義如下:

public interface Sampler {
    /**
     * @return true if the span is not null and should be exported to the tracing system
     */
    boolean isSampled(Span span);
}

通過實現(xiàn)isSampled方法,Spring Cloud Sleuth會在產(chǎn)生跟蹤信息的時候調(diào)用它來為跟蹤信息生成是否要被收集的標(biāo)志纵揍。需要注意的是纺弊,即使isSampled返回了false,它僅代表該跟蹤信息不被輸出到后續(xù)對接的遠(yuǎn)程分析系統(tǒng)(比如:Zipkin)骡男,對于請求的跟蹤活動依然會進(jìn)行,所以我們在日志中還是能看到收集標(biāo)識為false的記錄傍睹。

默認(rèn)情況下隔盛,Sleuth會使用PercentageBasedSampler實現(xiàn)的抽樣策略犹菱,以請求百分比的方式配置和收集跟蹤信息,我們可以通過在application.properties中配置下面的參數(shù)對其百分比值進(jìn)行設(shè)置吮炕,它的默認(rèn)值為0.1腊脱,代表收集10%的請求跟蹤信息。

spring.sleuth.sampler.percentage=0.1

在開發(fā)調(diào)試期間龙亲,通常會收集全部跟蹤信息輸出到遠(yuǎn)程倉庫陕凹,我們可以將其值設(shè)置為1,或者也可以通過創(chuàng)建AlwaysSampler的Bean(它實現(xiàn)的isSampled方法始終返回true)來覆蓋默認(rèn)的PercentageBasedSampler策略鳄炉,比如:

@Bean
public AlwaysSampler defaultSampler() {
    return new AlwaysSampler();
}

在實際使用時杜耙,通過與Span對象中存儲信息的配合,我們可以根據(jù)實際情況做出更貼近需求的抽樣策略拂盯,比如實現(xiàn)一個僅對包含指定Tag的抽樣策略:

public class TagSampler implements Sampler {

    private String tag;

    public TagSampler(String tag) {
        this.tag = tag;
    }

    @Override
    public boolean isSampled(Span span) {
        return span.tags().get(tag) != null;
    }
}

由于跟蹤日志信息的數(shù)據(jù)價值往往僅在最近的一段時間內(nèi)非常有用佑女,比如:一周。那么我們在設(shè)計抽樣策略時谈竿,主要考慮在不對系統(tǒng)造成明顯性能影響的情況下团驱,以在日志保留時間窗內(nèi)充分利用存儲空間的原則來實現(xiàn)抽樣策略。

完整示例:

讀者可以根據(jù)喜好選擇下面的兩個倉庫中查看trace-1trace-2兩個項目:

如果您對這些感興趣空凸,歡迎star嚎花、follow、收藏呀洲、轉(zhuǎn)發(fā)給予支持紊选!

本文內(nèi)容部分節(jié)選自我的《Spring Cloud微服務(wù)實戰(zhàn)》,但對依賴的Spring Boot和Spring Cloud版本做了升級两嘴。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丛楚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子憔辫,更是在濱河造成了極大的恐慌趣些,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贰您,死亡現(xiàn)場離奇詭異坏平,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锦亦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門舶替,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杠园,你說我怎么就攤上這事顾瞪。” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵陈醒,是天一觀的道長惕橙。 經(jīng)常有香客問我,道長钉跷,這世上最難降的妖魔是什么弥鹦? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮爷辙,結(jié)果婚禮上彬坏,老公的妹妹穿的比我還像新娘。我一直安慰自己膝晾,他們只是感情好栓始,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著玷犹,像睡著了一般混滔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歹颓,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天坯屿,我揣著相機(jī)與錄音,去河邊找鬼巍扛。 笑死领跛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的撤奸。 我是一名探鬼主播吠昭,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胧瓜!你這毒婦竟也來了矢棚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤府喳,失蹤者是張志新(化名)和其女友劉穎蒲肋,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钝满,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兜粘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了弯蚜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孔轴。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖碎捺,靈堂內(nèi)的尸體忽然破棺而出路鹰,到底是詐尸還是另有隱情贷洲,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布晋柱,位于F島的核電站恩脂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏趣斤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一黎休、第九天 我趴在偏房一處隱蔽的房頂上張望浓领。 院中可真熱鬧,春花似錦势腮、人聲如沸联贩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泪幌。三九已至,卻和暖如春署照,著一層夾襖步出監(jiān)牢的瞬間祸泪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工建芙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留没隘,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓禁荸,卻偏偏與公主長得像右蒲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子赶熟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容