日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
No.0 - 流計(jì)算產(chǎn)品綜合洞察@以終為始

01 流之源

以終為始 – 源

了解流計(jì)算之源,我們需要看一些自然現(xiàn)象,我們從左往右看,第一個(gè)詞斗轉(zhuǎn)星移,描述的是地球繞太陽(yáng)旋轉(zhuǎn)和地球自轉(zhuǎn)的自然現(xiàn)象。后面的改朝換代,生老病死,四季變化,日月交替也是被大家共識(shí)的客觀事實(shí)。這些詞語(yǔ)雖然不同,但這些現(xiàn)象都包括了很核心的幾個(gè)共性:

定制網(wǎng)站開(kāi)發(fā)可以根據(jù)自己的需求進(jìn)行定制,成都網(wǎng)站制作、做網(wǎng)站構(gòu)思過(guò)程中功能建設(shè)理應(yīng)排到主要部位公司成都網(wǎng)站制作、做網(wǎng)站的運(yùn)用實(shí)際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實(shí)際意義

那就是這里面都是有時(shí)間屬性,同時(shí)伴隨時(shí)間都會(huì)不斷的發(fā)生具體事件,同時(shí)在事件的作用下,整個(gè)環(huán)境也都發(fā)生著必然的變化?,F(xiàn)在我們聊一個(gè)大家都熟知、但卻充滿著 事件/計(jì)算/預(yù)測(cè) 等方面要素的事情。

我們?cè)诤芏辔淖种卸紩?huì)看到 “一葉知秋”這個(gè)詞,比如《淮南子·說(shuō)山訓(xùn)》:“見(jiàn)一葉落而知?dú)q之將暮”。這里是說(shuō)憑借細(xì)微之處可以知道深遠(yuǎn)的東西,看到一片葉子落下,便知道一年將要到尾聲。還有 宋·唐庚《文錄》引唐人詩(shī):“山僧不解數(shù)甲子,一葉落知天下秋。”是說(shuō)山里的和尚不知道怎么計(jì)算年月,從一片樹(shù)葉的凋落,就知道了秋天的到來(lái)。

這里一葉知秋也比喻通過(guò)個(gè)別的細(xì)微的跡象(事件),可以看到(分析)整個(gè)形勢(shì)的發(fā)展趨勢(shì)與結(jié)果。那么,這里葉落是事件,知秋是根據(jù)事件進(jìn)行分析得到的結(jié)果。那么我們追溯到這個(gè)詞語(yǔ)是怎么產(chǎn)生的時(shí)候,會(huì)自然的思考到底怎樣得出樹(shù)葉落下就要到秋天這個(gè)判斷的呢?我想那一定不是第一次看見(jiàn)落葉就能得到這個(gè)結(jié)論,而是有人(大腦)記錄了幾十次,上百次的現(xiàn)象(事件)觀察。因?yàn)槊看稳~落事件發(fā)生之后,都會(huì)規(guī)律的氣溫下降,進(jìn)入秋天的客觀事實(shí)作為依據(jù),進(jìn)而得到“一葉知秋”的分析結(jié)果。這里面善于觀察總結(jié)的人類(lèi)就是一臺(tái)流計(jì)算系統(tǒng),輸入是隨時(shí)間產(chǎn)生的各種事件,這些事件包括葉落是事件,降溫入秋也是一個(gè)事件,人類(lèi)的智慧通過(guò)分析找到了葉落這個(gè)事件和降溫入秋這個(gè)事件必然關(guān)系,這個(gè)關(guān)系就是分析的結(jié)果。就像我們每年進(jìn)入雙11大促,各個(gè)商家一定要補(bǔ)充庫(kù)存一樣,就像各個(gè)商家補(bǔ)充庫(kù)存,參加活動(dòng)時(shí)候,每個(gè)電商系統(tǒng)背后的工程師就要進(jìn)行系統(tǒng)的擴(kuò)容,或者對(duì)技術(shù)體系進(jìn)行換代升級(jí)一樣,但是這里就沒(méi)有一葉知秋那么簡(jiǎn)單了,比如要擴(kuò)容多少,性能提升多少能平穩(wěn)度過(guò)大促,這樣的數(shù)據(jù)可不是一個(gè)人腦能解決的,這樣就涉及到了計(jì)算機(jī)(電腦)了,當(dāng)然這也不是一臺(tái)計(jì)算機(jī)能解決的,而是一個(gè)計(jì)算機(jī)集群系統(tǒng),這個(gè)大腦是一個(gè)集群,而流計(jì)算就是這個(gè)集群的思維方式之一。

其實(shí),我們的生活中有很多這樣通過(guò)人類(lèi)的智慧,對(duì)現(xiàn)實(shí)生活中大量的自然現(xiàn)象數(shù)據(jù)進(jìn)行分析推理,進(jìn)而得到的很多規(guī)律性認(rèn)知,比如:在四季分明的北方生活的朋友,一定知道“大雁南飛冬將至”。再比如我們對(duì)日月星云的分析總結(jié)相關(guān)的規(guī)律各說(shuō)一個(gè),如下:

日:紅日雨,白日風(fēng),明星月朗大晴空。

月:月亮周?chē)袌A圈,刮風(fēng)就在明后天。

星:久雨見(jiàn)星光,明朝雨更狂

云:烏云接日頭,半夜雨不愁

風(fēng):久晴西風(fēng)雨,久雨西風(fēng)晴

物:蟋蟀上房叫,莊稼挨水泡。

其實(shí),我們生活在一個(gè)時(shí)間維度的現(xiàn)實(shí)世界,流計(jì)算只是將現(xiàn)實(shí)生活中的人類(lèi)對(duì)自然數(shù)據(jù)分析能力的高度抽象與規(guī)模升級(jí)。既然,我們今天探究流計(jì)算之源,我們就再多說(shuō)些和流計(jì)算相關(guān)的自然現(xiàn)象,供大家思考。

我們?nèi)祟?lèi)這臺(tái)大的流計(jì)算系統(tǒng),對(duì)自然界源源不斷輸入的客觀事件進(jìn)行分析沉淀,形成了很多客觀的規(guī)律數(shù)據(jù),比如今天是2021年12月21日,也就是冬至日,針對(duì)冬至日的到來(lái),人類(lèi)也對(duì)冬至日之后的氣溫變化作出了精準(zhǔn)的預(yù)測(cè):即,我們熟知的數(shù)九歌里面描述的,在冬至日之后的第一個(gè)9天和第二個(gè)9天,天氣變冷,外出必須帶上手套保暖。在第三個(gè)9天和第四個(gè)9天期間北方河流會(huì)河水成冰。一直到三個(gè)月左右就到了春耕的季節(jié)。這些其實(shí)都是根據(jù)歷史數(shù)據(jù)分析而得到的。

那么,像冬至這樣的節(jié)氣性總結(jié),人類(lèi)的智慧已經(jīng)總結(jié)出了24個(gè)節(jié)氣,這些都是成百上千年的迭代分析,才形成的分析結(jié)果。這些雖然只是人類(lèi)無(wú)限智慧的冰山一角,但這些事實(shí)已經(jīng)證明了人類(lèi)對(duì)自然現(xiàn)象強(qiáng)大的計(jì)算能力。

我們由一葉知秋,到冬至數(shù)九歌,到人類(lèi)總結(jié)的24節(jié)氣,我們不難想象出人類(lèi)本身就是一臺(tái)龐大的流計(jì)算系統(tǒng),在隨著時(shí)間推移的歷史長(zhǎng)河中,萬(wàn)物變化的各類(lèi)事件,經(jīng)過(guò)人類(lèi)大腦不斷的進(jìn)行著學(xué)習(xí)計(jì)算,進(jìn)而人類(lèi)具備了對(duì)萬(wàn)事萬(wàn)物未來(lái)發(fā)展的預(yù)測(cè)和判斷的能力。而這個(gè)過(guò)程中萬(wàn)事萬(wàn)物的變化事件就是輸入,人類(lèi)對(duì)事件的認(rèn)知和對(duì)規(guī)律總結(jié)的利用來(lái)形成新的規(guī)律的過(guò)程就是計(jì)算分析。借助歷史沉淀的經(jīng)驗(yàn)對(duì)新事件進(jìn)行加工本身就是增量計(jì)算的體現(xiàn),在這過(guò)程中,時(shí)間就是潛在存在的必要因素,而這些要素正是流計(jì)算產(chǎn)品所必備的核心要素。所以任何技術(shù)產(chǎn)品的原型都源于自然,流計(jì)算產(chǎn)品的源頭也是讓大家敬畏的宇宙自然。如果我們的技術(shù)體系完全能夠融合,完全的模擬和虛擬自然宇宙,我想元宇宙也就真的成為完整的現(xiàn)實(shí)虛擬了。

但這里我們也不難發(fā)現(xiàn),人類(lèi)這臺(tái)流計(jì)算系統(tǒng)最大的不足就是計(jì)算的周期太長(zhǎng)了, 大數(shù)據(jù)時(shí)代我們需要流計(jì)算產(chǎn)品有更低的計(jì)算周期,更低的計(jì)算延遲,進(jìn)而最大程度的讓數(shù)據(jù)產(chǎn)生價(jià)值,為人類(lèi)決策進(jìn)行有力支撐。

02 價(jià)值空間

以終為始 – 目標(biāo)(創(chuàng)造價(jià)值)

今天和大家分享的整體思維邏輯是“以終為始”,我們先知道我們最終要達(dá)成的目標(biāo),再反向規(guī)劃流計(jì)算產(chǎn)品所應(yīng)該具有的未來(lái)。第一個(gè)點(diǎn),我們思考流計(jì)算產(chǎn)品的最終目標(biāo)是什么?每個(gè)人思考的維度不同,視角不同,回答流計(jì)算產(chǎn)品的目標(biāo)就可能有不同的答案,但不論從哪個(gè)視角給出的流計(jì)算產(chǎn)品目標(biāo),最終在持續(xù)挖掘,逐本溯源之后都會(huì)回到一個(gè)最簡(jiǎn)單,甚至大家認(rèn)為是廢話的答案:“那就是流計(jì)算產(chǎn)品最終的目的是讓Data產(chǎn)生價(jià)值“。是讓Data經(jīng)過(guò)流計(jì)算產(chǎn)品的處理最終讓Data產(chǎn)生預(yù)期的價(jià)值。這個(gè)目標(biāo)看起來(lái)簡(jiǎn)單,后面逐層的為大家分析如何才能達(dá)成這么一個(gè)簡(jiǎn)單的目標(biāo)時(shí)候,大家就會(huì)發(fā)現(xiàn),簡(jiǎn)單的目標(biāo)蘊(yùn)含著巨大的挑戰(zhàn)。包括技術(shù)層面,產(chǎn)品層面,業(yè)務(wù)領(lǐng)域等各個(gè)維度都充滿著不同和挑戰(zhàn)。我們繼續(xù)往下聊...

以終為始 – 空間(1000億+市場(chǎng))

