www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > > 架構(gòu)師社區(qū)
[導(dǎo)讀]百度搜索中臺(tái)系統(tǒng)不但承接了搜索的阿拉丁流量,也致力于構(gòu)建各個(gè)垂直業(yè)務(wù)的搜索能力。


導(dǎo)讀:百度搜索中臺(tái)系統(tǒng)不但承接了搜索的阿拉丁流量,也致力于構(gòu)建各個(gè)垂直業(yè)務(wù)的搜索能力。隨著業(yè)務(wù)的不斷發(fā)展,系統(tǒng)的流量規(guī)模已經(jīng)達(dá)到百億級(jí)別。而在百億流量的背后,是千級(jí)別的微服務(wù)模塊和數(shù)十萬的實(shí)例數(shù)量,如何保證這套復(fù)雜系統(tǒng)的高可用、高性能和高可控,全要素多維度的可觀測(cè)性成為搜索中臺(tái)系統(tǒng)能力的關(guān)鍵。

本文首先會(huì)介紹什么是可觀測(cè)性以及云原生時(shí)代為什么更要關(guān)注可觀測(cè)性,然后闡述搜索中臺(tái)是如何以極低的機(jī)器成本打造百億流量的實(shí)時(shí)指標(biāo)監(jiān)控(Metrics)、分布式追蹤(Traces)、日志查詢(Logs)和拓?fù)浞治觯═opos)。


一、云原生和可觀測(cè)性(Observability)

1)什么是可觀測(cè)性

大家對(duì)監(jiān)控并不陌生,只要有系統(tǒng)存在,就需要有監(jiān)控幫我們?nèi)ジ兄到y(tǒng)發(fā)生的問題。而隨著業(yè)界傳統(tǒng)技術(shù)架構(gòu)往云原生架構(gòu)的邁進(jìn),可觀測(cè)性逐漸在越來越多的場(chǎng)合中被提到。如Distributed Systems ObservabilityMonitoring in the time of Cloud Native等都是對(duì)分布式系統(tǒng)可觀測(cè)性的一些解讀。在CNCF的云原生定義中,也將可觀測(cè)性當(dāng)成云原生架構(gòu)很重要的一個(gè)特性CNCF CloudNative Definition 1.0。

可觀測(cè)性是監(jiān)控的一個(gè)超集。監(jiān)控關(guān)注的是一些具體指標(biāo)的變化與報(bào)警,而可觀測(cè)性不僅需要提供對(duì)分布式系統(tǒng)所有鏈路運(yùn)行狀況的高級(jí)概覽,還需要在系統(tǒng)發(fā)生問題時(shí)提供系統(tǒng)鏈路細(xì)化的分析,讓開發(fā)和運(yùn)維同學(xué)“理解”系統(tǒng)發(fā)生的一切行為。

目前,業(yè)界廣泛推行可觀測(cè)性的基本要素包括:

  • 指標(biāo)監(jiān)控(Metrics)

  • 分布式追蹤(Traces)

  • 日志查詢(Logs)

經(jīng)過一些實(shí)踐之后,我們還拓展了一個(gè)要素:拓?fù)浞治觯═opos)?!阜植际阶粉櫋故菑奈⒂^角度去看一個(gè)請(qǐng)求的完整鏈路,而「拓?fù)浞治觥故菑暮暧^角度去分析問題。比如某個(gè)服務(wù) Qps 比平時(shí)擴(kuò)大了數(shù)倍,我們需要定位異常流量的源頭,就依賴拓?fù)浞治龉ぞ摺?/span>

2)云原生架構(gòu)下可觀測(cè)性的必要性

百億級(jí)流量的百度搜索中臺(tái),是怎么做監(jiān)控的?

在云原生時(shí)代,傳統(tǒng)的服務(wù)架構(gòu)和研發(fā)運(yùn)維模式正在進(jìn)行著范式轉(zhuǎn)變。微服務(wù)、容器化、FAAS(serverless)等技術(shù)從根本上改變了應(yīng)用的研發(fā)模式和運(yùn)維方式。但是,云原生架構(gòu)在帶來業(yè)務(wù)迭代效率指數(shù)級(jí)提升的同時(shí),也產(chǎn)生了一些新的挑戰(zhàn)。從單體應(yīng)用往微服務(wù)進(jìn)行的轉(zhuǎn)變導(dǎo)致原本聚焦的系統(tǒng)變得分散,服務(wù)與服務(wù)之間連接的復(fù)雜度迅速提高,我們對(duì)系統(tǒng)整體的掌控力也在逐漸變?nèi)?。在這種情況下,如何去快速定位異常,做到系統(tǒng)的清晰可視,就成為了亟需解決的問題。

