日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何實現(xiàn)秒級百萬TPS?微博WAIC實時流計算平臺架構(gòu)演進

圖片來自包圖網(wǎng)

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),湯原企業(yè)網(wǎng)站建設(shè),湯原品牌網(wǎng)站建設(shè),網(wǎng)站定制,湯原網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,湯原網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

【稿件】WAIC 實時流計算平臺為新浪微博提供可靠的毫秒級和秒級實時數(shù)據(jù)處理服務(wù),通過提供統(tǒng)一的數(shù)據(jù)源和配置化接入方式,幫助提高新浪微博實時作業(yè)的開發(fā)效率,降低部門開發(fā)與運營的成本。

2018 年 5 月 18-19 日,由 主辦的全球軟件與運維技術(shù)峰會在北京召開。

在“高并發(fā)與實時處理”分會場,新浪微博實時流技術(shù)平臺負責人廖博帶來了《WAIC 實時流計算平臺的成長和繁衍》的主題演講。

本文將按照如下四個階段分享微博實時流計算平臺的搭建歷程,以及在創(chuàng)建過程中的一些問題和解決方案:

  • 初入實時流計算
  • 實時流計算平臺初建
  • 實時流計算平臺發(fā)展
  • 總結(jié) DQRA 設(shè)計模式

初入實時流計算

首先介紹一下我們實時流計算平臺開發(fā)歷程:

  • 2015 年,我進入新浪微博。當年,我們利用實時流計算做出了物料池系統(tǒng)。
  • 2016 年,我們進行了用戶實時興趣反饋系統(tǒng)的開發(fā)。
  • 2017 年,我們接入了一些與多媒體相關(guān)的,如人臉識別系統(tǒng)的建設(shè)。同年,我們也開始進行實時流計算平臺的初建。
  • 2018 年,我們開啟了 WAIC 實時流計算平臺。

上圖是實時流計算的技術(shù)背景,常用的計算引擎有:Spark、Streaming、Flink、Storm、Flume 和 Kafka 等一些中間件。

我們 WAIC 實時流計算平臺中,主要用到的計算引擎是:Storm、Kafka、Flume 和 Flink。

上圖是實時流計算的第一階段。這是一個經(jīng)典的架構(gòu),它通過利用 Flume,將業(yè)務(wù)系統(tǒng)里的實時流日志數(shù)據(jù)寫入 Kafka。

然后再利用 Storm 去讀取 Kafka 里的數(shù)據(jù),最后將數(shù)據(jù)進行相應(yīng)的業(yè)務(wù)邏輯處理。

在該階段,我們主要完成了如下兩項工作:

  • 讓微博“接入”實時流計算功能。
  • 當數(shù)據(jù)處理出現(xiàn)失敗時,使用 Kafka 來執(zhí)行必要的數(shù)據(jù)回滾,從而解決問題。

上圖是第一階段相應(yīng)的數(shù)據(jù)成果。彼時的數(shù)據(jù)量和集群個數(shù)都比較少,因此主要存在的問題包括:

  • 人工工作量比較多,即:面對需求時,全靠人編碼。
  • 代碼重復(fù)率比較高,異常排查的方式較為簡陋,全靠登錄到服務(wù)器上,去 Grep 日志。
  • 監(jiān)控的方式則全靠腳本。

上圖是第一階段所遺留的一些問題。

實時流計算平臺初建

那么隨著實時流計算的頻繁使用、業(yè)務(wù)場景的增多、以及監(jiān)控需求的提升,我們意識到需要搭建一個實時流的計算平臺。

我們當時所提出的平臺目標主要包括:

  • 研發(fā)一個工作量可以沉淀,并且可配置的開發(fā)框架。
  • 統(tǒng)一所有的監(jiān)控,打造一個統(tǒng)一的監(jiān)控平臺。

這是第二階段實時流的初步架構(gòu)圖。在此,我們的接入日志方式豐富了許多。如圖,我們既通過 Scribe 進行收集、又從 Kafka 以及 Mcq 里面讀取數(shù)據(jù)。