這里我們說(shuō)流計(jì)算產(chǎn)品有千億的價(jià)值空間,當(dāng)然,這個(gè)空間不是我個(gè)人空想出來(lái)的,我們有權(quán)威機(jī)構(gòu)統(tǒng)計(jì)數(shù)據(jù)。

這里我們會(huì)發(fā)現(xiàn)來(lái)自權(quán)威的市場(chǎng)分析報(bào)告,流分析從2020年有125億的市場(chǎng)空間,到2025年有386億的潛在市場(chǎng),我們大概換成人民幣是從2020年800億到2025年2470億的增長(zhǎng),從這些數(shù)字我們看到每年增長(zhǎng)率高達(dá)每年25.2%。這是一個(gè)流計(jì)算產(chǎn)品提供商流口水的數(shù)字,這是讓流計(jì)算產(chǎn)品工程師對(duì)未來(lái)充滿希望的數(shù)字。流計(jì)算產(chǎn)品有這么大的空間,那么在整個(gè)公有云的市場(chǎng)空間是怎樣的呢?

根據(jù)Gartner的最新預(yù)測(cè),全球公共云服務(wù)的最終用戶支出預(yù)計(jì)將在2021增長(zhǎng)23.1%至3323億美元,遠(yuǎn)高于2020年的2700億美元。相對(duì)公有云市場(chǎng)空間和全球流計(jì)算市場(chǎng)空間來(lái)看,這些數(shù)字在彰顯云計(jì)算市場(chǎng)空間之余,也證明著流計(jì)算產(chǎn)品在整個(gè)云計(jì)算產(chǎn)品生態(tài)體系里面的重要地位,流計(jì)算市場(chǎng)空間是公有云市場(chǎng)空間的近20%。這是我們?cè)诹饔?jì)算產(chǎn)品持續(xù)精耕細(xì)作的巨大使命動(dòng)力。那么,我們流計(jì)算產(chǎn)品應(yīng)該長(zhǎng)成什么樣子呢?

03 核心場(chǎng)景

以終為始 – 場(chǎng)景(Integration + Analytics)

流計(jì)算產(chǎn)品長(zhǎng)成什么樣子,完全取決于流計(jì)算產(chǎn)品所要解決的業(yè)務(wù)場(chǎng)景,不論流計(jì)算產(chǎn)品可以解決怎樣的業(yè)務(wù)場(chǎng)景,我們都知道巧女難做無(wú)米之炊,那么流計(jì)算產(chǎn)品發(fā)揮自身價(jià)值的前提是什么呢?最簡(jiǎn)單的表達(dá)就是流計(jì)算產(chǎn)品首先要有Data作為輸入,當(dāng)然按照這樣的思考流計(jì)算最終輸出也是一系列的Data。那么輸入是Data,輸出也是Data的流計(jì)算產(chǎn)品,可以讓輸出Data和輸入Data有怎樣的不同,就是流計(jì)算產(chǎn)品所具備的產(chǎn)品能力。我們把這個(gè)能力宏觀展開(kāi)一下看,到底流計(jì)算產(chǎn)品應(yīng)該具備支持怎樣業(yè)務(wù)場(chǎng)景的解決能力。

這里被大家熟知的有兩個(gè)比較宏觀的能力需求就是:“數(shù)據(jù)集成”和“數(shù)據(jù)分析”。我們將這兩種能力稍微展開(kāi)一點(diǎn)來(lái)對(duì)每種能力進(jìn)行描述。

第一個(gè)就是數(shù)據(jù)集成場(chǎng)景能力,該類(lèi)場(chǎng)景側(cè)重于解決數(shù)據(jù)到達(dá)時(shí)不需要立即進(jìn)行數(shù)據(jù)分析的業(yè)務(wù)情況,但這些場(chǎng)景需要在數(shù)據(jù)到達(dá)時(shí)立即進(jìn)行實(shí)時(shí)的數(shù)據(jù)接收,并有一定的數(shù)據(jù)過(guò)濾和數(shù)據(jù)變化需求。比如ETL(Extraction, Transformation, Loading ),CDC(Change data capture)等。最終數(shù)據(jù)會(huì)存儲(chǔ)到數(shù)據(jù)湖或者數(shù)據(jù)倉(cāng)/庫(kù)等存儲(chǔ)系統(tǒng),供以后對(duì)靜態(tài)數(shù)據(jù)進(jìn)行分析。也就是說(shuō),數(shù)據(jù)集成能力是要求流計(jì)算產(chǎn)品作為大數(shù)據(jù)產(chǎn)品生態(tài)體系的數(shù)據(jù)連接器,具備外部系統(tǒng)連接和數(shù)據(jù)輸出到外部系統(tǒng)的能力即可,這里強(qiáng)調(diào)需要一個(gè)實(shí)時(shí)性的需求。

那么第二個(gè)“數(shù)據(jù)分析”場(chǎng)景需要的能力具體一點(diǎn)如何描述呢?數(shù)據(jù)分析類(lèi)場(chǎng)景,核心是對(duì)需要在數(shù)據(jù)到達(dá)時(shí)候,立即對(duì)數(shù)據(jù)進(jìn)行連續(xù)的動(dòng)態(tài)分析,并需要精準(zhǔn)的分析結(jié)果供下游業(yè)務(wù)系統(tǒng)使用。比如對(duì)電商數(shù)據(jù)、傳感器數(shù)據(jù)和服務(wù)器日志數(shù)據(jù)等進(jìn)行實(shí)時(shí)性要求很強(qiáng)的聚合分析、數(shù)據(jù)預(yù)測(cè)、進(jìn)而達(dá)成監(jiān)控預(yù)警和智能決策等業(yè)務(wù)目的。數(shù)據(jù)分析類(lèi)場(chǎng)景對(duì)流計(jì)算產(chǎn)品提出更高的能力要求。也就是說(shuō),這個(gè)場(chǎng)景能力需求,不但要求流計(jì)算產(chǎn)品有數(shù)據(jù)連接能力,還需要有對(duì)數(shù)據(jù)進(jìn)行復(fù)雜的聚合,預(yù)測(cè)甚至是決策等更高要求的能力滿足,并且特別要強(qiáng)調(diào)這些分析的能力是要求實(shí)時(shí)的,對(duì)處理的時(shí)效有很高的要求,當(dāng)然這也是流計(jì)算產(chǎn)品當(dāng)仁不讓的職責(zé)所在。

雖然我們對(duì)這兩點(diǎn)能力進(jìn)行了描述,但是對(duì)于在流計(jì)算產(chǎn)品投入時(shí)間較少的朋友來(lái)說(shuō),還是不清楚流計(jì)算產(chǎn)品到底需要進(jìn)行有怎樣的具體功能開(kāi)發(fā),那么我們?cè)訇橐稽c(diǎn)看看。

第一部分我看數(shù)據(jù)集成部分,顧名思義數(shù)據(jù)集成是對(duì)外部系統(tǒng)的集成能力,那么流計(jì)算產(chǎn)品要集成哪些類(lèi)型的外部系統(tǒng)呢?

我們把外部系統(tǒng)的統(tǒng)稱(chēng)為流數(shù)據(jù)的制造者,這些制造者包括物,包括人,包括系統(tǒng),也就是 Things/Persons/Platforms。這些流數(shù)據(jù)的制造者產(chǎn)生的數(shù)據(jù)具備很明顯的特點(diǎn),就是種類(lèi)多,體量大,實(shí)效性比較強(qiáng)。那么面對(duì)這樣的數(shù)據(jù)特點(diǎn),流計(jì)算產(chǎn)品支持?jǐn)?shù)據(jù)集成場(chǎng)景需要怎樣的能力呢?

首先在具備連接能力之外還需要對(duì)每種連接有豐富的數(shù)據(jù)format能力,其次對(duì)于無(wú)用的數(shù)據(jù)具備簡(jiǎn)單實(shí)用的數(shù)據(jù)過(guò)濾能力,特別強(qiáng)調(diào)一點(diǎn),出于成本和效率的思考,流計(jì)算產(chǎn)品針對(duì)不同外部鏈接過(guò)濾能力的下沉是非常重要的實(shí)現(xiàn)要點(diǎn)。除此之外還需要具備的簡(jiǎn)單轉(zhuǎn)化能力,比如各種scalar的轉(zhuǎn)換能力等待。在這個(gè)場(chǎng)景中,數(shù)據(jù)的轉(zhuǎn)換能力要不高,但對(duì)流計(jì)算產(chǎn)品的吞吐能力和實(shí)時(shí)性有很高的要求。這個(gè)要求也充分體現(xiàn)了流計(jì)算產(chǎn)品,流本身的自然語(yǔ)義。

當(dāng)然,數(shù)據(jù)處理之后最終還是要流入其他下游系統(tǒng),數(shù)據(jù)流出就需要對(duì)數(shù)據(jù)質(zhì)量(對(duì)于下游業(yè)務(wù)系統(tǒng)來(lái)說(shuō))有很高的要求,這是數(shù)據(jù)價(jià)值的第一層面體現(xiàn)。下游系統(tǒng)我們歸類(lèi)稱(chēng)之為是 流數(shù)據(jù)的消費(fèi)者。在數(shù)據(jù)集成場(chǎng)景中,流數(shù)據(jù)的消費(fèi)者往往具備數(shù)據(jù)分析的能力。如 數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)湖等。

那么如果流計(jì)算產(chǎn)品不但承擔(dān)數(shù)據(jù)集成職責(zé)還要具備數(shù)據(jù)分析能力的話,我們應(yīng)該在流計(jì)算產(chǎn)品上開(kāi)發(fā)怎樣的能力呢?

最簡(jiǎn)單的數(shù)據(jù)分析,可以進(jìn)行數(shù)據(jù)的reduce操作,我們也叫做聚合操作,當(dāng)然聚合操作面對(duì)無(wú)限的流數(shù)據(jù)場(chǎng)景,還會(huì)必然的有各種數(shù)據(jù)分組的能力的要求,也就是數(shù)據(jù)窗口的抽象能力,面對(duì)各種復(fù)雜的系統(tǒng)數(shù)據(jù),數(shù)據(jù)之間的各種Join能力也是必不可少的,這里面由于有聚合函數(shù)的高度抽象和用戶自定義能力開(kāi)放 ,在框架清晰、能力開(kāi)放的流計(jì)算產(chǎn)品中,流計(jì)算產(chǎn)品可以讓用戶有無(wú)限的創(chuàng)作空間。

也正是因?yàn)榫邆鋽?shù)據(jù)分析能力的流計(jì)算產(chǎn)品可以幫助用戶做更多的數(shù)據(jù)處理,進(jìn)而下游的業(yè)務(wù)系統(tǒng)也會(huì)相對(duì)于只具備數(shù)據(jù)集成能力的流計(jì)算產(chǎn)品有很大的不同,下游系統(tǒng)距離終端用戶會(huì)越來(lái)越近,比如可以直接對(duì)BI系統(tǒng),直接對(duì)接監(jiān)控報(bào)警系統(tǒng)。同時(shí),具備數(shù)據(jù)分析能力的流計(jì)算產(chǎn)品除了具備實(shí)時(shí)性的挑戰(zhàn)之外,還需要有數(shù)據(jù)分析結(jié)果高精準(zhǔn)的要求。