二、我們面臨的挑戰(zhàn)

1)超大系統(tǒng)規(guī)模

隨著微服務(wù)化等技術(shù)的使用和新業(yè)務(wù)的接入,百度搜索中臺(tái)的服務(wù)和實(shí)例規(guī)模不斷增加,服務(wù)間的鏈路關(guān)系也日趨復(fù)雜,在這樣一個(gè)龐大系統(tǒng)中建設(shè)可觀測(cè)性,也面臨著更多的挑戰(zhàn)。

百億級(jí)流量的百度搜索中臺(tái),是怎么做監(jiān)控的?

對(duì)于日志的trace來說,目前搜索中臺(tái)天級(jí)別的請(qǐng)求量已經(jīng)達(dá)到了百億級(jí)別,如果使用常規(guī)的技術(shù)方案(如Dapper的思路),將日志放到集中式存儲(chǔ)里,意味著我們要付出上百臺(tái)機(jī)器資源,成本是非常高昂的。部分團(tuán)隊(duì)使用抽樣或針對(duì)錯(cuò)誤請(qǐng)求進(jìn)行記錄的方式,這種方式在搜索中臺(tái)場(chǎng)景存在著明顯問題:一. 抽樣無法保證覆蓋線上case。二. 很難有一種有效的方法識(shí)別錯(cuò)誤請(qǐng)求,此外,用戶對(duì)一些正常請(qǐng)求仍然有trace需求(如誤召回問題)。

同樣地,對(duì)于指標(biāo)的數(shù)據(jù)聚合來說,在超大系統(tǒng)規(guī)模下,如何優(yōu)化資源占用和時(shí)效,也是一個(gè)極具挑戰(zhàn)的問題。

2)從應(yīng)用到場(chǎng)景的觀測(cè)要求

隨著搜索中臺(tái)業(yè)務(wù)場(chǎng)景的不斷豐富,我們的觀測(cè)視角也在發(fā)生著變化。過去更多關(guān)注的是應(yīng)用維度的信息,而現(xiàn)在一個(gè)應(yīng)用里可能有幾十種業(yè)務(wù)場(chǎng)景,不同場(chǎng)景流量的規(guī)模是完全不同。如果只關(guān)注應(yīng)用維度的指標(biāo),便可能在一些場(chǎng)景異常時(shí),上層無法感知。如下圖就是一個(gè)典型的例子:場(chǎng)景三的流量因?yàn)檩^小,無法從應(yīng)用級(jí)別的指標(biāo)中提現(xiàn),因此在異常發(fā)生時(shí),監(jiān)控沒有報(bào)警。同時(shí),這種細(xì)分場(chǎng)景的指標(biāo)也可以輔助上層做一定的決策,如不同的場(chǎng)景,其中一個(gè)場(chǎng)景通過同步加載,而另一場(chǎng)景通過異步加載,兩者的超時(shí)要求是不一樣的,這時(shí)候就可以通過這種細(xì)分場(chǎng)景的指標(biāo),指導(dǎo)我們做精細(xì)化的控制。

百億級(jí)流量的百度搜索中臺(tái),是怎么做監(jiān)控的?

但是,從應(yīng)用到場(chǎng)景的細(xì)分,導(dǎo)致系統(tǒng)的指標(biāo)量級(jí)急劇擴(kuò)大,達(dá)到了百萬級(jí)。這對(duì)于指標(biāo)的聚合和計(jì)算來說,就成為一個(gè)新的挑戰(zhàn)。

3)對(duì)拓?fù)滏溌返暮暧^分析

在云原生架構(gòu)下,應(yīng)用與應(yīng)用之間的連接關(guān)系變得越來越復(fù)雜。分布式追蹤可以幫助我們定位某個(gè)具體請(qǐng)求的問題。而在系統(tǒng)出現(xiàn)一些宏觀問題:流量劇增,97分位耗時(shí)增加,拒絕率增加等,就需要拓?fù)浞治龉ぞ邘椭覀冞M(jìn)行定位。同時(shí)它對(duì)上層決策也有比較強(qiáng)的指導(dǎo)意義。如下圖右側(cè)的例子:商品搜索有兩類場(chǎng)景,第1類場(chǎng)景有運(yùn)營(yíng)活動(dòng),預(yù)計(jì)增加300qps的流量,如果沒有拓?fù)浞治龉ぞ叩脑?,我們就很難評(píng)估各個(gè)服務(wù)的容量Buffer。