然后通過 Scribe、或者其他的數(shù)據(jù)同步服務(wù),將它們接入到實時隊列之中,最后在不同的業(yè)務(wù)場景下,利用不同的實時集群進行處理。

自研 WeiPig 框架

為了降低開發(fā)人員上手實時任務(wù)開發(fā)的門檻,我們自行研發(fā)了一個 WeiPig 框架。

它具有如下四個主要特點:

  • 配置化開發(fā)。對于一些簡單的開發(fā)需求,我們只需編寫 WeiPig 開發(fā)文件,便可實現(xiàn)。
  • 插件式編程。它提供一個插件式編程的編碼規(guī)范。對于初期的一些功能需求,我們按照相應(yīng)的規(guī)范進行編碼,即我們通過編寫 WeiPig 文件,來滿足各種需求。
  • 通用解決方案。因為 WeiPig 是一個針對實時流而開發(fā)的應(yīng)用框架,所以它需要滿足供應(yīng)鏈上所有不同類型的實時流需求。
  • 統(tǒng)一貢獻機制。使不同的業(yè)務(wù)團隊,能夠按照同一套規(guī)范來進行相應(yīng)的插件開發(fā),并提供相應(yīng)的插件功能。同時,他們也可以按照同樣的規(guī)范和機制,來使用其他團隊所提供的功能插件。

同時,我們需要通過該 WeiPig 框架,讓所有開發(fā)人員的工作模式“沉淀”下去,實現(xiàn)公司內(nèi)各個部門的共享與協(xié)作。

統(tǒng)一監(jiān)控平臺

如前所述,在第一階段,我們的監(jiān)控實現(xiàn)方式基本上是:靠那些運行在不同服務(wù)器上的腳本,進行日志數(shù)據(jù)的采集,然后再發(fā)送報警郵件。

而進入第二階段之后,我們利用如上圖所示的實時流統(tǒng)一計算與監(jiān)控平臺,對作業(yè)情況予以了展示與配置。

即:該系統(tǒng)既可以展示相應(yīng)的數(shù)據(jù)監(jiān)控指標,又可以對數(shù)據(jù)監(jiān)控指標進行相應(yīng)的報警配置。

而這些監(jiān)控指標數(shù)據(jù)都是通過不同的搜集工具進行采集,然后錄入到 MySQL 數(shù)據(jù)庫之中。

上圖是第二階段相應(yīng)的成果。雖然此時已經(jīng)有了 WeiPig 開發(fā)框架,但是我們的人工工作量依然不少。

由于 WeiPig 的插件主要是由平臺方的幾名開發(fā)人員來實現(xiàn),因此插件數(shù)量不但較少,而且他們的工作量也達到了 80%。

另外,代碼的重復(fù)率則僅占 50% 左右,這直接導(dǎo)致了異常排查的效率仍處于較低的水平。

同時,在監(jiān)控配置上,我們?nèi)孕枰謩优渲茫约巴ㄟ^編寫腳本,來搜集相關(guān)的指標數(shù)據(jù)。

在第二階段之后,我們遺留下了不少問題,包括:

  • 權(quán)限機制的欠缺
  • 缺乏統(tǒng)一的資源調(diào)度
  • 問題排查相對較慢
  • 碎片資源相對較多(主要是因為我們使用的都是些小集群,這導(dǎo)致產(chǎn)生了大量遺留的冗余資源,閑置在系統(tǒng)中)
  • 缺乏高可靠的保障
  • 開發(fā)效率較低

實時流計算平臺發(fā)展

在步入實時流計算平臺的第三階段之后,我們提高了相應(yīng)的宏觀目標,即:

  • 提高公司的開發(fā)生產(chǎn)效率,節(jié)省重復(fù)建設(shè)的成本。
  • 可視化各項操作。