實(shí)時(shí)性和數(shù)據(jù)分析精準(zhǔn)性分開(kāi)來(lái)看待時(shí)候,相對(duì)容易達(dá)成,但是如果要求實(shí)時(shí)性和精準(zhǔn)性同時(shí)滿足的時(shí)候,對(duì)流計(jì)算產(chǎn)品是一個(gè)巨大的挑戰(zhàn),后面我會(huì)和大家一起分析業(yè)界的現(xiàn)有解決手段,以及現(xiàn)有解決方案的不足,甚至和大家一起YY未來(lái)的可能的解決方向。

這里我們還要有一點(diǎn)注意那就是閉環(huán)問(wèn)題,整個(gè)大數(shù)據(jù)產(chǎn)品生態(tài)體系,不僅僅只有流計(jì)算產(chǎn)品這是大家共識(shí)的,但流計(jì)算產(chǎn)品在整個(gè)大數(shù)據(jù)產(chǎn)品生態(tài)體系里面,讓數(shù)據(jù)產(chǎn)生業(yè)務(wù)價(jià)值的過(guò)程中,也并不是一條業(yè)務(wù)數(shù)據(jù)處理鏈路中只使用一次流計(jì)算產(chǎn)品,更多的可能是流計(jì)算產(chǎn)品流出的數(shù)據(jù)經(jīng)過(guò)其他領(lǐng)域性系統(tǒng)處理之后還會(huì)將數(shù)據(jù)再次流入流計(jì)算產(chǎn)品,這一客觀事實(shí)對(duì)流計(jì)算產(chǎn)品的數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)和流計(jì)算各種語(yǔ)義設(shè)計(jì)提出了顯而易見(jiàn)的高要求,這里說(shuō)一個(gè)例子,比如:Apache Flink中RowData的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)和為了在流計(jì)算場(chǎng)景下解決數(shù)據(jù)計(jì)算精準(zhǔn)性問(wèn)題撤回機(jī)制的設(shè)計(jì)等,都是需要考慮流計(jì)算流出的數(shù)據(jù)是有可能反復(fù)流入到流計(jì)算產(chǎn)品的。那么流計(jì)算產(chǎn)品面對(duì)這樣的業(yè)務(wù)場(chǎng)景和需要的功能抽象中,有哪些具體的技術(shù)難點(diǎn)挑戰(zhàn)呢?下面我們挑1-2個(gè)重點(diǎn)分析一下。

04 技術(shù)挑戰(zhàn)

以終為始 – 技術(shù)(Low-Latency)

對(duì)于流計(jì)算產(chǎn)品來(lái)說(shuō),不論是只具備數(shù)據(jù)集成能力,還是一并具備數(shù)據(jù)分析能力,實(shí)時(shí)性都是流計(jì)算產(chǎn)品至關(guān)重要的技術(shù)挑戰(zhàn)。那么怎樣的計(jì)算延時(shí)才算是具備實(shí)時(shí)性呢?是分鐘?秒?毫秒還是微妙?那么不論我們?cè)诩夹g(shù)上將實(shí)時(shí)性達(dá)到怎樣的級(jí)別,我們都要考慮哪些設(shè)計(jì)因素決定了流計(jì)算產(chǎn)品的計(jì)算實(shí)時(shí)性呢?

宏觀來(lái)看,流計(jì)算產(chǎn)品實(shí)時(shí)性有兩個(gè)非常重要的實(shí)時(shí)性設(shè)計(jì)因素,一個(gè)是待計(jì)算的數(shù)據(jù),一個(gè)是計(jì)算的時(shí)鐘,我們前面說(shuō)到流計(jì)算產(chǎn)品就是可以處理流事件的產(chǎn)品,流事件的核心是事件和時(shí)間,所以實(shí)時(shí)性設(shè)計(jì)和時(shí)間密不可分。那么這兩個(gè)核心因素會(huì)對(duì)計(jì)算實(shí)時(shí)性有怎樣的設(shè)計(jì)影響呢?

由這兩個(gè)因素激發(fā)了兩種不同的設(shè)計(jì)思維,一種是我們可以數(shù)據(jù)驅(qū)動(dòng)的方式設(shè)計(jì)流計(jì)算產(chǎn)品的實(shí)時(shí)性機(jī)制,也就是我可以單位數(shù)據(jù)觸發(fā)計(jì)算一次,當(dāng)然單位數(shù)據(jù)可以是1條數(shù)據(jù)。另一種思考方向是我可以是單位時(shí)間觸發(fā)一次計(jì)算,比如每秒觸發(fā)一次,這種設(shè)計(jì)同樣在理論上也可以達(dá)到足夠的實(shí)時(shí)性。至于說(shuō)哪個(gè)思維更好?我們需要結(jié)合工程實(shí)踐綜合來(lái)看。

對(duì)于第一種思維的設(shè)計(jì)模式我們簡(jiǎn)單描述一下:“流更多的形容數(shù)據(jù)流,以數(shù)據(jù)流的自然狀態(tài)設(shè)計(jì)觸發(fā)計(jì)算的模型,我們稱(chēng)之為流計(jì)算,單位數(shù)據(jù)為1條數(shù)據(jù)的時(shí)候,計(jì)算的觸發(fā)是最及時(shí)的,計(jì)算結(jié)果的延時(shí)也是理論最低的。當(dāng)數(shù)據(jù)單位由1條延展到多條時(shí)候,多條可以認(rèn)為是一個(gè)批次,進(jìn)而得到批是流的特例認(rèn)知。”

對(duì)于第二種思維的設(shè)計(jì)模式我們也文字描述一下:“單位時(shí)間所蓄積的數(shù)據(jù),我們稱(chēng)之為一批數(shù)據(jù),以一批數(shù)據(jù)作為計(jì)算單元觸發(fā)計(jì)算的模型,我們稱(chēng)之為批計(jì)算,極端情況下1毫秒積攢一批數(shù)據(jù)進(jìn)行觸發(fā)計(jì)算,也是該模型下是最及時(shí)的,計(jì)算結(jié)果的延時(shí)也是理論最低的。進(jìn)而得到流是批的特例認(rèn)知?!?/p>

很幸運(yùn)這兩種思考模式都有對(duì)應(yīng)的開(kāi)源工程實(shí)現(xiàn),青睞 “批是流的特例“ 的Apache Flink,和認(rèn)為 “流是批的特例” 的Apache Spark,兩個(gè)計(jì)算框架都是目前最優(yōu)秀的開(kāi)源實(shí)現(xiàn),這兩種實(shí)現(xiàn),在一定的場(chǎng)景下也都實(shí)現(xiàn)了低延時(shí)的特定技術(shù)指標(biāo)。

也就是說(shuō),流計(jì)算模型和批計(jì)算模型都能在一定程度上達(dá)到了Low-Latency,那么理論指導(dǎo)工程實(shí)踐,工程實(shí)踐探知業(yè)務(wù)疾苦,有的時(shí)候我們不走極端,因?yàn)榇讼碎L(zhǎng),物極必反。后面我們會(huì)看到為啥在流計(jì)算產(chǎn)品的設(shè)計(jì)中也會(huì)有“此消彼長(zhǎng)”的影子。

以終為始 – 技術(shù)(High-Accuracy)

除了實(shí)時(shí)性的關(guān)鍵技術(shù)指標(biāo)要求,流計(jì)算產(chǎn)品更需要滿足計(jì)算準(zhǔn)確性的現(xiàn)實(shí)要求,業(yè)務(wù)數(shù)據(jù)的分析計(jì)算就是需要有一個(gè)準(zhǔn)確的計(jì)算結(jié)果供下游業(yè)務(wù)使用,比如金融領(lǐng)域,數(shù)字準(zhǔn)確性至關(guān)重要,還有甚至是計(jì)算的結(jié)果數(shù)據(jù)可能作為企業(yè)重要的決策依據(jù),種種應(yīng)用場(chǎng)景對(duì)數(shù)據(jù)分析的精準(zhǔn)性要求甚高。面對(duì)這樣的業(yè)務(wù)場(chǎng)景,流計(jì)算產(chǎn)品如何才能保證計(jì)算的準(zhǔn)確性呢?

我們還是要從關(guān)鍵因素切入思考,第一個(gè)很現(xiàn)實(shí)的情況是現(xiàn)實(shí)生活生產(chǎn)中的流數(shù)據(jù)由于種種原因會(huì)產(chǎn)生延時(shí),數(shù)據(jù)延時(shí)情況也造成計(jì)算結(jié)果需要進(jìn)行更新,不但這種數(shù)據(jù)延時(shí)可以造成計(jì)算結(jié)果需要更新,某些特定的業(yè)務(wù)邏輯也會(huì)造成數(shù)據(jù)計(jì)算結(jié)果需要產(chǎn)生更新,簡(jiǎn)單列舉幾個(gè)場(chǎng)景如下:

比如,物聯(lián)網(wǎng)領(lǐng)域很多弱網(wǎng)環(huán)境導(dǎo)致不同設(shè)備上送的數(shù)據(jù)的順序和數(shù)據(jù)在設(shè)備端產(chǎn)生的時(shí)間順序是不一致的,現(xiàn)實(shí)生活中也有,比如實(shí)時(shí)統(tǒng)計(jì)航班的售賣(mài)情況,但是有客戶今天購(gòu)買(mǎi)了機(jī)票,明天有取消了機(jī)票,那計(jì)算結(jié)果是不是也涉及到了更新?很多現(xiàn)實(shí)業(yè)務(wù)都對(duì)流計(jì)算產(chǎn)品提出了要支持?jǐn)?shù)據(jù)延時(shí)和數(shù)據(jù)更新的能力。

當(dāng)然這些實(shí)際存在的問(wèn)題都需要以某種技術(shù)手段來(lái)解決,當(dāng)然我們進(jìn)行技術(shù)抽象的目標(biāo)也是解決業(yè)務(wù)場(chǎng)景的實(shí)際訴求,比如監(jiān)控預(yù)警對(duì)實(shí)時(shí)性要求很高,流計(jì)算在處理源源不斷的流事件時(shí)候,不僅希望計(jì)算結(jié)果能夠快速產(chǎn)生,同時(shí)也期望雖然數(shù)據(jù)延時(shí)、數(shù)據(jù)更新都是一種客觀存在,但業(yè)務(wù)仍然期望延時(shí)和更新對(duì)后續(xù)計(jì)算結(jié)果的影響面縮小到最小,那么流計(jì)算產(chǎn)品如何最大程度達(dá)成這一目標(biāo)呢?

首先我們前面介紹了流計(jì)算產(chǎn)品在支撐數(shù)據(jù)分析場(chǎng)景時(shí)候所具備的一些能力,比如 聚合/窗口等等能力。