百億級(jí)流量的百度搜索中臺(tái),是怎么做監(jiān)控的?

三、我們做了什么

我們?cè)谌ツ?,?duì)可觀測(cè)性的四個(gè)要素進(jìn)行了探索和實(shí)踐,并發(fā)布了全要素的觀測(cè)平臺(tái),為保障搜索中臺(tái)的可用性提供了有力保障。

1)日志查詢、分布式追蹤

隨著業(yè)務(wù)規(guī)模的增長(zhǎng),搜索中臺(tái)整體的日志量級(jí)達(dá)到了PB級(jí)的規(guī)模,通過離線存儲(chǔ)日志數(shù)據(jù),再進(jìn)行索引的方式會(huì)帶來巨大的資源開銷。而我們?cè)谶@里使用了一種突破性的解決方案:在離線結(jié)合,離線存儲(chǔ)了少量的種子信息,在線直接復(fù)用線上的日志(0成本)。

百億級(jí)流量的百度搜索中臺(tái),是怎么做監(jiān)控的?

具體做法是:

  1. 在流量入口層將logid、ip、訪問的時(shí)間戳存下來,存到一個(gè)kv存儲(chǔ)里。

  2. 當(dāng)用戶使用logid檢索的時(shí)候,在kv存儲(chǔ)中查詢logid對(duì)應(yīng)的ip和時(shí)間戳。

  3. 通過ip和時(shí)間戳去對(duì)應(yīng)的實(shí)例獲取完整的日志信息。

  4. 通過規(guī)則解析日志,獲取下游實(shí)例的ip和時(shí)間戳信息。

  5. 重復(fù)3-4的廣度遍歷過程,得到完整的調(diào)用鏈路拓?fù)洹?/span>

但是這里仍然存在一個(gè)問題:Trace時(shí)間較長(zhǎng)。

實(shí)例需要需要對(duì)自己的日志文件進(jìn)行全量 grep,這在日志文件大、請(qǐng)求鏈路長(zhǎng)的時(shí)候,會(huì)導(dǎo)致trace的時(shí)間較長(zhǎng),同時(shí)也會(huì)帶來穩(wěn)定性的沖擊。這里我們使用了按時(shí)間動(dòng)態(tài)N分搜索的思路,利用請(qǐng)求的時(shí)間信息和時(shí)間有序的日志結(jié)構(gòu),快速進(jìn)行N分查找。

以下圖給大家舉例:圖中日志文件是 20 點(diǎn)的日志文件,當(dāng)前需要查詢 20 : 15 分的一個(gè)日志請(qǐng)求。因?yàn)?15 分鐘剛好是小時(shí)的 1/4,所以會(huì)先 fseek 這個(gè)文件的 1/4 位置。當(dāng)前 1/4 段的日志信息在 20 : 13,這個(gè)時(shí)候下半段的日志文件就是 47 分鐘的日志數(shù)據(jù),那就會(huì)再往下偏移 2/47,重新進(jìn)行fseek。重復(fù)這個(gè)過程就可以快速查詢對(duì)應(yīng)的詳細(xì)日志信息。

百億級(jí)流量的百度搜索中臺(tái),是怎么做監(jiān)控的?

這種檢索方式可以獲得非??斓氖諗克俣?,單實(shí)例的日志檢索耗時(shí)控制在 100ms 以內(nèi),對(duì) io 的影響基本忽略不計(jì)。同時(shí),用戶整體的檢索時(shí)間也控制在了秒級(jí)別。

2)指標(biāo)監(jiān)控

因?yàn)槲覀兊挠^測(cè)視角從應(yīng)用級(jí)別發(fā)展到了場(chǎng)景級(jí)別,指標(biāo)數(shù)量也從萬級(jí)別增加到了百萬級(jí)別,所以我們對(duì)監(jiān)控架構(gòu)進(jìn)行了重新設(shè)計(jì)。這張圖就是升級(jí)后的一個(gè)架構(gòu)圖。

它的主要思想是線上實(shí)例嵌一個(gè)依賴庫,這個(gè)依賴庫會(huì)收集所有的指標(biāo)信息,并將它做一定的預(yù)聚合,之后采集器輪詢式的去獲取線上的實(shí)例的指標(biāo)數(shù)據(jù),然后把聚合后的數(shù)據(jù)寫到tsdb里。值得注意的一點(diǎn),這套方案和業(yè)界的一些指標(biāo)方案較大的不同:實(shí)例維度的指標(biāo)會(huì)在采集器里實(shí)時(shí)聚合,轉(zhuǎn)換成場(chǎng)景或服務(wù)維度的指標(biāo),隨后實(shí)例的維度指標(biāo)會(huì)被丟棄,不再存儲(chǔ)到tsdb中。因?yàn)閷?shí)例維度的指標(biāo)參考意義有限,我們是使用聚合后的數(shù)據(jù)等來分析應(yīng)用的運(yùn)行情況。

