當前位置:首頁 > 公眾號精選 > 架構師社區(qū)
[導讀]百度搜索中臺系統(tǒng)不但承接了搜索的阿拉丁流量,也致力于構建各個垂直業(yè)務的搜索能力。


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

本文首先會介紹什么是可觀測性以及云原生時代為什么更要關注可觀測性,然后闡述搜索中臺是如何以極低的機器成本打造百億流量的實時指標監(jiān)控(Metrics)、分布式追蹤(Traces)、日志查詢(Logs)和拓撲分析(Topos)。


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

1)什么是可觀測性

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

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

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

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

  • 分布式追蹤(Traces)

  • 日志查詢(Logs)

經(jīng)過一些實踐之后,我們還拓展了一個要素:拓撲分析(Topos)。「分布式追蹤」是從微觀角度去看一個請求的完整鏈路,而「拓撲分析」是從宏觀角度去分析問題。比如某個服務 Qps 比平時擴大了數(shù)倍,我們需要定位異常流量的源頭,就依賴拓撲分析工具。

2)云原生架構下可觀測性的必要性

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

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

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

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

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

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

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

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

2)從應用到場景的觀測要求

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

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

但是,從應用到場景的細分,導致系統(tǒng)的指標量級急劇擴大,達到了百萬級。這對于指標的聚合和計算來說,就成為一個新的挑戰(zhàn)。

3)對拓撲鏈路的宏觀分析

在云原生架構下,應用與應用之間的連接關系變得越來越復雜。分布式追蹤可以幫助我們定位某個具體請求的問題。而在系統(tǒng)出現(xiàn)一些宏觀問題:流量劇增,97分位耗時增加,拒絕率增加等,就需要拓撲分析工具幫助我們進行定位。同時它對上層決策也有比較強的指導意義。如下圖右側的例子:商品搜索有兩類場景,第1類場景有運營活動,預計增加300qps的流量,如果沒有拓撲分析工具的話,我們就很難評估各個服務的容量Buffer。

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

三、我們做了什么

我們在去年,對可觀測性的四個要素進行了探索和實踐,并發(fā)布了全要素的觀測平臺,為保障搜索中臺的可用性提供了有力保障。

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

隨著業(yè)務規(guī)模的增長,搜索中臺整體的日志量級達到了PB級的規(guī)模,通過離線存儲日志數(shù)據(jù),再進行索引的方式會帶來巨大的資源開銷。而我們在這里使用了一種突破性的解決方案:在離線結合,離線存儲了少量的種子信息,在線直接復用線上的日志(0成本)。

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

具體做法是:

  1. 在流量入口層將logid、ip、訪問的時間戳存下來,存到一個kv存儲里。

  2. 當用戶使用logid檢索的時候,在kv存儲中查詢logid對應的ip和時間戳。

  3. 通過ip和時間戳去對應的實例獲取完整的日志信息。

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

  5. 重復3-4的廣度遍歷過程,得到完整的調(diào)用鏈路拓撲。

但是這里仍然存在一個問題:Trace時間較長。

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

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

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

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

2)指標監(jiān)控

因為我們的觀測視角從應用級別發(fā)展到了場景級別,指標數(shù)量也從萬級別增加到了百萬級別,所以我們對監(jiān)控架構進行了重新設計。這張圖就是升級后的一個架構圖。

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

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

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

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

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

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

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

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

3)拓撲分析

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

拓撲分析的實現(xiàn)利用了指標監(jiān)控的運作機制。

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

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

四、最后

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

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

 

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

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