其中窗口劃分解決了數(shù)據(jù)分組問(wèn)題,在滿足業(yè)務(wù)本身需要數(shù)據(jù)分組計(jì)算的同時(shí),也能讓某條延時(shí)數(shù)據(jù)只影響其對(duì)應(yīng)的窗口計(jì)算結(jié)果,同時(shí)以Apache Flink 為例,對(duì)于無(wú)窗口聚合計(jì)算是每條數(shù)據(jù)都輸出計(jì)算結(jié)果到下游,達(dá)到了低延時(shí)的業(yè)務(wù)要求,同時(shí)也依托于retraction機(jī)制解決了數(shù)據(jù)更新帶來(lái)的計(jì)算精準(zhǔn)性問(wèn)題(但這個(gè)case如果出現(xiàn)failover的框架級(jí)別錯(cuò)誤時(shí)候,依然無(wú)法解決計(jì)算精準(zhǔn)性問(wèn)題)。也就是說(shuō)這些技術(shù)點(diǎn)只是在某一個(gè)計(jì)算分析能力下,某個(gè)特定的局部邊界線下作出的具體工程實(shí)現(xiàn),解決了局部問(wèn)題,那么在流計(jì)算產(chǎn)品中,有沒(méi)有更高層面的語(yǔ)義抽象,能夠覆蓋流計(jì)算產(chǎn)品所有場(chǎng)景的支持,也就是在流計(jì)算領(lǐng)域有沒(méi)有關(guān)于計(jì)算精準(zhǔn)性的語(yǔ)義抽象呢?

我們首先要說(shuō)明一下需要達(dá)成的共識(shí),那就是這里我們討論的數(shù)據(jù)計(jì)算的準(zhǔn)確性問(wèn)題,不是由于業(yè)務(wù)邏輯bug導(dǎo)致的計(jì)算結(jié)果不準(zhǔn)確,而是流計(jì)算框架層面是否能保證預(yù)期參與計(jì)算的數(shù)據(jù)都能在任何異常情況下也按預(yù)期的要求參與計(jì)算。在這個(gè)共識(shí)下,流計(jì)算差評(píng)從數(shù)據(jù)參與計(jì)算的次數(shù)不同進(jìn)行了不同計(jì)算準(zhǔn)確性的語(yǔ)義抽象,那就是:Exactly-once, At-least-once, At-most-once三種核心的語(yǔ)義抽象。

這里我們也會(huì)發(fā)現(xiàn),其實(shí)產(chǎn)品技術(shù)解決業(yè)務(wù)疾苦,業(yè)務(wù)疾苦會(huì)驅(qū)動(dòng)產(chǎn)品技術(shù)發(fā)展,流計(jì)算的理論和概念的誕生都是為解決業(yè)務(wù)問(wèn)題而進(jìn)行抽象定義的。接下來(lái)我們一起看看這個(gè)三個(gè)不同的語(yǔ)義抽象的含義。

首先我們看一下At-most-once,至多一次的計(jì)算語(yǔ)義是參與計(jì)算的數(shù)據(jù),最多只參與一次計(jì)算,在系統(tǒng)異常情況會(huì)造成數(shù)據(jù)丟失。比如,計(jì)算SUM值,這種語(yǔ)義模式下計(jì)算結(jié)果 <= 真實(shí)值 (丟數(shù)據(jù))

At-least-once,至少一次的計(jì)算語(yǔ)義是參與計(jì)算的數(shù)據(jù),至少參與一次計(jì)算,在系統(tǒng)異常情況會(huì)造成數(shù)據(jù)多次參與計(jì)算。比如,計(jì)算SUM值,這種語(yǔ)義模式下計(jì)算結(jié)果 >= 真實(shí)值(重復(fù)計(jì)算)

Exactly-once,精準(zhǔn)一次的計(jì)算語(yǔ)義是參與計(jì)算的數(shù)據(jù),參與且只參與一次計(jì)算,在系統(tǒng)異常情況計(jì)算框架保障數(shù)據(jù)不丟失,不重復(fù),比如,計(jì)算SUM值,這種語(yǔ)義模式下計(jì)算結(jié)果 == 真實(shí)值(準(zhǔn)確性完美)。

從定義抽象上看,似乎Exactly-once是最好的業(yè)務(wù)需要,那么為什么不能直接就全部保持Exactly-once呢,也就是為啥還需要 At-least-once和At-most-once的語(yǔ)義抽象呢?這里就是我們之前提到的此消彼長(zhǎng)的原因,完美的理論設(shè)計(jì)往往會(huì)對(duì)工程實(shí)踐帶來(lái)巨大的技術(shù)挑戰(zhàn),當(dāng)然挑戰(zhàn)因素往往不在一個(gè)單一的產(chǎn)品層面就可以得到完美解決,可能涉及到網(wǎng)絡(luò),存儲(chǔ),計(jì)算等等各個(gè)層面的綜合演進(jìn)才能完成。對(duì)于我們目前討論的流計(jì)算數(shù)據(jù)分析精準(zhǔn)性語(yǔ)義抽象的工程實(shí)踐就涉及到了低延時(shí)和高精準(zhǔn)同時(shí)具備的工程實(shí)現(xiàn)的相互影響。以Apache flink為例,這里面涉及到的技術(shù)點(diǎn)有很多,包括Checkpoint機(jī)制,包括Statebackend技術(shù),包括分布式存儲(chǔ)技術(shù),扣到細(xì)節(jié)也會(huì)涉及到Flink內(nèi)部的網(wǎng)絡(luò)層面設(shè)計(jì)等等細(xì)分的技術(shù)點(diǎn)。這些技術(shù)點(diǎn)在Apache Flink知其然,知其所以然的課程里面會(huì)分章節(jié)進(jìn)行細(xì)致介紹,大家可以看完今天的宏觀介紹在去各個(gè)章節(jié)進(jìn)行細(xì)的知識(shí)點(diǎn)的了解,然后再回過(guò)頭來(lái)考慮這些知識(shí)點(diǎn)之間的聯(lián)系。那么我們今天還是從宏觀視角繼續(xù)看流計(jì)算領(lǐng)域如何在更高層面解決 低延時(shí)和高計(jì)算精準(zhǔn)性問(wèn)題。

以終為始 – 技術(shù)(流批一體)

低延時(shí)要求流計(jì)算框架盡可能早的輸出計(jì)算結(jié)果,但是由于存在數(shù)據(jù)延時(shí)和現(xiàn)實(shí)業(yè)務(wù)數(shù)據(jù)更新的客戶情況,就會(huì)導(dǎo)致你前一秒計(jì)算的結(jié)果,因?yàn)橄乱幻雭?lái)了一個(gè)對(duì)上一秒已經(jīng)參與計(jì)算的那條數(shù)據(jù)的更新,進(jìn)而導(dǎo)致在下一秒時(shí)候上一秒的計(jì)算結(jié)果就是無(wú)效的了,那么流計(jì)算產(chǎn)品低延時(shí)需求導(dǎo)致流計(jì)算產(chǎn)品不可能無(wú)限制的等待延時(shí)數(shù)據(jù)的到來(lái),這就一定會(huì)造成數(shù)據(jù)計(jì)算結(jié)果不精準(zhǔn)的問(wèn)題。如果流計(jì)算產(chǎn)品想讓自己的計(jì)算結(jié)果更準(zhǔn)確,那就需要忍受對(duì)延時(shí)數(shù)據(jù)進(jìn)行更長(zhǎng)時(shí)間的等待,那就意味著流計(jì)算產(chǎn)品的低延時(shí)無(wú)法達(dá)成,所以在流計(jì)算產(chǎn)品中魚(yú)和熊掌兼得是不那么容易的。

流計(jì)算產(chǎn)品無(wú)法達(dá)成,這并不代表從業(yè)務(wù)層面無(wú)法達(dá)成既要低延時(shí)又要計(jì)算結(jié)果高精準(zhǔn)的目標(biāo)。那就是我們可以跳出流計(jì)算單品,以大數(shù)據(jù)產(chǎn)品生態(tài)體系的視角再看看業(yè)務(wù)層面要求低延時(shí)+高精準(zhǔn)的目標(biāo)如何達(dá)成。

數(shù)據(jù)的計(jì)算精準(zhǔn)性問(wèn)題是由于數(shù)據(jù)變化更新導(dǎo)致的,那么如果我們參與計(jì)算的數(shù)據(jù)都是不變化的,那么就意味著我們計(jì)算的結(jié)果一定是準(zhǔn)確的了,所以從業(yè)務(wù)層面我們可以利用批計(jì)算的方式修正流計(jì)算的結(jié)果。

也就是說(shuō),批計(jì)算的數(shù)據(jù)特點(diǎn)首先是沒(méi)有數(shù)據(jù)延時(shí),也沒(méi)有數(shù)據(jù)更新,因?yàn)檫@里的批計(jì)算有一定的業(yè)務(wù)含義,這里我們說(shuō)批計(jì)算一般是業(yè)務(wù)層面斷定參與計(jì)算的數(shù)據(jù)是不變化的,比如我們熟知的T+1的計(jì)算方式。今天只計(jì)算昨天的數(shù)據(jù),從時(shí)間維度看,打上昨天標(biāo)簽的數(shù)據(jù)都是歷史數(shù)據(jù),不會(huì)改變了。那么分析到這里我們是否可以發(fā)現(xiàn)流批計(jì)算中有一個(gè)本質(zhì)的數(shù)據(jù)特征?

從數(shù)據(jù)特征角度看流批計(jì)算的本質(zhì)區(qū)別,流計(jì)算所處理的數(shù)據(jù)是持續(xù)變化的,變化是一種常態(tài) - Dynamic Data,批計(jì)算所處理的數(shù)據(jù)保持靜止的,靜止是一種常態(tài) - Static Data。

這里的批計(jì)算和流計(jì)算與前面我們講的流計(jì)算模型和批計(jì)算模型并不是同一個(gè)維度的概念,這里的流計(jì)算更多的是說(shuō)業(yè)務(wù)維度,使用流計(jì)算產(chǎn)品的實(shí)時(shí)計(jì)算模式,以Apache Flink來(lái)說(shuō)就是PIPELINE模式,這里的批計(jì)算更強(qiáng)調(diào)參與計(jì)算的數(shù)據(jù)是歷史不變化的數(shù)據(jù),我們可以認(rèn)為是數(shù)據(jù)不變的情況下批計(jì)算模式是對(duì)流計(jì)算模式的性能和數(shù)據(jù)精準(zhǔn)性的提升,以Apache Flink為例來(lái)說(shuō)批計(jì)算就是就是BLOCK模式。這里分享一個(gè)觀點(diǎn),在我看來(lái):“流計(jì)算模式是批計(jì)算模式的低延時(shí)優(yōu)化,批計(jì)算模式是流計(jì)算模式的高性能和高精準(zhǔn)的優(yōu)化”。有了這個(gè)觀點(diǎn)之后,那么企業(yè)可以根據(jù)自己業(yè)務(wù)的實(shí)際特點(diǎn)判斷是低延時(shí)對(duì)自己業(yè)務(wù)價(jià)值影響更大,還是數(shù)據(jù)計(jì)算精準(zhǔn)性對(duì)其業(yè)務(wù)價(jià)值影響更大,還是兩者都有很大的影響,進(jìn)而判斷自己的業(yè)務(wù)是選擇流計(jì)算模式還是選擇批計(jì)算模式,甚至以增加計(jì)算成本搏取業(yè)務(wù)價(jià)值空間,選擇批計(jì)算模式和流計(jì)算模式相結(jié)合的計(jì)算方案。

