智能風(fēng)控系統(tǒng)設(shè)計(jì)與實(shí)踐_第1頁(yè)
智能風(fēng)控系統(tǒng)設(shè)計(jì)與實(shí)踐_第2頁(yè)
智能風(fēng)控系統(tǒng)設(shè)計(jì)與實(shí)踐_第3頁(yè)
智能風(fēng)控系統(tǒng)設(shè)計(jì)與實(shí)踐_第4頁(yè)
智能風(fēng)控系統(tǒng)設(shè)計(jì)與實(shí)踐_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

智能風(fēng)控系統(tǒng)設(shè)計(jì)與實(shí)踐導(dǎo)讀在主流互聯(lián)網(wǎng)產(chǎn)品中,比如搜索和推薦的系統(tǒng),為了挖掘用戶潛在購(gòu)買需求,縮短用戶到商品或信息的距離,提高用戶的使用體驗(yàn),都需要使用大量的特征來刻畫用戶的行為。在信息安全領(lǐng)域,建立在人工智能技術(shù)之上的策略引擎已經(jīng)深入到了風(fēng)控產(chǎn)品功能的方方面面,相應(yīng)的,每一個(gè)策略系統(tǒng)都離不開大量的特征,來支撐模型算法或人工規(guī)則對(duì)請(qǐng)求的精準(zhǔn)響應(yīng),因此特征系統(tǒng)成為了支持線上風(fēng)控引擎的重要支柱。本文以智能風(fēng)控在線特征系統(tǒng)為原型,重點(diǎn)從線上數(shù)據(jù)從生產(chǎn)到特征物料提取、計(jì)算、存取角度介紹一些實(shí)踐中的通用技術(shù)點(diǎn),以解決在線特征系統(tǒng)在高并發(fā)情形下面臨的問題和挑戰(zhàn)。特征系統(tǒng)的基本概念.特征定義什么是特征?特征是一個(gè)客體或一組客體特性的抽象結(jié)果。特征是用來描述概念的。任一客體或一組客體都具有眾多特性,我們根據(jù)客體所共有的特性抽象出某一概念,該概念便成為了特征。因此我們可以理解特征是觀察事物的一個(gè)角度,它可以是'‘橫看成嶺側(cè)成峰”。特征它是一個(gè)抽象概念,為了使抽象的概念可落地、可存儲(chǔ)、可量化,結(jié)合了我們的業(yè)務(wù)特性對(duì)特征進(jìn)行了又一次定義:特征=維度+時(shí)間窗口+計(jì)算函數(shù)。舉個(gè)例子:'‘過去15分鐘同用戶多iP的數(shù)量〃,那么最終的實(shí)際計(jì)算結(jié)果為特征值,過去15分鐘為時(shí)間窗口,用戶標(biāo)識(shí)為維度,計(jì)算函數(shù)是針對(duì)iP進(jìn)行去重計(jì)算的邏輯。.時(shí)間窗口類型在信息安全領(lǐng)域,黑產(chǎn)為了追求收益,一定會(huì)最大程度的將成本最小化。為了保證成本的可控,黑產(chǎn)在攻擊時(shí)采取的策略是能簡(jiǎn)單決不復(fù)雜,能機(jī)器絕不人工,總之就一個(gè)目標(biāo),完成利益的收割,因此他們一定會(huì)利用僅有的資源做一些高頻的動(dòng)作。那么以什么樣的周期或者時(shí)間窗口來統(tǒng)計(jì)這些高頻率動(dòng)作更能反應(yīng)出實(shí)際問題呢?我們?cè)陂L(zhǎng)期的風(fēng)控治理中結(jié)合業(yè)界的劃分標(biāo)準(zhǔn)歸納了以下四種:a)自然窗口期:時(shí)間窗口的起點(diǎn)是固定的,但終止時(shí)間點(diǎn)一直在向前滾動(dòng),比如用戶當(dāng)天累計(jì)發(fā)帖數(shù)量或者消耗類特征的存儲(chǔ)。b)固定窗口期:時(shí)間窗口的起止時(shí)間點(diǎn)是固定的,比如每天的某一時(shí)間段用戶發(fā)送消息數(shù)量,主要針對(duì)特定時(shí)間用戶的處罰、灌水的限制等。c)滑動(dòng)窗口期:時(shí)間窗口的長(zhǎng)度是固定的,但起止時(shí)間點(diǎn)一直在向前滾動(dòng),主要針對(duì)風(fēng)控事中檢測(cè),常用來判讀信息準(zhǔn)入,例如風(fēng)控發(fā)帖時(shí)間點(diǎn)前15分鐘的計(jì)數(shù)。d)Session窗口期:以第一個(gè)事件開始,依次向后滾動(dòng)計(jì)算,直到超出一個(gè)session窗口期時(shí)間重新開始,主要針對(duì)控頻,UV統(tǒng)計(jì)等。

