国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
無處不在的流計算到底是什么?終于有人講明白了

導讀:兩千多年以前,孔老夫子站在大河邊,望著奔流而去的河水,不禁感嘆:“逝者如斯夫,不舍晝夜?!崩戏蜃邮窃趪@惜著韶華白首,時光易逝!

兩千多年以后的今天,當你我抱著手機讀書、追劇、搶票、剁手、刷小視頻、發(fā)紅包的時候,一道道信息流正在以光速在世界范圍內(nèi)傳遞和傳播。

本文就從“流”講起,帶你了解什么是流計算,它都有哪些優(yōu)勢?用在了哪些地方?

作者:周爽

來源:大數(shù)據(jù)DT(ID:hzdashuju)

自從互聯(lián)網(wǎng)和物聯(lián)網(wǎng)誕生以來,人與人、人與物、物與物之間的互聯(lián)和互動愈加緊密和頻繁,大量豐富多彩的數(shù)據(jù)在互聯(lián)和互動的過程中產(chǎn)生。海量的數(shù)據(jù)洪流將我們的時間和空間愈占愈滿,以至于讓我們開始疲于奔命,鮮有時間和能力再去感受和思考那些一瞬間的百萬種可能。

武林江湖中留傳著一句至理名言:“天下武功,無堅不摧,唯快不破!”。

更快更完整地獲取數(shù)據(jù),更快更充分地挖掘出數(shù)據(jù)價值,業(yè)已成為大數(shù)據(jù)時代各行各業(yè)的共識。在線系統(tǒng)監(jiān)控、移動數(shù)據(jù)和物聯(lián)網(wǎng)、金融風控、推薦系統(tǒng)等,雖然行業(yè)各不相同,但是它們有個共同點——“實時流計算”技術在這些領域發(fā)揮著越來越重要的作用。

01 “流”好在哪里?

“流”是一種非常好的編程模式。

▲圖1:代表流計算模式的有向無環(huán)圖DAG

首先,“流”與“異步”不謀而合。

“流”的各個節(jié)點通過隊列傳遞消息,不同節(jié)點的執(zhí)行正好就是完全異步的。并且由于有隊列隔離,不同節(jié)點的執(zhí)行完全不用考慮并發(fā)安全的問題?!傲鳌痹趦?nèi)部執(zhí)行時是異步和并行的,能最大限度提高資源使用效率,提高程序執(zhí)行性能。

可以說,“流”是“異步”的一種重要表現(xiàn)方式,“異步”則是“流”在執(zhí)行時的內(nèi)稟性質(zhì)。

▲圖2:“流”和“異步”,傻傻分不清楚!

其次,如果“流”的執(zhí)行節(jié)點間使用的是阻塞隊列,那么整個流的各個執(zhí)行環(huán)節(jié)就天然地帶有了反向壓力能力,讓我們不必擔心很多異步系統(tǒng)在高負載而又臨時處理能力不足時造成的OOM問題。

再次,“流”能夠非常自然地描述業(yè)務執(zhí)行的流程。不管是大到整個產(chǎn)品線的各個服務模塊,還是小到每個服務模塊中的具體實現(xiàn)步驟。就像“分形”一樣,“流”能夠做任意細力度的劃分。這是一種非常普遍的描述事情發(fā)生過程的模式。

最后,通過類似于Kafka這樣消息中間件的隔離,可以非常清晰地定義模塊和模塊之間的邊界,從設計模式中高內(nèi)聚、低耦合的角度來看,是一種非常不錯的實踐!

02 流計算解決了什么問題?

總的來說,我們使用流計算主要是為了計算以下幾類問題。

1. 流數(shù)據(jù)操作

流數(shù)據(jù)操作可以說是流計算系統(tǒng)與生俱來的能力,它本身是針對數(shù)據(jù)流的轉化或轉移處理,所以實現(xiàn)和使用起來都相對更加直觀。

流數(shù)據(jù)操作的內(nèi)容主要包括了三類:對數(shù)據(jù)進行清洗、規(guī)整和結構化,對不同來源的數(shù)據(jù)進行關聯(lián)及合并,以及在不同系統(tǒng)之間搬運數(shù)據(jù)。這三類操作通過一些常用的流式API就可以實現(xiàn)。

2. 單點特征計算

一個事件中包含的用戶是否在黑名單中?發(fā)生事件的設備是否是模擬器?溫度傳感器傳來的溫度事件是否已經(jīng)超出正常溫度范圍?發(fā)送消息設備的IP是否是代理?一次交易的金額是否屬于大額交易?手機是否有SIM卡?