以終為始 – 流批一體(Lambda 架構(gòu))

那么,目前業(yè)界有哪些流計(jì)算和批計(jì)算相結(jié)合的架構(gòu)可以滿足低延時(shí)和高精準(zhǔn)的既要又要的需求呢?

數(shù)據(jù)都是伴隨著時(shí)間產(chǎn)生的,并且拋棄業(yè)務(wù)賦予的其他屬性,只從時(shí)間維度去看,每一條數(shù)據(jù)都是唯一的,也就是在時(shí)間線上都是一條條append only的數(shù)據(jù)。所以對(duì)于我們認(rèn)為歷史數(shù)據(jù)是靜態(tài)數(shù)據(jù),當(dāng)下數(shù)據(jù)是動(dòng)態(tài)數(shù)據(jù)也是因?yàn)橘x予了數(shù)據(jù)業(yè)務(wù)特征之后才成立的說(shuō)法。比如除了時(shí)間屬性我們?cè)偬砑佑唵翁?hào),那么就因?yàn)榫邆淞藰I(yè)務(wù)屬性,才導(dǎo)致不同時(shí)間點(diǎn),相同訂單號(hào)的數(shù)據(jù)就具備了關(guān)聯(lián)性,也就是有數(shù)據(jù)更新的可能,那么在業(yè)務(wù)維度去劃分一定的有效窗口之后,比如1天的訂單變化都是影響業(yè)務(wù)數(shù)據(jù)統(tǒng)計(jì)的,那么1天以前前的數(shù)據(jù)就可以在這樣的業(yè)務(wù)規(guī)則下變成歷史數(shù)據(jù)了,從現(xiàn)在開(kāi)始源源不斷產(chǎn)生的數(shù)據(jù)就都是動(dòng)態(tài)數(shù)據(jù)了。這個(gè)思考有一點(diǎn)點(diǎn)繞,大家下來(lái)靜心思考一下是不是這個(gè)道理。

基于這樣的數(shù)據(jù)劃分思考,我們可以選擇處理這兩類(lèi)數(shù)據(jù)的技術(shù)產(chǎn)品。我們將整個(gè)架構(gòu)體系里面既有流計(jì)算處理鏈路,又有批計(jì)算處理鏈路的計(jì)算架構(gòu)叫做流批一體架構(gòu)。我們當(dāng)前如圖顯示的架構(gòu)就是流批一體的Lambda架構(gòu),這個(gè)架構(gòu)流計(jì)算和批計(jì)算最終是為了服務(wù)最終的Serving layer,也即是在查詢(xún)服務(wù)層可以實(shí)時(shí)的查詢(xún)當(dāng)下數(shù)據(jù)的計(jì)算結(jié)果。

但隨著時(shí)間的推移,批計(jì)算的精準(zhǔn)結(jié)果再修正流計(jì)算實(shí)時(shí)產(chǎn)有潛在偏差的結(jié)果,進(jìn)而保證低延時(shí)的同時(shí)也保證了計(jì)算結(jié)果的高精準(zhǔn)。這個(gè)架構(gòu)很好的一個(gè)特點(diǎn)就是,流計(jì)算只注重極致的實(shí)時(shí)性,在計(jì)算的優(yōu)化規(guī)則方面也根據(jù)流計(jì)算的特點(diǎn)進(jìn)行優(yōu)化選擇。在批計(jì)算的時(shí)候只注重?cái)?shù)據(jù)的計(jì)算結(jié)果精準(zhǔn)性,同時(shí)優(yōu)化規(guī)則的選擇也結(jié)合批計(jì)算的特點(diǎn)選擇性能更好的規(guī)則。比如雖然流批都是JOIN的邏輯,但是批可以選擇sortedjoin,而流計(jì)算模式就不可以選擇了。

那么在現(xiàn)實(shí)生產(chǎn)系統(tǒng)里面大多的業(yè)務(wù)數(shù)據(jù)劃分歷史數(shù)據(jù)的方式一般以自然天或者業(yè)務(wù)天為單位進(jìn)行劃分,也即是我們經(jīng)常說(shuō)的T+1.

這樣的相同數(shù)據(jù)分別由批計(jì)算模式計(jì)算一遍,在用流計(jì)算模式跑一遍的Lamdba架構(gòu),有哪些不足呢?Lambda架構(gòu)核心是成本問(wèn)題:多份數(shù)據(jù)存儲(chǔ)成本,多API開(kāi)發(fā)成本,多引擎運(yùn)維成本等等。那么我們有沒(méi)有其他更優(yōu)化的方案呢?

以終為始 – 流批一體(Kappa 架構(gòu))

為了解決Lambda架構(gòu)多引擎的維護(hù),一套業(yè)務(wù)多套API開(kāi)發(fā)的不足,Kafka生態(tài)體系又提出了Kappa架構(gòu),這個(gè)架構(gòu)一個(gè)非常大的優(yōu)點(diǎn)就是用戶一套業(yè)務(wù)只需用一套API開(kāi)發(fā),用戶只維護(hù)一份業(yè)務(wù)代碼,運(yùn)維一個(gè)引擎,這在實(shí)際的生產(chǎn)開(kāi)發(fā)運(yùn)維中相比Lamdba有了很大的改善,但是Kappa架構(gòu)是如何做到實(shí)時(shí)性和精準(zhǔn)性的呢?

其實(shí)是利用了存儲(chǔ)系統(tǒng)的數(shù)據(jù)回放能力,也就是如果從流計(jì)算產(chǎn)生了計(jì)算結(jié)果精準(zhǔn)性問(wèn)題,利用同一套只具有流計(jì)算模式的計(jì)算引擎全量回放一下歷史數(shù)據(jù),由于是歷史數(shù)據(jù),數(shù)據(jù)沒(méi)有延時(shí),也沒(méi)有更新,進(jìn)而即便是流計(jì)算模式的計(jì)算引擎在進(jìn)行靜態(tài)數(shù)據(jù)計(jì)算時(shí)候,再加上采用精準(zhǔn)一次的計(jì)算語(yǔ)義模式下是可以達(dá)到數(shù)據(jù)計(jì)算結(jié)果的高精準(zhǔn)的。

這樣的架構(gòu)特點(diǎn),大家也不難發(fā)現(xiàn)Kappa框架本身也有其潛在的弊端,比如都是流計(jì)算模式的引擎在算法優(yōu)化規(guī)則的選擇上有很大的局限性,進(jìn)而也造成資源的浪費(fèi)。同時(shí)以流的模式重放全量數(shù)據(jù),在批計(jì)算和流計(jì)算并行進(jìn)行時(shí)候,會(huì)對(duì)存儲(chǔ)系統(tǒng)產(chǎn)生很大的IO壓力。

這里有一篇對(duì)Kappa架構(gòu)有很好的分析的文章推薦大家進(jìn)行延展閱讀。https://www.kai-waehner.de/blog/2021/09/23/real-time-kappa-architecture-mainstream-replacing-batch-lambda/

以終為始 – 流批一體(Enhanced generation)

目前流批一體的架構(gòu)體系還不夠完善,流批一體本身在概念層面業(yè)界還存在很大的不同認(rèn)知,那么從我的角度看流批一體應(yīng)該具備怎樣的特點(diǎn)呢?這里和大家分享幾點(diǎn)共同交流。

第一點(diǎn),流批用戶無(wú)感,從用戶層面去看流批一體,從技術(shù)實(shí)現(xiàn)上應(yīng)該流批應(yīng)該對(duì)用戶是無(wú)感的,流計(jì)算和批計(jì)算在用戶視角看是業(yè)務(wù)計(jì)算的延遲上面有區(qū)別,用戶本身并不關(guān)心是流計(jì)算模式還是批計(jì)算模式。也就是如果你能達(dá)到計(jì)算準(zhǔn)確并且延時(shí)在業(yè)務(wù)接受的范圍內(nèi),用戶本身不關(guān)心計(jì)算框架采用怎樣的計(jì)算模式。

第二點(diǎn),流批一套API,從開(kāi)發(fā)層面看,用戶既不關(guān)心引擎的計(jì)算模式,更不愿意為了達(dá)到計(jì)算準(zhǔn)確性和計(jì)算低延時(shí)而利用兩套API進(jìn)行相同業(yè)務(wù)開(kāi)發(fā),那么也就是流批一體首先應(yīng)該確保API層面對(duì)用戶流批透明,有一套統(tǒng)一的API對(duì)用戶可見(jiàn)。

第三點(diǎn),單引擎運(yùn)維,從運(yùn)維層面看,用戶不想維護(hù)多套計(jì)算引擎,兩套計(jì)算引擎的維護(hù),必然也會(huì)造成第二點(diǎn)提及的開(kāi)發(fā)困擾,同時(shí)增加更多的運(yùn)維成本。

第四點(diǎn),流批自動(dòng)切換,技術(shù)角度去看,流批一體的計(jì)算引擎,流計(jì)算和批計(jì)算的模式,不是在作業(yè)啟動(dòng)的時(shí)候進(jìn)行二選一的配置,而是根據(jù)作業(yè)算子的特點(diǎn),業(yè)務(wù)延時(shí)要求的配置等等綜合因素進(jìn)行引擎內(nèi)部的自動(dòng)選擇。也就是說(shuō),我更認(rèn)為批計(jì)算是流計(jì)算在性能和計(jì)算精準(zhǔn)性方面的優(yōu)化選擇,流計(jì)算是批計(jì)算在延時(shí)性方面的優(yōu)化選擇。流批一體的計(jì)算引擎應(yīng)該對(duì)用戶來(lái)說(shuō)是黑盒子,有能力具備按照用戶的業(yè)務(wù)目標(biāo)自動(dòng)化選擇流批計(jì)算模式。

第五點(diǎn),客戶第一,其實(shí)不是技術(shù)特點(diǎn),而是流計(jì)算產(chǎn)品必須要擔(dān)負(fù)的職責(zé),為用戶節(jié)約成本,為用戶創(chuàng)造價(jià)值。這雖然是一句愿景的話,但這對(duì)流計(jì)算產(chǎn)品提出了巨大的挑戰(zhàn),流批一體本身也是為了完成這一職責(zé)所產(chǎn)生的技術(shù)架構(gòu)。

那么,就流批一體的技術(shù)體系而言,在現(xiàn)有的架構(gòu)方案中,我們接下來(lái)從哪些維度可以在為用戶創(chuàng)造更大價(jià)值的同時(shí),還能為用戶節(jié)約更多的成本呢?