上圖是當前實時流計算平臺的架構(gòu)圖。數(shù)據(jù)流邏輯如下:

  • 用戶通過 UI 交互客戶端、以及 Weiclient 等交互模塊,將作業(yè)提交給控制中心。
  • 控制中心進行初步的權(quán)限校驗和資源審核之后,將資源提交給任務(wù)調(diào)度。
  • 任務(wù)調(diào)度將相應(yīng)的作業(yè)提交給對應(yīng)的集群 Weibox。
  • 如果作業(yè)提交成功,Weibox 會把相應(yīng)的作業(yè)信息重新返回給控制中心。
  • 控制中心將作業(yè)通過用戶交互客戶端返回給用戶結(jié)果。同時,它會將作業(yè)信息同步給管理服務(wù)后臺。
  • 用戶通過管理服務(wù)后臺的客戶端,去操作自己在集群上面的功能??刂浦行募饶軠p少已占用的資源,又能為每一個團隊實現(xiàn)資源控制。

控制中心初現(xiàn)

由于前期各種作業(yè)(如 Storm)在向集群提交的時候,許多開發(fā)人員會自行配置一個本地環(huán)境,以實現(xiàn)直接提交,這就造成了平臺方很難對集群進行有效的管控。

因此對于我們第三階段的控制中心而言,其主要目標是:

  • 解決作業(yè)隨意提交,治理集群上作業(yè)混亂的現(xiàn)象。
  • 對集群資源進行統(tǒng)一管理,從而避免過多的資源浪費。

上圖是實時流計算平臺的控制中心架構(gòu)圖。其流程如下:

  • “基礎(chǔ)模塊”通過權(quán)限校驗和資源審核,將作業(yè)提交給“作業(yè)上線流程”服務(wù)。
  • “作業(yè)上線流程”調(diào)用后置的檢查模塊,檢查該作業(yè)是否在集群上運行成功,以及判斷該作業(yè)所占用的資源、是否為它在提交時指定了資源量。
  • 如果“作業(yè)上線流程”服務(wù)提交作業(yè)成功,那么“資源決策服務(wù)”調(diào)用動態(tài)資源調(diào)節(jié)模塊,在集群上定時(如:每小時或每天)檢查該作業(yè)所使用和處理的數(shù)據(jù)量,以及每條數(shù)據(jù)的處理時長。籍此,該模塊運用簡單的公式,來判斷該作業(yè)是否需要占這么多資源。

上述提到過,一些開發(fā)人員可能會通過在自己的本機上配置相應(yīng)的作業(yè)提交環(huán)境,以實現(xiàn)將作業(yè)提交到集群之中。

那么為了管控對應(yīng)的業(yè)務(wù)組在集群上占用的資源量,我們在“資源決策服務(wù)”里,調(diào)用到了作業(yè)識別模塊。

資源配置策略

為了提高公司的生產(chǎn)開發(fā)效率,我們在第三階段實施了資源配置策略。同時,我們的核心目標點是:通過第二階段的 WeiPig 開發(fā)框架,來鼓勵各個業(yè)務(wù)團隊貢獻相應(yīng)的插件。

其實 WeiPig 是一套規(guī)范協(xié)議,大家在貢獻插件之前需要增加學習上的投入。因此,對于一些已經(jīng)實施了計算能力的業(yè)務(wù)方來說,雖然有利于將舊平臺遷移過來,但是他們不太愿意投入此類學習的成本。

所以我們想出了用資源去換取 WeiPig 前向發(fā)展的方法。我們將所有的平臺資源按照基礎(chǔ)資源、彈性資源、獎勵資源和平臺資源,四個方向進行劃分。

其中基礎(chǔ)資源僅占 1%,基本上只有一、兩臺機器。彈性資源有 20%,各個公司根據(jù)業(yè)務(wù)量和業(yè)務(wù)等級進行劃分,當業(yè)務(wù)量多的時候,每一個業(yè)務(wù)都可以有自己的重要程度和優(yōu)先級。

值得一提的是:獎勵資源為 30%。它通過兩方面標準:WeiPig 里貢獻的 Function 數(shù)量,和這些通用 Function 會被多少業(yè)務(wù)方所使用到,來進行公式算法上的衡量。

如果你貢獻的多,而且被其他業(yè)務(wù)方使用的也比較多,那么我們就會從所有平臺資源的 30% 中,給你劃分出更多的資源。

實時對賬系統(tǒng)