諸如此類的問題,要么可以通過黑白名單,要么能夠通過特定的規(guī)則計算而得到答案,實現(xiàn)起來相對簡單,所以我們將這類特征計算稱之為單點特征。

3. 時間維度聚合特征計算

相同設備的1小時內(nèi)注冊事件次數(shù)、相同銀行卡號的7天交易事件次數(shù)、過去30天內(nèi)同一IP段上交易金額、過去1分鐘高溫事件的次數(shù)、過去5分鐘日志告警事件的次數(shù)……

諸如此類特征在諸如風控、預警、監(jiān)控等各種場景都非常廣泛的應用。分析不難發(fā)現(xiàn),這類特征都有個共同特點,它們均需要在時間維度對數(shù)據(jù)進行聚合運算。因此,我們稱這類特征為時間維度聚合特征。

4. 關聯(lián)圖譜特征計算

除了時間維度的聚合分析外,我們還經(jīng)常進行“空間”維度的聚合分析。不過這種分析有個更專業(yè)的名字,即“關聯(lián)圖譜”分析。

比如在一些風控場景中,我們需要計算用戶賬戶使用IP的個數(shù)、同一手機號碼發(fā)生在不同城市的個數(shù)、同一設備上關聯(lián)用戶的數(shù)目、同一用戶關聯(lián)設備的數(shù)目、同一推薦人推薦的用戶數(shù)等特征。

以設備關聯(lián)用戶數(shù)為例,如果某個設備上注冊的用戶很多,那么它的風險就比較高,畢竟正常情況下我們都只會用自己的手機注冊自己的賬號,而不會是幫其他幾十、上百人注冊賬號的。

5. 事件序列分析

數(shù)據(jù)流中的數(shù)據(jù)不是單純在時間上有著先來后到的關系,而是在數(shù)據(jù)和數(shù)據(jù)之間也有著聯(lián)系。

考慮用戶在手機上安裝新APP的過程,它可能是先點擊了某個廣告鏈接,然后下載并安裝了APP,最后成功注冊了賬號。從“點擊”到“下載”,再到“安裝”和“注冊”,這就完成了一次將廣告轉化為用戶的過程。

再比如在網(wǎng)絡欺詐識別場景中,如果用戶在新建賬號后,立馬發(fā)生大量交易行為。那么這種“新建賬號”到“10分鐘內(nèi)5次交易”的行為就是種非常可疑的行為了。

諸如此類從數(shù)據(jù)流表示的事件流中,檢測并篩選出符合特定模式或行為的事件序列的過程,我們稱之為復雜事件處理(Complex Event Processing,簡稱為CEP)。CEP也是流計算經(jīng)常被用來解決的問題。

6. 模型學習和預測

隨著流計算越來越流行和普及,越來越多的原本主要針對離線批式數(shù)據(jù)的統(tǒng)計和機器學習模型也被用于流數(shù)據(jù)。

比如在風控系統(tǒng)中,當我們計算好特征后,還需要把這些特征輸入評分模型進行風險評分。根據(jù)不同的使用場景,使用的評分模型可能是基于規(guī)則的模型,也可能是基于機器學習的模型。傳統(tǒng)的機器學習模型主要通過離線訓練而來,但現(xiàn)在越來越多的模型會直接基于流數(shù)據(jù)在線訓練和更新。

再比如在異常檢測應用中,我們會在線統(tǒng)計并估計變量的分布參數(shù),然后根據(jù)訓練出的分布模型判斷變量之后的取值是否屬于異常。這種同時在線更新和預測的做法,在流計算應用中也越來越常見。

03 流數(shù)據(jù)狀態(tài)和流信息狀態(tài)

在流計算系統(tǒng)中,“狀態(tài)”是非常重要的方面。甚至從各種開源流計算框架的發(fā)展歷史來看,我們會發(fā)現(xiàn)大家對實時流計算中的“狀態(tài)”問題也是一點點逐步才弄清楚的。

關聯(lián)操作中臨時保存的窗口數(shù)據(jù)、實現(xiàn)時間維度聚合特征、關聯(lián)圖譜特征、CEP中有限狀態(tài)機、統(tǒng)計或機器學習模型的參數(shù)估計,實時流計算系統(tǒng)需要的最主要的幾個計算目標,無不與“狀態(tài)”有關。但,這些狀態(tài)是有區(qū)別的!