這里拋磚引玉,我們是否可以在計(jì)算和存儲(chǔ)層面有更多的思考,讓存儲(chǔ)加速計(jì)算,并節(jié)約用戶成本,為用戶創(chuàng)造更大的價(jià)值呢?

以終為始 – 流批一體(存儲(chǔ)+計(jì)算)

其實(shí)以存儲(chǔ)換取計(jì)算速度的技術(shù)在傳統(tǒng)的數(shù)據(jù)庫(kù)里面已經(jīng)有了很好的技術(shù)抽象和落地實(shí)現(xiàn)了,比如,物化視圖,一般物化視圖有2種方式,一是ON DEMAND,一是ON COMMIT,其中ON COMMIT的方式有更好的實(shí)時(shí)性體體現(xiàn)。那么在流計(jì)算產(chǎn)品里面我們有哪些存儲(chǔ)加速計(jì)算的場(chǎng)景呢,其實(shí)在Apache Flink里面也有這樣的影子,比如試圖和SQL復(fù)用的技術(shù)實(shí)現(xiàn)都是將一部分公用的數(shù)據(jù)計(jì)算出來(lái)之后進(jìn)行局部存儲(chǔ),然后供其他復(fù)雜的計(jì)算進(jìn)行計(jì)算結(jié)果的復(fù)用,進(jìn)而依托于存儲(chǔ)加速計(jì)算,也為用戶節(jié)約了計(jì)算成本。那么在流批一體層面上看,我們可以用怎樣的技術(shù)手段,優(yōu)化現(xiàn)有流批一體架構(gòu)呢?

首先計(jì)算實(shí)時(shí)性是業(yè)務(wù)價(jià)值最大化的強(qiáng)需求,那么在不損失業(yè)務(wù)實(shí)時(shí)性的前提下,如何改進(jìn)批計(jì)算環(huán)節(jié)的技術(shù)實(shí)現(xiàn)來(lái)完成計(jì)算成本優(yōu)化的目標(biāo)呢?

這里簡(jiǎn)單假設(shè)一下,流計(jì)算產(chǎn)品一般都是有狀態(tài)的計(jì)算引擎,在持續(xù)計(jì)算的過(guò)程中我們都會(huì)將中間計(jì)算結(jié)果進(jìn)行持久化處理,以Apache Flink為例,在持續(xù)查詢(xún)的算子實(shí)現(xiàn)層面,會(huì)將中間計(jì)算結(jié)果進(jìn)行statebackend的持久化處理,當(dāng)然這些持久化處理是為了作業(yè)的恢復(fù)使用。但如果這些持久化數(shù)據(jù)除了用于作業(yè)恢復(fù)之外,再延伸思考一下,我們是否有契機(jī)將持久化數(shù)據(jù)應(yīng)用在高精準(zhǔn)批量計(jì)算的過(guò)程當(dāng)中呢?

我們知道流計(jì)算模式的計(jì)算結(jié)果之所以有失精準(zhǔn)性,那是因?yàn)橛行〔糠值臄?shù)據(jù)延時(shí)和更新造成的。比如我們?cè)诖翱谟?jì)算中,延時(shí)的數(shù)據(jù)只會(huì)影響數(shù)據(jù)對(duì)應(yīng)的窗口計(jì)算結(jié)果,那么在精準(zhǔn)性批量計(jì)算中只需要對(duì)有問(wèn)題的窗口數(shù)據(jù)進(jìn)行計(jì)算,并且我們即便是對(duì)有問(wèn)題的窗口數(shù)據(jù)進(jìn)行計(jì)算,也沒(méi)有必要把整體窗口的所有數(shù)據(jù)都重新計(jì)算一遍,而是利用流計(jì)算的中間結(jié)果和出現(xiàn)問(wèn)題的延時(shí)數(shù)據(jù)進(jìn)行修復(fù)計(jì)算即可。

如果這些構(gòu)想能夠細(xì)化落地,會(huì)涉及到statebackend能力延展,以及流計(jì)算中間計(jì)算結(jié)果的通用數(shù)據(jù)結(jié)構(gòu)抽象,并結(jié)合GAP數(shù)據(jù)和數(shù)據(jù)源建立血緣關(guān)系的方式,減少GAP數(shù)據(jù)在statebackend的存儲(chǔ),進(jìn)而即便是GAP數(shù)據(jù)我們也可以從數(shù)據(jù)源拉取,而不進(jìn)行多余的持久化處理,這樣就可以極大程度的優(yōu)化流批一體化架構(gòu)實(shí)現(xiàn)。

如果再進(jìn)一步延展,也許我們可以將Statebackend獨(dú)立成StateDB子產(chǎn)品,這樣在 checkpoint/failover等機(jī)制中也可以得到優(yōu)化可能,比如在在Fast failover中將StateDB作為遠(yuǎn)程分布式的狀態(tài)數(shù)據(jù)庫(kù),作業(yè)算子的狀態(tài)可以mappping到StateDB中的狀態(tài)記錄,進(jìn)而提速作業(yè)恢復(fù)。

上面的簡(jiǎn)單構(gòu)思其實(shí)核心是想讓批計(jì)算可以復(fù)用流計(jì)算的計(jì)算狀態(tài),那么其實(shí)在流批一體化技術(shù)體系和實(shí)際的業(yè)務(wù)場(chǎng)景中,也存在流計(jì)算復(fù)用批計(jì)算計(jì)算狀態(tài)的需求,我舉一個(gè)例子,我們?cè)谧窋?shù)據(jù)的場(chǎng)景,我們可能利用批計(jì)算模式進(jìn)行歷史數(shù)據(jù)的追溯計(jì)算,在追上之后切換到流計(jì)算模式,那么批計(jì)算的計(jì)算結(jié)果如何在切換到流計(jì)算模式時(shí)候被新流入的數(shù)據(jù)計(jì)算過(guò)程進(jìn)行復(fù)用呢?這里面也是前面我們提到流批一體化技術(shù)體系需要解決流批系統(tǒng)自動(dòng)切換的前提能力之一。

總之,在我看來(lái),延展計(jì)算存儲(chǔ),利用存儲(chǔ)加速計(jì)算是后續(xù)我們需要持續(xù)研究和不斷技術(shù)演進(jìn)的重點(diǎn)方向之一。

不論如何,這些方向的思考和技術(shù)的研究在默默的發(fā)生著,我們靜觀其變,其實(shí),除了流批一體之外流計(jì)算產(chǎn)品還有很多重要的技術(shù)挑戰(zhàn)需要持續(xù)投入,比如,秒級(jí)收縮容,狀態(tài)數(shù)據(jù)的冷熱分層,云原生的邁進(jìn),流計(jì)算產(chǎn)品的低代碼化等等。今天內(nèi)容主題是流計(jì)算產(chǎn)品的綜合洞察,所以不針對(duì)每一個(gè)技術(shù)細(xì)節(jié)進(jìn)行展開(kāi),后續(xù)課程我們慢慢再聊。

05 用戶取向

以終為始 – 用戶視角(商業(yè)價(jià)值)

OK,現(xiàn)在我們換個(gè)思維方向,我們說(shuō)流計(jì)算產(chǎn)品的核心目標(biāo)是讓數(shù)據(jù)產(chǎn)生價(jià)值。

首先我們的目標(biāo)是讓企業(yè)適用商業(yè)趨勢(shì)進(jìn)而助力企業(yè)創(chuàng)造最大業(yè)務(wù)價(jià)值,那么企業(yè)是以這樣的方式達(dá)成適應(yīng)商業(yè)趨勢(shì)呢?當(dāng)然依靠的是企業(yè)管理層一個(gè)又一個(gè)的企業(yè)決策。再去思考,這些決策的依據(jù)又是什么呢?當(dāng)然是靠精準(zhǔn)的數(shù)據(jù)作為決策支撐。那么精準(zhǔn)的數(shù)據(jù)又是從哪里來(lái)的呢?不能排除有一部分實(shí)時(shí)精準(zhǔn)的數(shù)據(jù)就來(lái)自于我們的流計(jì)算產(chǎn)品。那么這些精準(zhǔn)有效的數(shù)據(jù)又來(lái)自于哪里呢?其實(shí)原始數(shù)據(jù)還是來(lái)源于商業(yè)本身。

那么在這樣的數(shù)據(jù)和數(shù)據(jù)利用閉環(huán)體系中,怎樣的計(jì)算產(chǎn)品才是對(duì)用戶是最有效的呢?這個(gè)問(wèn)題是流計(jì)算產(chǎn)品需要持續(xù)思考的問(wèn)題。

以終為始 – 用戶視角(做我所長(zhǎng))

怎樣的流計(jì)算產(chǎn)品才是對(duì)用戶最有效的?這個(gè)問(wèn)題,如果我們從用戶視角去思考的話,我想,如果一個(gè)流計(jì)算產(chǎn)品可以為用戶創(chuàng)造一個(gè)用戶可以只 “做其所長(zhǎng)”的平臺(tái)環(huán)境,那么將是對(duì)用戶最有效的流計(jì)算產(chǎn)品。

那么怎樣衡量一個(gè)流計(jì)算產(chǎn)品是否做到了可以讓用戶能夠精力集中到“做其所長(zhǎng)”呢?我們可以從產(chǎn)品能力和產(chǎn)品形態(tài)兩個(gè)維度進(jìn)行思考。

首先從產(chǎn)品能力上看,流計(jì)算產(chǎn)品首先需要具備數(shù)據(jù)集成能力,然后是數(shù)據(jù)分析能力,在具備了集成分析能力之后,我們更需要在領(lǐng)域上深耕,增加更多的行業(yè)分析能力,比如物聯(lián)網(wǎng)領(lǐng)域,金融風(fēng)控領(lǐng)域等領(lǐng)域性較強(qiáng)的分析能力。

不論我們進(jìn)行什么行業(yè)的分析,用戶最終還是期望依托于數(shù)據(jù)進(jìn)行商業(yè)決策的,那么如果流計(jì)算產(chǎn)品本身囊括了商業(yè)決策所需平臺(tái)能力,那么將會(huì)極大的減輕用戶的決策成本。

最后,如果我們的流計(jì)算產(chǎn)品可以智能的學(xué)習(xí)企業(yè)商業(yè)決策所需要的決策模型,并自動(dòng)化的助力企業(yè)進(jìn)行商業(yè)決策,那么用戶就真的是只思考商業(yè)模式和做自己最擅長(zhǎng)的業(yè)務(wù)工作去了,那么也必然能達(dá)成了”做其所長(zhǎng)“的最佳狀態(tài)。但是我們知道,流計(jì)算產(chǎn)品能力不僅僅是技術(shù)層面的功能性,還需要有交付到用戶手里的產(chǎn)品形態(tài),那么怎樣的產(chǎn)品形態(tài)才是最便利用戶的呢?

