• <dd id="hdgin"><track id="hdgin"></track></dd>
  • <em id="hdgin"><tr id="hdgin"></tr></em>
  • <th id="hdgin"><track id="hdgin"><noframes id="hdgin"></noframes></track></th>
        <rp id="hdgin"><ruby id="hdgin"></ruby></rp>

        <legend id="hdgin"><noscript id="hdgin"><video id="hdgin"></video></noscript></legend>
          <dd id="hdgin"><track id="hdgin"></track></dd>
            首頁 運維干貨虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐

            虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐

            運維派隸屬馬哥教育旗下專業運維社區,是國內成立最早的IT運維技術社區,歡迎關注公眾號:yunweipai
            領取學習更多免費Linux云計算、Python、Docker、K8s教程關注公眾號:馬哥linux運維

            作者:張觀石,虎牙直播業務運維負責人,《運維前線》聯合作者,擁有多年互聯網業務運維經驗。
            原文來自微信公眾號:DBAplus社群

            為什么會講時序數據庫呢?各位DBA可能主要關注關系型數據和各種NoSQL,而時序數據庫最近有一種興起趨勢,所以特地拿來講一講。

            一、時序數據庫簡介

            時序數據庫是一種為了處理時間序列數據而特別優化的數據庫。它以時間系列為關鍵索引,特別適合于連續時間分片的數據存儲和檢索。主要用于處理帶時間標簽(按照時間的順序變化,即時間序列化)的數據。

            在傳統行業,如電力行業、化工行業、物聯網等各類型實時監測、檢查與分析設備所采集、產生的數據,都是時間序列數據,這些工業數據的典型特點是:產生頻率快(每一個監測點一秒鐘內可產生多條數據)、嚴重依賴于采集時間(每一條數據均要求對應唯一的時間)、監測點多信息量大(常規的實時監測系統均有成千上萬的監測點,監測點每秒鐘都產生數據,每天產生大量數據)。

            目前很多企業對于時序大數據的存儲和處理往往采用關系型數據庫的方式進行處理,但由于關系型數據庫天生的劣勢導致其無法進行高效的存儲和數據的查詢。時序數據庫通過使用特殊的存儲方式,使得時序大數據可以高效存儲和快速處理海量時序數據,是解決海量數據處理的一項重要技術。該技術采用特殊數據存儲方式,極大提高了時間相關數據的處理能力,相對于關系型數據庫它的存儲空間減半,查詢速度極大的提高。特別在互聯網行業的運維監控,業務監控中使用。

            • 時間序列

            我們常說的時間戳,timestamp,unix_time 是一個時間點,而無數個時間點連接起來就是所謂的時間系列,簡稱時序。

            • 時序數據

            帶維度標簽、以時間點或時間范圍為索引的數據也稱為時序數據。理解為某一度量指標在某一時間點的一個值。

            • 時序數據結構

            從以上幾點可以了解時序數據應該包括幾個方面:度量指標、標簽、值、時間點。

            舉個例子,度量指標數據:

            Usercount platform=dbaplus speaker=zhangguanshi 1497344217 value=500

            這里分成幾個部分:

            • Metric:usercount
            • Timestamp:1497344217
            • Value:500
            • Tags:platform=dbaplus,speaker=zhangguanshi

            各部分解釋:

            • Metric:監控項/指標度量,如同時在線用戶usercount。
            • Tags:標簽/維度,在OpenTSDB里面,Tags由tagk和tagv組成,即tagk=tagv。標簽是描述Metric的屬性,分享主題的講師,tags可為speaker=zhangguanshi。
            • Value:一個Value表示一個metric的實際數值,譬如上面的500
            • Timestamp:即時間戳,用來描述產生時序數據的時間點,上面的1497344217
            • Data Point:即某個Metric在某個時間點的數值。
              1)Data Point包括以下部分:Metric、Tags、Value、Timestamp
              2)上面描述的本場分享在21:09時候的同時在線用戶,就是1個DataPoint

            數據特點:

            • 基本上都是插入,沒有更新的需求;
            • 數據基本上都有時間屬性,隨著時間的推移不斷產生新的數據,舊的數據不需要保存太久;
            • 業務方對時序數據通常有幾個查詢需求;
            • 獲取最新狀態,查詢最近的數據(例如傳感器最新的狀態);
            • 展示區間統計,指定時間范圍,查詢統計信息,例如平均值,最大值,最小值,計數等;
            • 獲取異常數據,根據指定條件,篩選異常數據。

            跟普通數據的區別1:

            • 時序數據庫就是存放時序數據的數據庫;
            • 而時間序列是無窮的,不斷遞增的,而指標也可以成千上萬,為海量數據而設計的;
            • 時序數據是特別為順序寫入;
            • 時間是數據庫插入查詢的核心條件,以時間為連續條件。

            跟傳統數據庫的區別2:

            • 時序數據庫簡單,沒有復雜模式/范式設計。某一度量指標在某一時間點只會有一個值;
            • 沒有事務;
            • 寫多讀少無更新;
            • 順序讀、區間范圍讀;
            • 基數大。

            時序數據庫要解決的問題:

            • 以時間點為順序產生的數據;
            • 數據量大,數據來源多;
            • 數據的維度多,不同指標有不同維度;
            • 統計查詢復雜,如任意時間訪問,多粒度的檢索;
            • 需要快速響應查詢;
            • 對中小團隊收益特別大。

            二、業界使用時序數據庫情況

            • 簡介

            在《解密Google SRE》一書中作者提到了Google的監控系統borgmon 和 prometheus非常像。prometheus是一款開源的時序數據庫,可以想見Google也是用的類似時序數據庫進行監控。Fackbook開源了時序數據庫引擎Beringei。他們內部也用的這個做監控。阿里巴巴的Goldeye黃金眼,也是一款時序數據庫;百度云產品TSDB,主要用于物聯網相關的監控;國內非?;鸬谋O控系統Open-falcon也是一款開源時序數據庫。當然還有知名的開源軟件:Graphihe、OpenTSDB、InfluxDB、Druid、TimeScaleDB等。

            我們看下DB-Engine網站對時序數據庫的排行。

            虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐插圖

            出處:https://db-engines.com/en/ranking/time+series+dbms
            參考資料:http://liubin.org/blog/2016/02/25/tsdb-list-part-1/

            這里以OpenTSDB為例重點介紹下時序數據庫的一些技術。

            • 介紹Opentsdb及相關組件

            虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐插圖1

            • Tsd和存儲層

            OpenTSDB的核心,本身比較簡單,是Java實現的一套程序。用來讀寫底層存儲及數據處理。

            存儲:

            OpenTSDB底層存儲使用的HBase,自然ZooKeeper、HBase、Hadoop HDFS是少不了的。其架構分布式、高可用也是由HBase實現。

            Rowkey的設計是亮點:

            Rowkey: metric + timestamp + tagk1 + tagv1… + tagkN + tagvN
            HBase(main):003:0> scan ‘tsdb’
            ROW COLUMN+CELL
            \x00\x00\x01U\x9C\xAEP\x00\x column=t:q\x80, timestamp=1497344217, value=\x17 00\x01\x00\x00\x01\x00\x00\x 02\x00\x00\x02

            說OpenTSDB沒有設計模式是指上層上報來的數據,在底層OpenTSDB還是有存儲表的,在往HBase中寫入和查詢使用了一套自定義的數據結構,OpenTSDB的存儲格式是在HBase存儲了幾個表:

            • Data Table:表名默認叫tsdb ,存儲時序數據的表。
            • UID Table:表名tsdb-uid,UID映射表,時序數據存儲時不用實際的字符串,而是經過此表映射之后,取得一個UID,存儲在data table中的其實是整個uid。
            • Meta Table:元數據表,時間序列數據的索引表。
            • Tree Table :樹表,也是存儲元數據用的。
            • Rollup 表:存儲rollup 和 pre-aggregation的數據。

             

            • WebUI

            OpenTSDB有多個展示端,Grafana是其中一個支持得較好的。前面文章也講到了Grafana,這里不多講。

            • 采集層

            采集支持udp協議、http協議、telnet??墒褂枚喾N采集上報方式,包括腳本、應用內上報等。

            保存數據最簡單的方式是:

            $ telnet localhost 4242
            put sys.cpu.user 1497344217 23 host=web01 user=mirzhang

            • 告警層

            官方推薦是bosun,一套強大的開源告警軟件。

            • 插件

            開發了新插件,如支持內部uid到主播的映射。

            虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐插圖2

            三、虎牙直播業務監控實踐

            • 背景

            大家可能都知道直播是眾多互聯網行業中技術比較復雜的技術,視頻從主播端采集到推流節點,到轉推環節,到分發網絡,到觀眾端,這么復雜的鏈路中要保障音視頻直播的流暢是很有挑戰的。

            視頻質量指標很多:

            • 感官卡頓比
            • 網絡卡頓比
            • 錯誤率
            • 慢速比
            • 視頻加載成功率
            • 播放時延
            • 卡比例
            • 視頻加載時間
            • 連接時間
            • RTT

            微服務的質量指標:
            虎牙直播后端是微服務架構,我們把數千個微服務的成功率,調用次數、延時等信息都通過時序數據庫來監控。

            同時在線用戶規模大
            維度多:分端、分地區、分主播、分線路

            所以部分用戶說卡的時候,要分析N多種情況。

            • 基本架構

            虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐插圖3

            整套系統包括采集、存儲分析、輸出等幾個部分,采集端使用了多種采集手段和方法。

            在系統的使用層包括賬號、安全這些通用措施,也包括TSDB數據層,存儲層,及前端展示UI層。

            輸出是利用時序數據庫中的數據實現運維需求。

            • 技術架構

            虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐插圖4

            我們采集了所有能采集到的質量相關數據,其中包括主播、觀眾、中間各個環節。采集數據規模非常的大,要實時采集,盡可能實時展示,所以全部都直接讀寫TSDB是不行的,我們通過流式計算的環節進行預處理,這一層是微服務架構,可以很容易擴展。原始數據可能是各種復雜格式的,通過預處理也可以達到過濾、聚合、預計算的目的,可以按業務的需求進行靈活處理。

            我們微服務的質量數據,包括成功率、調用延時數據原來是通過MySQL保存,通過開發web后臺來展示,后來改造為通過時序數據庫來保存展示。

            • 監控告警

            Bosun 是一個新型的監控和告警系統,由Stack Exchange團隊打造,使用Golang編寫,支持定義復雜的告警規則,支持OpenTSDB、Graphite、Logstash-Elasticsearch 等數據源。bosun 將是Zabbix、Nagios的有力競爭者。

            bosun從TSDB讀取時序數據,可以經由bosun表達式做一系列的計算,根據告警策略發送告警,告警的內容是定義好的bosun模板。

            虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐插圖5

            這些質量監控告警不斷持續反饋給各相關人員、廠商。實時告警打通各渠道:微信、QQ、釘釘、YY、郵件等。

            • 時序數據的其它用途

            我們還通過TSDB API從時序數據庫獲取數據,定制各種定期報告如日報、周報等。

            質量數據效果圖:

            虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐插圖6

            虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐插圖7

            虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐插圖8

            本文鏈接:http://m.abandonstatusquo.com/20983.html

            網友評論comments

            發表評論

            您的電子郵箱地址不會被公開。

            1. […] 虎牙直播運維負責人張觀石:基于時序數據庫的直播業務監控實踐 […]

            Copyright ? 2012-2022 YUNWEIPAI.COM - 運維派 京ICP備16064699號-6
            掃二維碼
            掃二維碼
            返回頂部
            久久久久亚洲国内精品|亚洲一区二区在线观看综合无码|欧洲一区无码精品色|97伊人久久超碰|一级a爱片国产亚洲精品