為了滿足某些高成功率場景的需求,我們在第三階段自行設(shè)計了一個實時對賬系統(tǒng)。

該系統(tǒng)的主要成績是:滿足實時計算平臺完成 6 個 9 的數(shù)據(jù)成功率需求。

上圖是實時對賬系統(tǒng)的一個簡單架構(gòu)圖。在數(shù)據(jù)處理開始時,我們會將數(shù)據(jù)寫入實時對賬系統(tǒng),并打上開始標志。

同時,實時對賬系統(tǒng)會將該數(shù)據(jù)的開始處理、和結(jié)束處理的標志,存放到存儲服務(wù)上。

而圖中下方的離線定時服務(wù),會定時查詢實時對賬系統(tǒng),并進行如下判斷:

  • 如果一條數(shù)據(jù)既有入賬,又有根據(jù)處理結(jié)束值所求的出賬,則認為該條數(shù)據(jù)已處理完成,即對賬成功。
  • 如果一條數(shù)據(jù)只有數(shù)據(jù)處理的開始,卻沒有處理結(jié)束的標志,則該條數(shù)據(jù)可能出現(xiàn)被丟掉的情況,我們需要重試。
  • 如果一條數(shù)據(jù)只有數(shù)據(jù)處理結(jié)束,卻沒有數(shù)據(jù)處理成功的標志,則會發(fā)出相應(yīng)的報警,我們需要查找相應(yīng)的問題。

穩(wěn)定性服務(wù)平臺

另外,在第三階段,我們將第二階段的“統(tǒng)一監(jiān)控平臺”升級成了“穩(wěn)定性服務(wù)平臺”。

其目標有如下三點:

  • 通用監(jiān)控指標的數(shù)據(jù)統(tǒng)一生成。前面在第二階段的監(jiān)控統(tǒng)一平臺中,我們必須在界面上去配置要監(jiān)控的指標項目,通過編寫相應(yīng)的采集代碼,然后把腳本部署到服務(wù)器上,以方便監(jiān)控的采集。

但是在第三階段的穩(wěn)定性服務(wù)平臺上,一個作業(yè)被提交到集群上之后,穩(wěn)定性服務(wù)平臺會對集群上處理的數(shù)據(jù)量、處理延遲、錯誤量等通用指標進行統(tǒng)一生成。

  • 集群資源負載均衡的監(jiān)控。其實 Storm 不像 Hadoop、Flink、Yum,它并沒有資源調(diào)度的管理系統(tǒng)。

因此,它在自己做管理資源時,會出現(xiàn)在一個集群中,某個服務(wù)器的 CPU 利用率已達 90%,而其他服務(wù)器的 CPU 利用率只占有 50%~60% 的情況。所以我們自行研發(fā)了對集群資源負載均衡的監(jiān)控。

  • 監(jiān)控指標采集平臺,統(tǒng)一所有監(jiān)控數(shù)據(jù)的采集。

這里展示的是實時流計算平臺穩(wěn)定性服務(wù)的架構(gòu)圖。左側(cè)的數(shù)據(jù)采集平臺包括:Storm 指標項目數(shù)據(jù)收集、Kafka 數(shù)據(jù)堆積量的數(shù)據(jù)收集、日志收集平臺、監(jiān)控腳本運行平臺、和服務(wù)器硬件資源的收集。

這是一個比較簡易的、便捷的資源負載均衡的監(jiān)控服務(wù)。完成統(tǒng)一采集之后,系統(tǒng)調(diào)用數(shù)據(jù)存儲服務(wù),經(jīng)由服務(wù)平臺的管理服務(wù)平臺、運維服務(wù)平臺、和第三方服務(wù)平臺,對外面開發(fā)人員提供相應(yīng)的服務(wù)。

上圖是第三階段相應(yīng)的成果。目前,我們的平臺每天能處理大約一千多億的數(shù)據(jù)量,TPS 大約有百萬每秒,作業(yè)個數(shù)則每天約有 150~200 個。

如今無論是多媒體相關(guān)的數(shù)字計算需求,還是微博相關(guān)的處理需求,我們的人工工作量已相對較少了,主要的工作量集中在編寫 WeiPig 相應(yīng)的配置文件上。相應(yīng)的代碼重復(fù)率也比較低,同樣主要集中在 WeiPig 文件上。

