成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何實現(xiàn)秒級百萬TPS?微博WAIC實時流計算平臺架構演進

原創(chuàng)
開發(fā) 架構 開發(fā)工具
隨著新浪微博業(yè)務的不斷推進,對數(shù)據(jù)處理的實時性要求越來越高。例如,大家所熟悉的微博熱詞,需要在很短的時間內(nèi)完成數(shù)據(jù)處理以供在線系統(tǒng)使用。

[[244671]]

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

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

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

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

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

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

初入實時流計算

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

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

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

 

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

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

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

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

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

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

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

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

實時流計算平臺初建

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

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

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

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

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

自研 WeiPig 框架

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

控制中心初現(xiàn)

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

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

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

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

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

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

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

資源配置策略

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

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

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

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

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

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

實時對賬系統(tǒng)

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

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

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

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

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

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

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

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

其目標有如下三點:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

總結 DQRA 設計模式

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

DQRA 詳解

它們分別是:

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

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

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

 

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

DQRA 案例分析

 

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

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

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

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

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

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

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

[[244673]]

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

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

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2018-05-16 14:04:05

人工智能新浪微博實時流計算

2020-01-20 09:01:22

搜索離線平臺

2017-10-13 13:13:14

人工智能深度學習微博

2023-05-10 07:21:58

數(shù)據(jù)平臺架構

2017-03-13 11:39:00

WOTWOTA高可用架構

2019-11-21 09:49:29

架構運維技術

2019-02-12 09:34:00

微博短視頻架構

2023-04-26 07:56:45

大模型機器學習

2015-09-24 18:08:50

微博架構架構演進架構

2020-03-18 07:11:24

實時同步搜索

2021-08-18 17:16:10

Git分片讀寫分離

2019-04-23 09:13:54

蘇寧采購架構

2023-03-16 07:20:15

大數(shù)據(jù)平臺云數(shù)據(jù)

2020-04-14 08:24:29

滴滴ElasticSear架構

2019-02-18 15:23:21

馬蜂窩MESLambda

2023-10-14 15:29:28

RedisFeed

2018-01-14 23:22:36

戴爾

2022-05-24 09:30:00

消息吞吐車聯(lián)網(wǎng)平臺車聯(lián)網(wǎng)

2015-04-16 10:35:08

微博微博如何實現(xiàn)

2022-05-18 10:07:29

EMQ車聯(lián)網(wǎng)MQTT
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.五月天婷婷.com | 日韩av在线一区 | 精品中文字幕在线 | 超碰520| 一区二区三区亚洲 | 久久久久久成人 | 欧美日韩中文字幕在线播放 | 中文字幕91 | 成人免费大片黄在线播放 | 久久国产精99精产国高潮 | 狠狠操电影 | 色综合99| 欧美国产视频 | 欧美视频xxx | 人人做人人澡人人爽欧美 | 亚洲一区二区三区四区五区午夜 | 夜夜草天天草 | 亚洲国产精品一区二区www | 免费视频一区二区 | 色悠悠久 | 狠狠狠色丁香婷婷综合久久五月 | 欧美色999| 日韩欧美一级片 | 日韩一区不卡 | 日韩专区中文字幕 | 国产精品精品视频一区二区三区 | 欧美在线一区视频 | 高清一区二区三区 | 欧美网站一区 | 你懂的在线视频播放 | 欧美黄色小视频 | 黄色大全免费看 | 一级毛片播放 | 一区二区三区视频在线 | 天天亚洲 | 国产一区二区欧美 | 日韩中文一区二区 | 国产精品久久久久久妇女 | 日韩精品免费视频 | 日本网站免费在线观看 | 国产69精品久久久久777 |