9:00

9:31

9:50

10:10

1030

10:50自洪蜀口期0:00?當(dāng)前9:00

9:31

9:50

10:10

1030

10:50自洪蜀口期0:00?當(dāng)前固定窗口期滑動(dòng)菌口朗Session窗口期9:30-10:30圖1如圖1所示,相同的維度,相同的計(jì)算函數(shù),不同的時(shí)間窗口類型得到的特征值及其反應(yīng)的業(yè)務(wù)含義都會(huì)有一定的差別。特征的計(jì)算有繁有簡(jiǎn),復(fù)雜多變。回到業(yè)務(wù)需求,我們的目的是通過特征生產(chǎn)系統(tǒng)來簡(jiǎn)化開發(fā)工作量,而非完全取代特征開發(fā)。因此我們選擇一部分常見的函數(shù)計(jì)算類型,實(shí)現(xiàn)自動(dòng)化生產(chǎn)。對(duì)于更復(fù)雜的特征計(jì)算,提供了特征更新接口支持第三方應(yīng)用的對(duì)接。總結(jié)常見的計(jì)算類型主要有以下幾種。a)求和(SUM),對(duì)窗口期內(nèi)的數(shù)據(jù)進(jìn)行求和;b)計(jì)數(shù)(COUNT),對(duì)窗口期內(nèi)的數(shù)據(jù)進(jìn)行計(jì)數(shù)統(tǒng)計(jì);c)去重計(jì)數(shù)(COUNT_DISTINCT),對(duì)窗口期內(nèi)的指定字段去除重復(fù)量后統(tǒng)計(jì);d)明細(xì)(LIST),返回窗口期內(nèi)最新的前5000條明細(xì)數(shù)據(jù);e)最大值(MAX),計(jì)算出窗口期內(nèi)的最大值;f)最小值(MIN),計(jì)算出窗口期內(nèi)的最小值;g)平均數(shù)(AVG),對(duì)窗口期內(nèi)的數(shù)進(jìn)行均值計(jì)算。早期特征系統(tǒng)技術(shù)實(shí)現(xiàn)方案早期特征系統(tǒng)主要以離線的方式為主,在數(shù)據(jù)倉(cāng)庫(kù)中特征表主要依靠數(shù)據(jù)分析師、算法工程師以及策略運(yùn)營(yíng)等同學(xué)建立特征需求由數(shù)據(jù)工程師排期開發(fā),同時(shí)數(shù)據(jù)工程師還需要開發(fā)ETL調(diào)度任務(wù),每天定時(shí)將數(shù)據(jù)同步到相應(yīng)的Hbase表中,通過統(tǒng)一的服務(wù)接口為線上風(fēng)控策略提供支持。早期技術(shù)架構(gòu)如圖2所示,但是隨著業(yè)務(wù)量的不斷擴(kuò)張,現(xiàn)有的技術(shù)架構(gòu)已不能滿足日益增長(zhǎng)的業(yè)務(wù)需求,主要體現(xiàn)在以下兩點(diǎn):a)無論是業(yè)務(wù)的創(chuàng)新速度還是對(duì)數(shù)據(jù)需求變化的速度都要遠(yuǎn)遠(yuǎn)超過數(shù)據(jù)工程師對(duì)特征開發(fā)的速度;b)因?yàn)轱L(fēng)控存在對(duì)抗性,因此用戶近幾分鐘、近幾秒的行為信息往往比很多離線特征更具有價(jià)值,在線實(shí)時(shí)特征必然會(huì)在策略系統(tǒng)中發(fā)揮越來越重要的作用。在線實(shí)時(shí)特征系統(tǒng)設(shè)計(jì)與實(shí)踐,對(duì)從整體功能上來講,在線實(shí)時(shí)特征系統(tǒng)的設(shè)計(jì)主要考慮以下幾個(gè)方面:a)數(shù)據(jù)大,風(fēng)控系統(tǒng)每天產(chǎn)生日志量3TB左右,同時(shí)特征系統(tǒng)還會(huì)接入發(fā)布、瀏覽、登錄、注冊(cè)、聊天等數(shù)據(jù)。很多情況下同一份數(shù)據(jù)需要提取不同維度、不同指標(biāo)的特征,待處理的數(shù)量還會(huì)倍增。因此每天需要解析及計(jì)算的數(shù)量巨大。b)時(shí)效性高,面對(duì)龐大的數(shù)據(jù)量級(jí),數(shù)據(jù)的處理實(shí)效性要求是秒級(jí)別,同時(shí)不能產(chǎn)生數(shù)據(jù)堆積的情況。c)并發(fā)大,風(fēng)控策略系統(tǒng)面向用戶端,服務(wù)端峰值QPS超過35萬,每日調(diào)用量超過200億次。d)延遲低,面對(duì)用戶的請(qǐng)求,風(fēng)控系統(tǒng)為了保持良好的用戶體驗(yàn),更快的完成對(duì)用戶準(zhǔn)入條件的判斷,要求特征系統(tǒng)接口的延遲在50ms以內(nèi)。實(shí)現(xiàn)一個(gè)簡(jiǎn)化版本特征系統(tǒng)可能只需要幾人日就可以完成,但是帶著以上幾個(gè)問題的同時(shí)還需要考慮在復(fù)雜的業(yè)務(wù)場(chǎng)景中應(yīng)用,兼顧用戶的靈活配置、穩(wěn)定的提供服務(wù)等情況下,卻需要一個(gè)團(tuán)隊(duì)長(zhǎng)期的業(yè)務(wù)積累和技術(shù)沉淀。機(jī)器學(xué)習(xí)RedlsCQ良ed長(zhǎng)白3Redim峙汪應(yīng)用展特證計(jì)算后特征物H提取用風(fēng)摔系統(tǒng)風(fēng)祥依警能量轉(zhuǎn)日調(diào)度中控自基于良自由(IMflnCcwnlef)規(guī)則引厚動(dòng)態(tài)據(jù)樨解折鞫怔解析MySQL特征回制標(biāo)普提取消息隊(duì)列任彈授版引MapReduceJab特征存儲(chǔ)層SCF代埋展SCF場(chǎng)景”機(jī)器學(xué)習(xí)RedlsCQ良ed長(zhǎng)白3Redim峙汪應(yīng)用展特證計(jì)算后特征物H提取用風(fēng)摔系統(tǒng)風(fēng)祥依警能量轉(zhuǎn)日調(diào)度中控自基于良自由(IMflnCcwnlef)規(guī)則引厚動(dòng)態(tài)據(jù)樨解折鞫怔解析MySQL特征回制標(biāo)普提取消息隊(duì)列任彈授版引MapReduceJab特征存儲(chǔ)層SCF代埋展SCF場(chǎng)景”RMN分H復(fù)胖RedlsCl〔5CF快摑靖秉)一口Hbaw散指爸陣消息隊(duì)列數(shù)圍字由MySQL圖3圖3為在線實(shí)時(shí)特征系統(tǒng)的概貌,自底向上為數(shù)據(jù)流動(dòng)的方向,各部分的功能如下:a)數(shù)據(jù)源:線上系統(tǒng)產(chǎn)生的數(shù)據(jù),經(jīng)過加工采集離線部分流入到離線數(shù)據(jù)倉(cāng)庫(kù)(Hive),實(shí)時(shí)數(shù)據(jù)源主要會(huì)推送到Kafka。b)物料提?。焊鶕?jù)中控臺(tái)配置對(duì)原始數(shù)據(jù)進(jìn)行解析,相應(yīng)的維度提取,數(shù)據(jù)流削峰后流入計(jì)算層。c)特征計(jì)算:該部分主要提供計(jì)算框架,生產(chǎn)特征。d)特征存儲(chǔ):該部分提供在線特征存、取能力,直接為上層應(yīng)用提供統(tǒng)一的服務(wù)接口。e)特征應(yīng)用:線上風(fēng)控、預(yù)警等,線下模型訓(xùn)練樣本向量化。特征生產(chǎn)的生命周期可以抽象為提、算、存、用四個(gè)步驟,作為在線特征系統(tǒng)的一體化解決方案。下文主要圍繞特征系統(tǒng)的核心功能在開發(fā)過程中遇到的問題及解決辦法和一些通用的實(shí)踐經(jīng)驗(yàn)等展開介紹,如數(shù)據(jù)字典建設(shè)、分布式系統(tǒng)設(shè)計(jì)、在線特征計(jì)算框架、低延遲計(jì)算等主題會(huì)在下面文章中做詳細(xì)介紹。.可靈活配置的特征系統(tǒng)構(gòu)建在線的實(shí)時(shí)特征系統(tǒng)的主要目的之一就是〃提效〃,因此至少90%以上的特征計(jì)算由日常運(yùn)營(yíng)配置產(chǎn)出。那么讓運(yùn)營(yíng)人員在日常工作中產(chǎn)生的特征可配置的難點(diǎn)在于處理消息隊(duì)列中的實(shí)時(shí)數(shù)據(jù)無法獲取元數(shù)據(jù)及字段說明,在運(yùn)營(yíng)人員對(duì)日志又不是十分了解的情況下手動(dòng)錄入字段出錯(cuò)率很高。為了解決消息隊(duì)列數(shù)據(jù)無法獲取元數(shù)據(jù)問題,我們基于離線數(shù)據(jù)倉(cāng)庫(kù)構(gòu)建了〃數(shù)據(jù)字典〃,主要方案是定義了日志打印標(biāo)準(zhǔn),統(tǒng)一使用Json記錄日志。日志采集統(tǒng)一到Kafka中,其中Kafka有一個(gè)數(shù)據(jù)倉(cāng)庫(kù)的消費(fèi)者,將數(shù)據(jù)寫入數(shù)據(jù)倉(cāng)庫(kù)中。當(dāng)數(shù)據(jù)導(dǎo)入數(shù)據(jù)倉(cāng)庫(kù)時(shí),我們記錄了下字段名稱、字段更新時(shí)間,是否在擴(kuò)展字段,通過Hive還可以獲取到字段的備注內(nèi)容等。另外還有一些字段需要二次解析、變形、轉(zhuǎn)置之后才能使用,但是又不能每次需要解析時(shí)而進(jìn)行重新發(fā)版上線,因此這里使用Groovy通過閉包的方式,把一些需要變換的邏輯抽象成一個(gè)一個(gè)的解析函數(shù)。