第一種,我們可以將產(chǎn)品能力齊全的項(xiàng)目發(fā)布代碼交付給客戶,客戶自己本地部署,也就是On-premise交付形態(tài)。這種本地部署其實(shí)對(duì)用戶提出了很高的要求,包機(jī)房,網(wǎng)絡(luò)環(huán)境等等都需要用戶自己準(zhǔn)備

第二種,半托管模式,也就是基于IaaS交付模式,用戶可以托管服務(wù)器,網(wǎng)絡(luò)環(huán)境等基礎(chǔ)設(shè)置,用戶只是依賴(lài)的中間件產(chǎn)品和流計(jì)算產(chǎn)品自己部署到安全的基礎(chǔ)設(shè)施里面,但是這里面用戶仍然要維護(hù)流計(jì)算產(chǎn)品的應(yīng)用

第三種,全托管模式,也就是PaaS交付模式,為用戶提供一個(gè)流計(jì)算產(chǎn)品平臺(tái),比如:用戶只需通過(guò)web 瀏覽器就可以進(jìn)行業(yè)務(wù)開(kāi)發(fā),用戶只關(guān)心自己的業(yè)務(wù)應(yīng)用代碼維護(hù)

第四種,是更便利的服務(wù)模式,SaaS交付模式,用戶只需要進(jìn)行服務(wù)直接調(diào)用或者簡(jiǎn)單的業(yè)務(wù)流程編排就完成了自己的業(yè)務(wù)需要。

第五種,其實(shí)這一種更多的是云原生架構(gòu)的體現(xiàn)形式,一切皆服務(wù),數(shù)據(jù)庫(kù)可以是服務(wù),人工智能可以服務(wù),業(yè)務(wù)流程也可以是服務(wù),XaaS交付模式會(huì)對(duì)服務(wù)直接的依賴(lài)復(fù)用提出更多的技術(shù)挑戰(zhàn)。

那么不論產(chǎn)品具備怎樣的產(chǎn)品能力,以怎樣的產(chǎn)品形態(tài)進(jìn)行交付,流計(jì)算產(chǎn)品都需要考慮用戶數(shù)據(jù)處理的實(shí)時(shí)性要求。

最后,要時(shí)刻意識(shí)到流計(jì)算產(chǎn)品需要解決以數(shù)據(jù)處理的實(shí)時(shí)性,以達(dá)到將業(yè)務(wù)數(shù)據(jù)的價(jià)值最大化的目標(biāo)。

06 產(chǎn)品能力

以終為始 – 產(chǎn)品能力(數(shù)據(jù)集成) 

那么用戶要達(dá)成自己的商業(yè)決策需求,根據(jù)流計(jì)算產(chǎn)品提供的不同層面的產(chǎn)品能力,可以解決怎樣的業(yè)務(wù)問(wèn)題,都適用怎樣的業(yè)務(wù)場(chǎng)景呢?

首先我們看看具備數(shù)據(jù)集成能力的流計(jì)算產(chǎn)品在用戶整個(gè)業(yè)務(wù)處理鏈條中的位置。

流計(jì)算產(chǎn)品具備數(shù)據(jù)集成能力是最基礎(chǔ)的能力,核心解決企業(yè)各個(gè)業(yè)務(wù)系統(tǒng)由于數(shù)據(jù)分散存儲(chǔ)而造成的數(shù)據(jù)價(jià)值碎片問(wèn)題。數(shù)據(jù)集成可以將分散數(shù)據(jù)進(jìn)行匯聚,供后續(xù)業(yè)務(wù)進(jìn)行綜合分析。

如圖,只具備數(shù)據(jù)集成能力的流計(jì)算產(chǎn)品將多數(shù)據(jù)源數(shù)據(jù)匯聚集成,但不進(jìn)行聚合加工,集成后的數(shù)據(jù)直接輸出到其他的具備分析能力的數(shù)據(jù)產(chǎn)品。

從用戶視角看,用戶只能通過(guò)具備數(shù)據(jù)集成能力的流計(jì)算產(chǎn)品完成業(yè)務(wù)數(shù)據(jù)的實(shí)時(shí)集成需求,要完成全部的商業(yè)決策還需要面對(duì)其他大數(shù)據(jù)生態(tài)產(chǎn)品,比如數(shù)據(jù)湖,數(shù)據(jù)倉(cāng)庫(kù)等。

以終為始 – 產(chǎn)品能力(數(shù)據(jù)分析) 

那么具備數(shù)據(jù)分析能力的流計(jì)算產(chǎn)品應(yīng)該增加怎樣的功能和解決怎樣的業(yè)務(wù)問(wèn)題呢?

首先流計(jì)算產(chǎn)品具備數(shù)據(jù)分析能力是在數(shù)據(jù)集成能力基礎(chǔ)之上的能力增強(qiáng),核心會(huì)增加滿足基礎(chǔ)的分析算子能力,如:數(shù)據(jù)窗口劃分,通用聚合函數(shù),各種數(shù)據(jù)流的JOIN等,對(duì)數(shù)據(jù)進(jìn)行通用分析。

從用戶視角來(lái)看,用戶可以通過(guò)具備數(shù)據(jù)分析能力的流計(jì)算產(chǎn)品可以滿足常見(jiàn)的業(yè)務(wù)端到端需求,比如實(shí)時(shí)監(jiān)控等業(yè)務(wù)需求。但是復(fù)雜的領(lǐng)域性復(fù)雜分析,還需要借助其他大數(shù)據(jù)生態(tài)產(chǎn)品,比如數(shù)據(jù)湖,數(shù)據(jù)倉(cāng)庫(kù)等。這里我們注意,分析后的數(shù)據(jù)除了流入其他具備領(lǐng)域性分析能力的產(chǎn)品外,也可以直接提供給監(jiān)控預(yù)警場(chǎng)景的終端用戶,也意味著具備數(shù)據(jù)分析能力的流計(jì)算產(chǎn)品可以端到端的獨(dú)立解決某些業(yè)務(wù)場(chǎng)景了。

以終為始 – 產(chǎn)品能力(行業(yè)分析)

流計(jì)算產(chǎn)品發(fā)展到第三個(gè)能力層次就是具備行業(yè)分析能力,行業(yè)分析能力可以橫向拓展,就像在堅(jiān)實(shí)的地基上高樓林立,每一座高樓都代表一個(gè)行業(yè),而你可以不斷的新建新的、各具特色的大樓。

流計(jì)算產(chǎn)品增加行業(yè)分析能力,是根據(jù)不同行業(yè)的領(lǐng)域問(wèn)題來(lái)增加領(lǐng)域性較強(qiáng)的垂直功能,比如電商行業(yè)需要的機(jī)器學(xué)習(xí)能力,進(jìn)而完成搜索推薦,游戲行業(yè)需要對(duì)玩家各種游戲打斗和道具應(yīng)用進(jìn)行復(fù)雜的事件分析,進(jìn)而需要增加CEP能力,或者IoT領(lǐng)域需要對(duì)設(shè)備實(shí)時(shí)管理,就有可能需要增加位置數(shù)據(jù)處理能力和時(shí)序數(shù)據(jù)處理能力等等。

用戶視角:用戶可以通過(guò)具備行業(yè)分析能力的流計(jì)算產(chǎn)品,開(kāi)發(fā)滿足特定行業(yè)屬性的端到端需求,比如電商的商品推薦,IoT領(lǐng)域的設(shè)備管理和控制,游戲行業(yè)的復(fù)雜事件分析等,沒(méi)有被流計(jì)算產(chǎn)品覆蓋的行業(yè)需求,還是需要借助其他大數(shù)據(jù)生態(tài)產(chǎn)品,比如數(shù)據(jù)湖,數(shù)據(jù)倉(cāng)庫(kù)等。

以終為始 – 產(chǎn)品能力(商業(yè)決策)

流計(jì)算產(chǎn)品發(fā)展到具備了商業(yè)決策能力,那么從用戶視角看,流計(jì)算產(chǎn)品基本完成了除了企業(yè)自身業(yè)務(wù)工作之外的所有工作了,流計(jì)算產(chǎn)品就可以做企業(yè)的軍師了,不用給流計(jì)算產(chǎn)品太多輸入,流計(jì)算產(chǎn)品就可以告訴企業(yè)如何進(jìn)業(yè)務(wù)拓展,如何進(jìn)行客戶拓展。

流計(jì)算產(chǎn)品具備商業(yè)決策能力,需要增加對(duì)商業(yè)決策模型進(jìn)行配置的能力,并具備根據(jù)決策流程配置生成商業(yè)決策的能力。同時(shí)此時(shí)的流計(jì)算產(chǎn)品應(yīng)該囊括了其他分析類(lèi)產(chǎn)品的能力,即,比如流程定制,湖倉(cāng)分析等等都是對(duì)用戶透明的。

從用戶視角看,用戶可以通過(guò)具備商業(yè)決策能力的流計(jì)算產(chǎn)品進(jìn)行商業(yè)方面的實(shí)時(shí)決策,用戶只需要對(duì)企業(yè)決策規(guī)則進(jìn)行配置,對(duì)決策流程進(jìn)行配置,并配置決策方案的打分機(jī)制,進(jìn)而通過(guò)流計(jì)算產(chǎn)品完成端到端的全鏈路的商業(yè)決策。

具備這樣能力的流計(jì)算產(chǎn)品已經(jīng)是廣義的流計(jì)算概念了,這樣的流計(jì)算產(chǎn)品可以端到端的處理現(xiàn)實(shí)世界中隨時(shí)間而產(chǎn)生的任何數(shù)據(jù),真正達(dá)成全面的實(shí)時(shí)化分析決策。具備這個(gè)能力的流計(jì)算產(chǎn)品已經(jīng)是一個(gè)現(xiàn)實(shí)事件實(shí)時(shí)化分析處理的流計(jì)算產(chǎn)品套件了。

以終為始 – 產(chǎn)品能力(智能學(xué)習(xí))

最后,如果讓這個(gè)流計(jì)算產(chǎn)品更智能化,如果產(chǎn)品具備智能學(xué)習(xí)的能力,那就是最完美的流計(jì)算產(chǎn)品了。

流計(jì)算產(chǎn)品具備智能學(xué)習(xí)能力,是在具備商業(yè)決策能力的基礎(chǔ)上對(duì)決策的規(guī)則,決策模型等人工配置部分自動(dòng)化掉,就是依托于內(nèi)置的數(shù)據(jù)分析,行業(yè)分析,機(jī)器學(xué)習(xí),模型訓(xùn)練和數(shù)據(jù)預(yù)測(cè)等能力進(jìn)行智能的自動(dòng)更新。

從用戶視角來(lái)看,用戶可以利用具備智能學(xué)習(xí)能力的流計(jì)算產(chǎn)品,只需要進(jìn)行商業(yè)目標(biāo)的設(shè)定和用戶增長(zhǎng)所需的業(yè)務(wù)參數(shù)配置,即可完成商業(yè)價(jià)值的締造。