我們將流在執(zhí)行過程中涉及到的狀態(tài),分為兩類:流數(shù)據(jù)狀態(tài)流信息狀態(tài)。

  • 流數(shù)據(jù)狀態(tài)。在流數(shù)據(jù)處理的過程中,可能需要處理事件窗口、時間亂序、多流關聯(lián)等問題,在解決這些問題的過程中,通常會涉及到對部分流數(shù)據(jù)的臨時緩存,并在處理完后將其清理。我們將臨時保存的部分流數(shù)據(jù)稱為“流數(shù)據(jù)狀態(tài)”。

  • 流信息狀態(tài)。在對流數(shù)據(jù)的分析過程中,會得到一些我們感興趣的信息,比如時間維度的聚合數(shù)據(jù)、關聯(lián)圖譜中的一度關聯(lián)節(jié)點數(shù)、CEP中的有限狀態(tài)機等,這些信息可能會在后續(xù)的流數(shù)據(jù)分析過程中被繼續(xù)使用,從而需要將這些信息保存下來。同時在后續(xù)的流數(shù)據(jù)處理過程中,這些信息還會被不斷地訪問和更新。我們將這些分析所得并保存下來的數(shù)據(jù)稱為“流信息狀態(tài)”。

將實時流計算應用中的狀態(tài)分為了“流數(shù)據(jù)狀態(tài)”和“流信息狀態(tài)”??梢哉f是從兩個不同的維度對“流”進行的管理。前者“流數(shù)據(jù)狀態(tài)”是從“時間”角度對流進行管理,而后者“流信息狀態(tài)”則是從“空間”角度對流的管理。

“流信息狀態(tài)”彌補了“流數(shù)據(jù)狀態(tài)”只是對事件在時間序列上做管理的不足,將流的狀態(tài)擴展到了任意的空間。

目前,針對“流信息狀態(tài)”的存儲,主要有三種方式:

  • 計算節(jié)點和狀態(tài)數(shù)據(jù)節(jié)點分離的分布式內(nèi)存數(shù)據(jù)庫方案

▲圖3:使用Redis集群進行狀態(tài)存儲和管理

  • 計算節(jié)點和狀態(tài)數(shù)據(jù)節(jié)點共存的分布式內(nèi)存格點方案

▲圖4:使用Ignite集群進行狀態(tài)存儲和管理

  • 基于分布式文件系統(tǒng)同步狀態(tài)數(shù)據(jù)的方案

▲圖5:基于分布式文件系統(tǒng)的狀態(tài)存儲和管理集群

將“流計算應用本身的執(zhí)行過程”和“流數(shù)據(jù)的信息管理機制”解耦,這使得實時流計算系統(tǒng)的整體結構更加清晰。如果我們將前者理解為CPU的執(zhí)行流水線,那么后者就相當于是內(nèi)存。實時流計算系統(tǒng)的這種架構就非常像是一個分布式的JVM了!

04 流計算框架

目前的開源流計算框架有許多,比如Apache Storm、Spark Streaming、Apache Samza、Apache Flink、Akka Streaming、Apache Beam等。這些流計算框架各有特色,那我們該如何面對琳瑯滿目的流計算框架呢?可以從兩個角度來看待這個問題。

從橫向功能特征的角度來看,其實所有流計算框架的核心概念都是相同的。只要我們掌握了流計算中的核心概念,把握流計算框架中各種問題的關鍵所在,那么面對這些流計算框架,也不會感到眼花繚亂,亂了陣腳。

從縱向發(fā)展歷史的角度來看,以Flink為代表的新一代流計算框架,在理論和實踐上都已日趨完善和成熟。當掌握了流計算中的核心概念后,不妨一開始就站在Flink這個巨人的肩膀上,開始在流計算領域的探索和實踐。

而作為有希望統(tǒng)一流計算領域的Apache Beam,實際上是構建在各種具體流計算框架上的更高一層統(tǒng)一編程模式,它對流計算中的各種概念和問題做出了總結,是我們追蹤流計算領域最新進展的一個好切入點。

最后附上實時流計算系統(tǒng)思維導圖(點擊圖片可放大):

作者簡介:周爽,本碩畢業(yè)于華中科技大學,先后在華為2012實驗室高斯部門和上海行邑信息科技有限公司工作。開發(fā)過實時分析型內(nèi)存數(shù)據(jù)庫RTANA、華為公有云RDS服務、移動反欺詐MoFA等產(chǎn)品。目前但任公司技術部架構師一職。著有《實時流計算系統(tǒng)設計與實現(xiàn)》一書。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Kafka數(shù)據(jù)流:讓流處理更輕松
極簡入門 · 廣告推薦中大規(guī)模分布式模型
NETCONF
【Scala】響應式編程思想
市場購物籃分析(規(guī)則歸納/C5.0)+apriori
性價比超高的機器學習新思路也不是天天有,抓緊!
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服