另外,由于我們主要是到 HDFS 上去搜集和管控相應(yīng)的日志,因此異常排查的效率適中。

而對于監(jiān)控方式而言,我們大部分采用的是自動生成的方式,所以只對一些特殊要求才進行監(jiān)控配置。

當然,目前的實時流計算平臺仍有兩個遺留問題:

  • 缺乏系統(tǒng)性的資源調(diào)度。我們需要有一個資源調(diào)度系統(tǒng),來實時獲知集群上的作業(yè)到底應(yīng)該運行在哪一臺服務(wù)器上。

目前我們采用的一種簡易方式是:搜集各臺服務(wù)器上的資源情況,然后用自己的程序進行判斷和處理。如果某一臺機器利用率高于其他服務(wù)器20%的話,那么我們認為其負載是不均衡的。

  • 日志收集方案不統(tǒng)一。

總結(jié) DQRA 設(shè)計模式

我們在實時流計算開發(fā)的過程中,一邊搭建業(yè)務(wù)平臺,一邊解決了不少問題。因此我們總結(jié)出了一套 DQRA 的設(shè)計模式。

DQRA 詳解

它們分別是:

  • Difficulty(邏輯復(fù)雜度)
  • Quantity(數(shù)據(jù)量)
  • Reliability(可靠性)
  • Asynchronous(異步時序性)

因此,我們認為:面對大多數(shù)的需求,我們可以把問題的實現(xiàn)拆解為上述四個屬性中的某種。

例如:邏輯復(fù)雜度有難、中、易;數(shù)據(jù)量有大、中、小;可靠性是高、中、弱;等方面。

上述便是 DQRA 可能出現(xiàn)的不同組合,以及所對應(yīng)的不同解決方法。

DQRA 案例分析

下面我們會介紹一個簡單案例,它包含如下特性:

  • D 難,表示實現(xiàn)的復(fù)雜度,即實時流作業(yè)中需要處理的邏輯比較難。
  • Q 中,表示數(shù)據(jù)量可能一般,可能是從幾千萬到十億之間。
  • R 高,表示可靠性高,即成功率要求高,如前面提到的 6 個 9 的數(shù)據(jù)處理成功率。

具體來說,它是一個圖像分析與處理類系統(tǒng),需要具有持續(xù)穩(wěn)定的服務(wù)保證。因此,系統(tǒng)穩(wěn)定是第一位的。

其次,它要求數(shù)據(jù)處理的成功率大于 6 個 9,從而能應(yīng)對單日 5000 萬的數(shù)據(jù)量。

因此,我們通過上述三個方面來實現(xiàn)該系統(tǒng)的需求:

  • 首先,針對系統(tǒng)的穩(wěn)定性,我們采用的是內(nèi)網(wǎng)和阿里云的“雙保險”網(wǎng)絡(luò)部署方式。
  • 其次,由于涉及到圖片的下載,而我們在做分析時,調(diào)用的是在線模型預(yù)測方式。

因此,為了避免可能出現(xiàn)的圖片分析失敗,我們采用了實時對賬系統(tǒng),實現(xiàn)了必要的重試處理。

廖博,新浪微博實時流技術(shù)平臺負責人,曾就職于搜狐、雅虎研究院、支付寶等公司參與 Data Highway、大數(shù)據(jù)系統(tǒng)、數(shù)據(jù)倉庫、UUS(User Understanding Service)等第一代大數(shù)據(jù)生態(tài)系統(tǒng)的搭建工作;現(xiàn)就職于新浪微博,主導(dǎo)和開發(fā)實時流計算平臺,基于該平臺之上完成多媒體分析平臺、物料池系統(tǒng)、樣本生成平臺等多個子系統(tǒng)的開發(fā)和建設(shè)。

【原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為.com】


名稱欄目:如何實現(xiàn)秒級百萬TPS?微博WAIC實時流計算平臺架構(gòu)演進
分享地址:http://m.5511xx.com/article/djijihs.html