這里也做一個(gè)簡(jiǎn)單的說(shuō)明,前面和大家分享的流計(jì)算產(chǎn)品這五個(gè)層面的產(chǎn)品能力,是從達(dá)成用戶利用數(shù)據(jù)創(chuàng)造價(jià)值的目標(biāo)過(guò)程中,如何簡(jiǎn)化用戶非擅長(zhǎng)的工作的視角進(jìn)行思考的,流計(jì)算產(chǎn)品的發(fā)展可以從不同的視角進(jìn)行切入規(guī)劃,如有不妥的認(rèn)知,歡迎大家指正,也期待聽(tīng)到你的思考分享!

那么接下來(lái)讓我們來(lái)看看當(dāng)前行業(yè)中的流計(jì)算產(chǎn)品有哪些?

07 業(yè)界產(chǎn)品

以終為始 – 開(kāi)源產(chǎn)品

首先我們看看開(kāi)源領(lǐng)域的流計(jì)算項(xiàng)目。

第一個(gè)[Apache Flink](https://flink.apache.org/zh/flink-architecture.html)是一個(gè)分布式處理引擎,用于在無(wú)邊界和有邊界數(shù)據(jù)流上進(jìn)行有狀態(tài)的計(jì)算。Flink 能在所有常見(jiàn)集群環(huán)境中運(yùn)行,并能以?xún)?nèi)存速度和任意規(guī)模進(jìn)行計(jì)算。

第二個(gè)[Apache Spark](https://spark.apache.org/) 是一個(gè)多語(yǔ)言引擎,用于在單節(jié)點(diǎn)機(jī)器或集群上執(zhí)行數(shù)據(jù)工程、數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)。

第三個(gè)[Apache Storm](https://storm.apache.org/) 可以輕松可靠地處理無(wú)限的數(shù)據(jù)流,實(shí)現(xiàn)Hadoop對(duì)批處理的實(shí)時(shí)處理。

第四個(gè)[Esper](https://www.espertech.com/) 是一種用于復(fù)雜事件處理(CEP)和流式分析的產(chǎn)品

第五個(gè)[Hazelcast](https://hazelcast.com/)是一個(gè)流式和內(nèi)存優(yōu)先的應(yīng)用平臺(tái),用于在本地、邊緣或作為完全管理的云服務(wù)實(shí)現(xiàn)快速、有狀態(tài)、數(shù)據(jù)密集型的工作負(fù)載。

第六個(gè)[Apache Samza](https://samza.apache.org/) 允許您構(gòu)建有狀態(tài)應(yīng)用程序,實(shí)時(shí)處理來(lái)自多個(gè)源的數(shù)據(jù)。

第七/八兩個(gè)都是基于[Kafka](https://kafka.apache.org/documentation/streams/)的延展流計(jì)算產(chǎn)品,其中[ksqlDB](https://ksqldb.io/)是為流處理應(yīng)用程序?qū)iT(mén)構(gòu)建的數(shù)據(jù)庫(kù)。

第九個(gè)[MegFlow](https://github.com/MegEngine/MegFlow) 提供快速視覺(jué)應(yīng)用落地流程,最快 15 分鐘搭建起視頻分析服務(wù),雖然和流計(jì)算產(chǎn)品有一定的差異,但是也很值得我們感興趣的同學(xué)去體驗(yàn)一下。

第十個(gè)[Apache Heron](https://heron.apache.org/)是一種實(shí)時(shí)、分布式、容錯(cuò)的流處理引擎

這些開(kāi)源流計(jì)算引擎大家都可以作業(yè)流計(jì)算理論學(xué)習(xí)的實(shí)現(xiàn)工程參考。如果大家對(duì)哪一個(gè)特別感興趣,我們也可線下聚焦討論,一起學(xué)習(xí)。

以終為始 – 商業(yè)產(chǎn)品(基于開(kāi)源)

除了前面的開(kāi)源產(chǎn)品還有一些大家熟知的基于開(kāi)源打造的商業(yè)化平臺(tái)產(chǎn)品,簡(jiǎn)單了解如下幾個(gè):

第一個(gè)是阿里巴巴旗下實(shí)時(shí)計(jì)算商業(yè)品牌

[Ververica](https://www.aliyun.com/product/bigdata/sc),是阿里云基于 Apache Flink 構(gòu)建的企業(yè)級(jí)、高性能實(shí)時(shí)大數(shù)據(jù)處理系統(tǒng),由 Apache Flink 創(chuàng)始團(tuán)隊(duì)官方出品,擁有全球統(tǒng)一商業(yè)化品牌,完全兼容開(kāi)源 Flink API,提供豐富的企業(yè)級(jí)增值功能。

第二個(gè)是騰訊云的流計(jì)算品牌

[流計(jì)算Oceanus](https://cloud.tencent.com/product/oceanus),是大數(shù)據(jù)產(chǎn)品生態(tài)體系的實(shí)時(shí)化分析利器,是基于 Apache Flink 構(gòu)建的企業(yè)級(jí)實(shí)時(shí)大數(shù)據(jù)分析平臺(tái),具備一站開(kāi)發(fā)、無(wú)縫連接、亞秒延時(shí)、低廉成本、安全穩(wěn)定等特點(diǎn)。流計(jì)算 Oceanus 以實(shí)現(xiàn)企業(yè)數(shù)據(jù)價(jià)值最大化為目標(biāo),加速企業(yè)實(shí)時(shí)化數(shù)字化的建設(shè)進(jìn)程。

第三個(gè)是 AWS的流計(jì)算品牌

[Kinesis](https://aws.amazon.com/cn/kinesis/data-analytics/),使用無(wú)服務(wù)器的完全托管式 Apache Flink 從串流數(shù)據(jù)中獲得可行建議。

第四個(gè)是Confluent產(chǎn)品

[Confluent](https://www.confluent.io/)的KsqlDB是專(zhuān)門(mén)為流處理應(yīng)用程序構(gòu)建的數(shù)據(jù)庫(kù),能夠利用它進(jìn)行流處理使您能夠從數(shù)據(jù)流中獲得即時(shí)見(jiàn)解。

第五個(gè)Esper產(chǎn)品

[Esper](https://www.espertech.com/)企業(yè)版是一種用于復(fù)雜事件處理(CEP)和流式分析的產(chǎn)品

第六個(gè)是谷歌產(chǎn)品

[Dataflow](https://cloud.google.com/dataflow),無(wú)服務(wù)器、快速且經(jīng)濟(jì)高效的統(tǒng)一流式數(shù)據(jù)處理和批量數(shù)據(jù)處理。

最后兩個(gè)大家感興趣也可以到其官網(wǎng)進(jìn)行簡(jiǎn)單了解。

以終為始 – 商業(yè)產(chǎn)品(完全自研)

對(duì)于流計(jì)算產(chǎn)品提供商而言,一種是基于開(kāi)源進(jìn)行商業(yè)化,一種是完全自研進(jìn)行商業(yè)化,自研產(chǎn)品對(duì)企業(yè)研發(fā)力量的要求還是很高的,但是投入產(chǎn)出比也是也是不錯(cuò)的,我們看到如圖的這些自研產(chǎn)品,不論是Oracle,SAS,還是TIBCO,IBM他們自研的流計(jì)算產(chǎn)品都是在Forrester測(cè)評(píng)的領(lǐng)導(dǎo)者象限的。所以在目前業(yè)界擁抱開(kāi)源的大環(huán)境下,自研產(chǎn)品的生命力并不會(huì)減弱,因?yàn)檫@些自研產(chǎn)品的東家都具備一流的產(chǎn)研能力,都舍得在研發(fā)上長(zhǎng)期投入,這是很多處于探尋商業(yè)生存空間的中小企業(yè)無(wú)法比擬的。

以終為始 – 商業(yè)產(chǎn)品(組合套件)

跳出流計(jì)算產(chǎn)品的單品,在整個(gè)大數(shù)據(jù)產(chǎn)品體系中,要端到端的解決企業(yè)業(yè)務(wù)問(wèn)題,僅僅一個(gè)流計(jì)算核心產(chǎn)品是遠(yuǎn)遠(yuǎn)不夠的,所以很多企業(yè)打造了大數(shù)據(jù)流計(jì)算體系的產(chǎn)品套件,企業(yè)在這個(gè)套件中可以閉環(huán)的完成所有的企業(yè)大數(shù)據(jù)流計(jì)算需求,大家如果感興趣可以對(duì)如圖產(chǎn)品進(jìn)行逐一了解,比如第一個(gè)九很有意思,低代碼的流計(jì)算分析產(chǎn)品。坦白說(shuō)我也非常贊同流計(jì)算產(chǎn)品都盡可能的走到低代碼行列。

08 交付模式

以終為始 – 價(jià)值空間

OK,到這里我們簡(jiǎn)單了解了從純開(kāi)源,到基于開(kāi)源的商業(yè)化產(chǎn)品,到完全自研的產(chǎn)品,再到流計(jì)算體系的產(chǎn)品套件等業(yè)界現(xiàn)有的流計(jì)算產(chǎn)品。那么這些產(chǎn)品在交付選擇上有怎樣的區(qū)別,這些不同的交互模式下有怎樣的本質(zhì)區(qū)別呢?我們這里可以有一個(gè)共識(shí),這些產(chǎn)品都是toB的產(chǎn)品,不同的交付模式完全是流計(jì)算產(chǎn)品提供商和B端企業(yè)的分工問(wèn)題。

但這些分工有一個(gè)本質(zhì)的內(nèi)因,就是不同的交付模式?jīng)Q定了彼此的價(jià)值空間。但這里一方價(jià)值空間的增加并不是以犧牲對(duì)方的價(jià)值空間為基礎(chǔ)的,而是一種因地制宜,按需索取的雙贏模式。為什么要這么說(shuō)呢?我們可以根據(jù)不同的交付模式簡(jiǎn)單分析一下。

以終為始 – 交付模式(toB)

其實(shí)流計(jì)算產(chǎn)品面向B端企業(yè),B端產(chǎn)品最終也是面向C端用戶的,那么云上流計(jì)算產(chǎn)品的交付模式對(duì)于C端用戶有什么影響嗎?這一點(diǎn)我們是確認(rèn)的,就是不論流計(jì)算產(chǎn)品怎么交付到B端用戶,C端用戶都是不受影響的。那么B端用戶就需要根據(jù)自己的企業(yè)特點(diǎn)選擇不同的流計(jì)算產(chǎn)品交付模式。

那么,到底有幾種流計(jì)算產(chǎn)品交付模式,可以供B端企業(yè)進(jìn)行選擇呢?常見(jiàn)的有4種可選的交付模式,即:On-premise,IaaS,PaaS和SaaS。

那么這幾種交付模式的不同完全是在產(chǎn)品在面向C端用戶之前所需要的工作分工進(jìn)行區(qū)別的,那么我們要想一
當(dāng)前標(biāo)題:No.0 - 流計(jì)算產(chǎn)品綜合洞察@以終為始
網(wǎng)頁(yè)網(wǎng)址:http://www.dlmjj.cn/article/cdpsojj.html