如圖4所示,在線上的應(yīng)用場(chǎng)景中,同一個(gè)數(shù)據(jù)源一定也會(huì)生產(chǎn)出多個(gè)特征,那么這些特征也會(huì)使用各種Groovy解析函數(shù)。在使用這些解析函數(shù)時(shí),可以把這些待處理的特征按照Groovy解析函數(shù)來排序,相同的解析函數(shù)直接使用上次解析的結(jié)果,從而避免重復(fù)加載而降低Cpu的資源開銷。.大規(guī)模數(shù)據(jù)特征提取大規(guī)模數(shù)據(jù)直接會(huì)導(dǎo)致系統(tǒng)的并發(fā)量上升,同時(shí)也會(huì)對(duì)系統(tǒng)的吞吐量有較高的要求。當(dāng)我們?cè)诮鉀Q高并發(fā)、高吞吐量時(shí)最直接有效的辦法就是增加機(jī)器資源,沒有之一。KafkaTopiC_2KafkaTopicSCFService特征存儲(chǔ)計(jì)算KafkaPortitlon-1KaFkaTopfc_lKEK。消費(fèi)者特征提取節(jié)點(diǎn)』特征提取節(jié)點(diǎn)-2特征配置特征配置特征-2特征…特征KafkaTopiC_2KafkaTopicSCFService特征存儲(chǔ)計(jì)算KafkaPortitlon-1KaFkaTopfc_lKEK。消費(fèi)者特征提取節(jié)點(diǎn)』特征提取節(jié)點(diǎn)-2特征配置特征配置特征-2特征…特征-2特征…特征T特征TKofkaPcrtitEon-2圖5關(guān)于特征提取,正如圖5所示針對(duì)同一個(gè)Topic的每個(gè)分區(qū),我們都會(huì)有一個(gè)對(duì)應(yīng)的節(jié)點(diǎn)來消費(fèi),這樣可以達(dá)到最大的并行處理速度。但是面對(duì)業(yè)務(wù)的增長(zhǎng),一個(gè)重度使用的數(shù)據(jù)源可能會(huì)慢慢的積累幾百個(gè)特征配置,那么這個(gè)數(shù)據(jù)源的每條數(shù)據(jù)也需要重復(fù)處理幾百次,因此這個(gè)數(shù)據(jù)源的Topic分區(qū)對(duì)應(yīng)消費(fèi)者節(jié)點(diǎn)的Cpu使用率也跟著直線上升,當(dāng)Cpu使用率達(dá)到100%時(shí)就會(huì)消費(fèi)延遲,分區(qū)數(shù)據(jù)積壓現(xiàn)象。在排查分析原因是,根據(jù)一個(gè)節(jié)點(diǎn)會(huì)同時(shí)消費(fèi)多個(gè)topic的其中一個(gè)分區(qū),找了一個(gè)滿載節(jié)點(diǎn)粗略算了一下,數(shù)量大約在2W/s,當(dāng)前這個(gè)數(shù)據(jù)源配置了600個(gè)特征,那么當(dāng)前節(jié)點(diǎn)每秒需要處理1200W個(gè)特征物料,因此結(jié)論就是數(shù)據(jù)太大機(jī)器負(fù)載過高,在單位時(shí)間內(nèi)處理不完了。我們都知道,KafkaTopic的分區(qū)數(shù)量決定了消費(fèi)者并行度,因此最容易想到的解決方法就是擴(kuò)分區(qū),要不就是增大單節(jié)點(diǎn)內(nèi)核。但是這里會(huì)出現(xiàn)一個(gè)問題,業(yè)務(wù)會(huì)增長(zhǎng)導(dǎo)致特征數(shù)量也一定會(huì)再增長(zhǎng),而分區(qū)和內(nèi)核數(shù)量卻都有上限,因此這種方案只是換湯不換藥。針對(duì)以上問題解決辦法主要引進(jìn)了分布式設(shè)計(jì)的思路,將節(jié)點(diǎn)劃分為數(shù)據(jù)拉取節(jié)點(diǎn)(Spout)和數(shù)據(jù)處理節(jié)點(diǎn)(Worker),Spout會(huì)消費(fèi)Kafka中的數(shù)據(jù)然后將數(shù)據(jù)序列化后發(fā)送到Worker。這么做的目的是可以讓同一個(gè)分區(qū)的數(shù)據(jù)分散到不同的Worker節(jié)點(diǎn)處理,通過支持橫向擴(kuò)展的方式使服務(wù)的整體可靠性和擴(kuò)展性的到了提升。