百億級(jí)流量的百度搜索中臺(tái),是怎么做監(jiān)控的?

在這套架構(gòu)里,我們對(duì)計(jì)算和存儲(chǔ)進(jìn)行了很多的優(yōu)化,從線上指標(biāo)變化到平臺(tái)展現(xiàn),只需要2s的反饋時(shí)間,資源開銷非常輕量。以指標(biāo)的聚合為例:線上實(shí)例只進(jìn)行累加操作,而采集器會(huì)存上一次抓取的快照信息,和當(dāng)前這一次采集做對(duì)比,進(jìn)行線性差值計(jì)算。這種方式對(duì)線上實(shí)例的資源開銷是肉眼不可見的。同時(shí)也可以方便的去產(chǎn)出Qps、延遲等信息。

百億級(jí)流量的百度搜索中臺(tái),是怎么做監(jiān)控的?

除了Qps、延遲之外,我們也優(yōu)化了分位耗時(shí)的計(jì)算方式。

分位耗時(shí)的計(jì)算常規(guī)方案是將請(qǐng)求的耗時(shí)做排序,然后取它的分位位置上的耗時(shí)數(shù)值。這種計(jì)算方式在請(qǐng)求量級(jí)較高的時(shí)候,資源占用非常高。因此我們采用了分桶計(jì)算的方式,按請(qǐng)求的耗時(shí)進(jìn)行分桶,當(dāng)請(qǐng)求執(zhí)行結(jié)束時(shí),在對(duì)應(yīng)耗時(shí)的桶里加1;而在計(jì)算分位值時(shí),先確定分位值所在的桶,桶內(nèi)數(shù)據(jù)則認(rèn)為服從線性分布,通過這樣的思路可以推導(dǎo)如下圖的公式。

百億級(jí)流量的百度搜索中臺(tái),是怎么做監(jiān)控的?

這樣的好處是資源開銷低,可實(shí)時(shí)計(jì)算,但是缺點(diǎn)是會(huì)損失一部分精度。這個(gè)精度取決于分桶的粒度,在搜索中臺(tái)使用的桶大小是30ms,一般誤差在15ms以內(nèi),可以滿足性能觀測(cè)的需求。

3)拓?fù)浞治?/span>

百億級(jí)流量的百度搜索中臺(tái),是怎么做監(jiān)控的?

拓?fù)浞治龅膶?shí)現(xiàn)利用了指標(biāo)監(jiān)控的運(yùn)作機(jī)制。

首先,對(duì)流量進(jìn)行染色,并將染色信息通過RPC傳遞到各個(gè)服務(wù)。通過這種方式,讓每個(gè)span(注:span的定義來自Dapper論文)持有場(chǎng)景的標(biāo)識(shí)以及上游span的名稱。場(chǎng)景標(biāo)識(shí)可以區(qū)分不同場(chǎng)景的流量,而span名稱和上游span名稱可以建立父子的連接關(guān)系。這些span復(fù)用了上述指標(biāo)計(jì)算的機(jī)制,通過將span的信息存入指標(biāo)中,產(chǎn)出對(duì)應(yīng)的性能數(shù)據(jù)。當(dāng)用戶提供一個(gè)場(chǎng)景標(biāo)識(shí)時(shí),平臺(tái)會(huì)把它的全部指標(biāo)提取出來,根據(jù)指標(biāo)內(nèi)的span信息,串聯(lián)成完整的調(diào)用拓?fù)洹?/span>

百億級(jí)流量的百度搜索中臺(tái),是怎么做監(jiān)控的?

四、最后

到這里可觀測(cè)性的四個(gè)基本要素基本講述完了。在這四個(gè)要素之上,我們孵化了很多的應(yīng)用產(chǎn)品,如歷史快照、智能報(bào)警、拒絕分析等。通過這些產(chǎn)品,可以更好的幫助我們快速去發(fā)現(xiàn)和分析問題。

當(dāng)然,可觀測(cè)性的工作并不止步于此。我們也在依托這套觀測(cè)系統(tǒng),打造一些自適應(yīng)、自調(diào)整的柔性機(jī)制,在異常出現(xiàn)時(shí),能夠自動(dòng)容忍和恢復(fù),最大化的保持系統(tǒng)的生命力。

 

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