特怔配置第2條數(shù)據(jù)KofkaTopicKq^ci消瞽者第1條數(shù)據(jù)F第2條數(shù)據(jù)第門條數(shù)據(jù)第1條數(shù)據(jù)第n條數(shù)據(jù)特怔配置第2條數(shù)據(jù)KofkaTopicKq^ci消瞽者第1條數(shù)據(jù)F第2條數(shù)據(jù)第門條數(shù)據(jù)第1條數(shù)據(jù)第n條數(shù)據(jù)Spout-1Spout-2特征存赭計(jì)算KafkaTopic_2特征配置KofkaTopic」KafkaPartition-1KnfkoPartiticjn-2Worker-1WorkersWorker-□征-[[特征-2] [特征7]I特征-2] [特征-1J[軾征-2)圖6使用了分布式系統(tǒng)設(shè)計(jì)就需要考慮它的容錯(cuò)機(jī)制,Kafka和使用的SCF框架本身具備容錯(cuò)機(jī)制,但是以下兩點(diǎn)需要格外注意:a)在網(wǎng)絡(luò)繁忙或Worker節(jié)點(diǎn)負(fù)載過高時(shí)可能會(huì)導(dǎo)致Spout發(fā)送數(shù)據(jù)失敗,這時(shí)需要Spout具備故障自動(dòng)轉(zhuǎn)移和負(fù)載輪詢功能。b)當(dāng)數(shù)據(jù)到達(dá)Worker節(jié)點(diǎn),Worker節(jié)點(diǎn)處理數(shù)據(jù)可能會(huì)失敗,也可能宕機(jī)。這時(shí)Spout會(huì)封裝Offset、iP、md5check為一個(gè)Tuple,Spout首先會(huì)將Tuple推送到延遲隊(duì)列,延遲時(shí)間為特征配置的Timeout,然后向Worker節(jié)點(diǎn)發(fā)送序列化的Tuple。數(shù)據(jù)在Worker節(jié)點(diǎn)處理完成后會(huì)通過RPC調(diào)用Spout的ack方法,Spout會(huì)將當(dāng)前消息從延遲隊(duì)列移除,否則延遲隊(duì)列會(huì)將消息發(fā)送回Spout讓其重新向Worker發(fā)送數(shù)據(jù)。.在線特征計(jì)算框架我們前面提到過特征的定義,那么計(jì)算特征值其實(shí)就是計(jì)算當(dāng)前維度下單位時(shí)間內(nèi)按照指定計(jì)算函數(shù)計(jì)算出來的值,因此相同維度的指標(biāo)計(jì)算只需要考慮時(shí)間窗口和計(jì)算函數(shù)。我們?cè)诳蚣艿脑O(shè)計(jì)上也考慮到了不同時(shí)間窗口的實(shí)現(xiàn)方式應(yīng)該盡量跟計(jì)算函數(shù)解耦,可以抽象出各自的處理方式。根據(jù)現(xiàn)有的窗口類型和計(jì)算函數(shù)的組合,一共可以支持以下28種常見的特征計(jì)算。自然窗口期固定窗口期滑動(dòng)窗口期Session窗口期SUM累加器累加器延遲隊(duì)列累加器COUNT累加器累加器延遲隊(duì)列累加器AVG累加器累加器延遲隊(duì)列累加器MAX對(duì)比器對(duì)比器順序隊(duì)列對(duì)比器MIN對(duì)比器對(duì)比器順序隊(duì)列對(duì)比器COUNT_DISTINCT集合集合順序隊(duì)列集合LIST列表列表順序隊(duì)列列表對(duì)于在線特征計(jì)算框架核心計(jì)算邏輯主要由以下幾種算子實(shí)現(xiàn):a)累加器:在Redis中維護(hù)最新的計(jì)算值,當(dāng)產(chǎn)生新數(shù)據(jù)時(shí)進(jìn)行累加操作,同時(shí)重置過期時(shí)間。過期時(shí)間可以根據(jù)窗口類型與當(dāng)前時(shí)間準(zhǔn)運(yùn)算出RedisKey的到期時(shí)間。b)對(duì)比器:和累加器類似,區(qū)別在新產(chǎn)生的值和最大小值對(duì)比,在Redis中始終維護(hù)最大值和最小值。c)延遲隊(duì)列:遲隊(duì)列的作用是可以將數(shù)據(jù)延遲指定時(shí)間后重新發(fā)送回計(jì)算框架,當(dāng)產(chǎn)生新數(shù)據(jù)時(shí),會(huì)使用累加器加和到特征值,同時(shí)將明細(xì)數(shù)據(jù)發(fā)送到延遲隊(duì)列。當(dāng)計(jì)算框架收到延遲隊(duì)列返回的數(shù)據(jù)時(shí),會(huì)使用累加器加和對(duì)應(yīng)的負(fù)值。d)順序隊(duì)列:在隊(duì)列中維護(hù)一份明細(xì)數(shù)據(jù),隊(duì)列的原則是先進(jìn)者先出,不允許插隊(duì)。當(dāng)產(chǎn)生新數(shù)據(jù)需要入隊(duì)時(shí)會(huì)有三個(gè)步驟:1)將當(dāng)前數(shù)據(jù)放到隊(duì)列尾部,同時(shí)用時(shí)間戳作為當(dāng)前數(shù)據(jù)的下標(biāo);2)檢查隊(duì)列頭部過期數(shù)據(jù)讓其出隊(duì);3)計(jì)算隊(duì)列中的數(shù)據(jù)。e)集合:顧名思義,就是在Redis中維護(hù)一個(gè)集合,當(dāng)有新數(shù)據(jù)產(chǎn)生時(shí)存入集合中后計(jì)算特征值。f)列表:實(shí)現(xiàn)了一個(gè)緩存功能,將產(chǎn)生的數(shù)據(jù)原封不動(dòng)的存儲(chǔ)在一個(gè)列表中,返回的值類型是一個(gè)List,其他算子返回的是一個(gè)dobule類型值。累加器對(duì)比器延遲隊(duì)列順序隊(duì)列魚會(huì)集合列表毫秒TCTCTCTCTCTC秒SparkStreamingSparkStreamingTCTCSparkStreamingSparkStreaming分鐘SparkStreamingSparkStreamingTCSparkStreamingTCSparkStreamingTCSparkStreamingTCSparkStreaming小時(shí)SparkSparkTCTCTCTC天MapReduceMapReduceMapReduceMapReduceMapReduceMapReduce在線特征計(jì)算框架如果采用統(tǒng)一的工具暴力計(jì)算會(huì)耗費(fèi)大量的存儲(chǔ)計(jì)算等資源,因此在計(jì)算框架的算子開發(fā)過程中,我們也按照不同的邏輯選擇了不同的開發(fā)工具,比如使用MapReduce解決天級(jí)別以上的高吞吐量計(jì)算,使用SparkStreaming做實(shí)時(shí)計(jì)算。想必我們的開發(fā)者對(duì)SparkStreaming的計(jì)算窗口、滑動(dòng)步長(zhǎng)等概念和它的一些其他特性都非常了解,開發(fā)起來也比較順手。但是針對(duì)在線的實(shí)時(shí)計(jì)算框架除了使用SparkStreaming之外還自己開發(fā)了一個(gè)計(jì)算模塊(TitanCounter簡(jiǎn)稱TC),TC主要實(shí)現(xiàn)了文中提到的累加器、延遲隊(duì)列、順序隊(duì)列等計(jì)算功能。TOC\o"1-5"\h\zI■ 1 1I1 , 1I9:00 10:00 11:00I第?口|第2窗口 |圖7為什么還要自己開發(fā)一個(gè)計(jì)算模塊呢?如圖7所示,這里有個(gè)時(shí)間軸,我的計(jì)算窗口是1小時(shí),滑動(dòng)步長(zhǎng)是15分鐘,那么使用SaprkStreaming將會(huì)每隔15分鐘計(jì)算1次最近1小時(shí)的值。如果有一個(gè)特征查詢時(shí)間點(diǎn)是10:10,那么我們當(dāng)前系統(tǒng)只存儲(chǔ)了10:00的特征值,10:15特征值還沒有計(jì)算出來。因此對(duì)時(shí)間特別敏感的特征應(yīng)該采用TC的方式計(jì)算,圖8為TC設(shè)計(jì)的核心流程。

過即延遲限到匕口水口Heh-3limt-2醫(yī)第電刎圖例Kolkdli?-joffsct-2frre-2□Ksell-1time-1He臥1RedisK:2過即延遲限到匕口水口Heh-3limt-2醫(yī)第電刎圖例Kolkdli?-joffsct-2frre-2□Ksell-1time-1He臥1RedisK:2圖8.低延時(shí)存儲(chǔ)設(shè)計(jì)a)資源隔離考慮到特征的存取延時(shí)要求極低,因此底層使用Redis分片集群。同時(shí)業(yè)務(wù)上有大有小、有核心業(yè)務(wù)也有一般業(yè)務(wù),所以在分片集群上構(gòu)建了一個(gè)資源隔離層,目

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論