精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用于實(shí)時(shí)大數(shù)據(jù)處理的Lambda架構(gòu)

大數(shù)據(jù)
Lambda架構(gòu)的目標(biāo)是設(shè)計(jì)出一個(gè)能滿(mǎn)足實(shí)時(shí)大數(shù)據(jù)系統(tǒng)關(guān)鍵特性的架構(gòu),包括有:高容錯(cuò)、低延時(shí)和可擴(kuò)展等。Lambda架構(gòu)整合離線計(jì)算和實(shí)時(shí)計(jì)算,融合不可變性(Immunability),讀寫(xiě)分離和復(fù)雜性隔離等一系列架構(gòu)原則,可集成Hadoop,Kafka,Storm,Spark,Hbase等各類(lèi)大數(shù)據(jù)組件。

1.Lambda架構(gòu)背景介紹

Lambda架構(gòu)是由Storm的作者Nathan Marz提出的一個(gè)實(shí)時(shí)大數(shù)據(jù)處理框架。Marz在Twitter工作期間開(kāi)發(fā)了著名的實(shí)時(shí)大數(shù)據(jù)處理框架Storm,Lambda架構(gòu)是其根據(jù)多年進(jìn)行分布式大數(shù)據(jù)系統(tǒng)的經(jīng)驗(yàn)總結(jié)提煉而成。

Lambda架構(gòu)的目標(biāo)是設(shè)計(jì)出一個(gè)能滿(mǎn)足實(shí)時(shí)大數(shù)據(jù)系統(tǒng)關(guān)鍵特性的架構(gòu),包括有:高容錯(cuò)、低延時(shí)和可擴(kuò)展等。Lambda架構(gòu)整合離線計(jì)算和實(shí)時(shí)計(jì)算,融合不可變性(Immunability),讀寫(xiě)分離和復(fù)雜性隔離等一系列架構(gòu)原則,可集成Hadoop,Kafka,Storm,Spark,Hbase等各類(lèi)大數(shù)據(jù)組件。

2.大數(shù)據(jù)系統(tǒng)的關(guān)鍵特性

Marz認(rèn)為大數(shù)據(jù)系統(tǒng)應(yīng)具有以下的關(guān)鍵特性:

  • Robust and fault-tolerant(容錯(cuò)性和魯棒性):對(duì)大規(guī)模分布式系統(tǒng)來(lái)說(shuō),機(jī)器是不可靠的,可能會(huì)當(dāng)機(jī),但是系統(tǒng)需要是健壯、行為正確的,即使是遇到機(jī)器錯(cuò)誤。除了機(jī)器錯(cuò)誤,人更可能會(huì)犯錯(cuò)誤。在軟件開(kāi)發(fā)中難免會(huì)有一些Bug,系統(tǒng)必須對(duì)有Bug的程序?qū)懭氲腻e(cuò)誤數(shù)據(jù)有足夠的適應(yīng)能力,所以比機(jī)器容錯(cuò)性更加重要的容錯(cuò)性是人為操作容錯(cuò)性。對(duì)于大規(guī)模的分布式系統(tǒng)來(lái)說(shuō),人和機(jī)器的錯(cuò)誤每天都可能會(huì)發(fā)生,如何應(yīng)對(duì)人和機(jī)器的錯(cuò)誤,讓系統(tǒng)能夠從錯(cuò)誤中快速恢復(fù)尤其重要。
  • Low latency reads and updates(低延時(shí)):很多應(yīng)用對(duì)于讀和寫(xiě)操作的延時(shí)要求非常高,要求對(duì)更新和查詢(xún)的響應(yīng)是低延時(shí)的。
  • Scalable(橫向擴(kuò)容):當(dāng)數(shù)據(jù)量/負(fù)載增大時(shí),可擴(kuò)展性的系統(tǒng)通過(guò)增加更多的機(jī)器資源來(lái)維持性能。也就是常說(shuō)的系統(tǒng)需要線性可擴(kuò)展,通常采用scale out(通過(guò)增加機(jī)器的個(gè)數(shù))而不是scale up(通過(guò)增強(qiáng)機(jī)器的性能)。
  • General(通用性):系統(tǒng)需要能夠適應(yīng)廣泛的應(yīng)用,包括金融領(lǐng)域、社交網(wǎng)絡(luò)、電子商務(wù)數(shù)據(jù)分析等。
  • Extensible(可擴(kuò)展):需要增加新功能、新特性時(shí),可擴(kuò)展的系統(tǒng)能以最小的開(kāi)發(fā)代價(jià)來(lái)增加新功能。
  • Allows ad hoc queries(方便查詢(xún)):數(shù)據(jù)中蘊(yùn)含有價(jià)值,需要能夠方便、快速的查詢(xún)出所需要的數(shù)據(jù)。
  • Minimal maintenance(易于維護(hù)):系統(tǒng)要想做到易于維護(hù),其關(guān)鍵是控制其復(fù)雜性,越是復(fù)雜的系統(tǒng)越容易出錯(cuò)、越難維護(hù)。
  • Debuggable(易調(diào)試):當(dāng)出問(wèn)題時(shí),系統(tǒng)需要有足夠的信息來(lái)調(diào)試錯(cuò)誤,找到問(wèn)題的根源。其關(guān)鍵是能夠追根溯源到每個(gè)數(shù)據(jù)生成點(diǎn)。

3.數(shù)據(jù)系統(tǒng)的本質(zhì)

為了設(shè)計(jì)出能滿(mǎn)足前述的大數(shù)據(jù)關(guān)鍵特性的系統(tǒng),我們需要對(duì)數(shù)據(jù)系統(tǒng)有本質(zhì)性的理解。我們可將數(shù)據(jù)系統(tǒng)簡(jiǎn)化為:

數(shù)據(jù)系統(tǒng) = 數(shù)據(jù) + 查詢(xún)

從而從數(shù)據(jù)和查詢(xún)兩方面來(lái)認(rèn)識(shí)大數(shù)據(jù)系統(tǒng)的本質(zhì)。

3.1.數(shù)據(jù)的本質(zhì)

3.1.1.數(shù)據(jù)的特性:When & What

我們先從“數(shù)據(jù)”的特性談起。數(shù)據(jù)是一個(gè)不可分割的單位,數(shù)據(jù)有兩個(gè)關(guān)鍵的性質(zhì):When和What。

  • When是指數(shù)據(jù)是與時(shí)間相關(guān)的,數(shù)據(jù)一定是在某個(gè)時(shí)間點(diǎn)產(chǎn)生的。比如Log日志就隱含著按照時(shí)間先后順序產(chǎn)生的數(shù)據(jù),Log前面的日志數(shù)據(jù)一定先于Log后面的日志數(shù)據(jù)產(chǎn)生;消息系統(tǒng)中消息的接受者一定是在消息的發(fā)送者發(fā)送消息后接收到的消息。相比于數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中表的記錄就丟失了時(shí)間先后順序的信息,中間某條記錄可能是在***一條記錄產(chǎn)生后發(fā)生更新的。對(duì)于分布式系統(tǒng),數(shù)據(jù)的時(shí)間特性尤其重要。分布式系統(tǒng)中數(shù)據(jù)可能產(chǎn)生于不同的系統(tǒng)中,時(shí)間決定了數(shù)據(jù)發(fā)生的全局先后順序。比如對(duì)一個(gè)值做算術(shù)運(yùn)算,先+2,后*3,與先*3,后+2,得到的結(jié)果完全不同。數(shù)據(jù)的時(shí)間性質(zhì)決定了數(shù)據(jù)的全局發(fā)生先后,也就決定了數(shù)據(jù)的結(jié)果。
  • What是指數(shù)據(jù)的本身。由于數(shù)據(jù)跟某個(gè)時(shí)間點(diǎn)相關(guān),所以數(shù)據(jù)的本身是不可變的(immutable),過(guò)往的數(shù)據(jù)已經(jīng)成為事實(shí)(Fact),你不可能回到過(guò)去的某個(gè)時(shí)間點(diǎn)去改變數(shù)據(jù)事實(shí)。這也就意味著對(duì)數(shù)據(jù)的操作其實(shí)只有兩種:讀取已存在的數(shù)據(jù)和添加更多的新數(shù)據(jù)。采用數(shù)據(jù)庫(kù)的記法,CRUD就變成了CR,Update和Delete本質(zhì)上其實(shí)是新產(chǎn)生的數(shù)據(jù)信息,用C來(lái)記錄。

3.1.2.數(shù)據(jù)的存儲(chǔ):Store Everything Rawly and Immutably

根據(jù)上述對(duì)數(shù)據(jù)本質(zhì)特性的分析,Lamba架構(gòu)中對(duì)數(shù)據(jù)的存儲(chǔ)采用的方式是:數(shù)據(jù)不可變,存儲(chǔ)所有數(shù)據(jù)。

通過(guò)采用不可變方式存儲(chǔ)所有的數(shù)據(jù),可以有如下好處:

  • 簡(jiǎn)單。采用不可變的數(shù)據(jù)模型,存儲(chǔ)數(shù)據(jù)時(shí)只需要簡(jiǎn)單的往主數(shù)據(jù)集后追加數(shù)據(jù)即可。相比于采用可變的數(shù)據(jù)模型,為了Update操作,數(shù)據(jù)通常需要被索引,從而能快速找到要更新的數(shù)據(jù)去做更新操作。
  • 應(yīng)對(duì)人為和機(jī)器的錯(cuò)誤。前述中提到人和機(jī)器每天都可能會(huì)出錯(cuò),如何應(yīng)對(duì)人和機(jī)器的錯(cuò)誤,讓系統(tǒng)能夠從錯(cuò)誤中快速恢復(fù)極其重要。不可變性(Immutability)和重新計(jì)算(Recomputation)則是應(yīng)對(duì)人為和機(jī)器錯(cuò)誤的常用方法。采用可變數(shù)據(jù)模型,引發(fā)錯(cuò)誤的數(shù)據(jù)有可能被覆蓋而丟失。相比于采用不可變的數(shù)據(jù)模型,因?yàn)樗械臄?shù)據(jù)都在,引發(fā)錯(cuò)誤的數(shù)據(jù)也在。修復(fù)的方法就可以簡(jiǎn)單的是遍歷數(shù)據(jù)集上存儲(chǔ)的所有的數(shù)據(jù),丟棄錯(cuò)誤的數(shù)據(jù),重新計(jì)算得到Views(View的概念參考4.1.2)。重新計(jì)算的關(guān)鍵點(diǎn)在于利用數(shù)據(jù)的時(shí)間特性決定的全局次序,依次順序重新執(zhí)行,必然能得到正確的結(jié)果。

當(dāng)前業(yè)界有很多采用不可變數(shù)據(jù)模型來(lái)存儲(chǔ)所有數(shù)據(jù)的例子。比如分布式數(shù)據(jù)庫(kù)Datomic,基于不可變數(shù)據(jù)模型來(lái)存儲(chǔ)數(shù)據(jù),從而簡(jiǎn)化了設(shè)計(jì)。分布式消息中間件Kafka,基于Log日志,以追加append-only的方式來(lái)存儲(chǔ)消息。

3.2.查詢(xún)

查詢(xún)是個(gè)什么概念?Marz給查詢(xún)?nèi)缦乱粋€(gè)簡(jiǎn)單的定義:

Query = Function(All Data)

該等式的含義是:查詢(xún)是應(yīng)用于數(shù)據(jù)集上的函數(shù)。該定義看似簡(jiǎn)單,卻幾乎囊括了數(shù)據(jù)庫(kù)和數(shù)據(jù)系統(tǒng)的所有領(lǐng)域:RDBMS、索引、OLAP、OLTP、MapReduce、EFL、分布式文件系統(tǒng)、NoSQL等都可以用這個(gè)等式來(lái)表示。

讓我們進(jìn)一步深入看一下函數(shù)的特性,從而挖掘函數(shù)自身的特點(diǎn)來(lái)執(zhí)行查詢(xún)。

有一類(lèi)稱(chēng)為Monoid特性的函數(shù)應(yīng)用非常廣泛。Monoid的概念來(lái)源于范疇學(xué)(Category Theory),其一個(gè)重要特性是滿(mǎn)足結(jié)合律。如整數(shù)的加法就滿(mǎn)足Monoid特性:

(a+b)+c=a+(b+c)

不滿(mǎn)足Monoid特性的函數(shù)很多時(shí)候可以轉(zhuǎn)化成多個(gè)滿(mǎn)足Monoid特性的函數(shù)的運(yùn)算。如多個(gè)數(shù)的平均值A(chǔ)vg函數(shù),多個(gè)平均值沒(méi)法直接通過(guò)結(jié)合來(lái)得到最終的平均值,但是可以拆成分母除以分子,分母和分子都是整數(shù)的加法,從而滿(mǎn)足Monoid特性。

Monoid的結(jié)合律特性在分布式計(jì)算中極其重要,滿(mǎn)足Monoid特性意味著我們可以將計(jì)算分解到多臺(tái)機(jī)器并行運(yùn)算,然后再結(jié)合各自的部分運(yùn)算結(jié)果得到最終結(jié)果。同時(shí)也意味著部分運(yùn)算結(jié)果可以?xún)?chǔ)存下來(lái)被別的運(yùn)算共享利用(如果該運(yùn)算也包含相同的部分子運(yùn)算),從而減少重復(fù)運(yùn)算的工作量。


Lambda

4.Lambda架構(gòu)

有了上面對(duì)數(shù)據(jù)系統(tǒng)本質(zhì)的探討,下面我們來(lái)討論大數(shù)據(jù)系統(tǒng)的關(guān)鍵問(wèn)題:如何實(shí)時(shí)地在任意大數(shù)據(jù)集上進(jìn)行查詢(xún)?大數(shù)據(jù)再加上實(shí)時(shí)計(jì)算,問(wèn)題的難度比較大。

最簡(jiǎn)單的方法是,根據(jù)前述的查詢(xún)等式Query = Function(All Data),在全體數(shù)據(jù)集上在線運(yùn)行查詢(xún)函數(shù)得到結(jié)果。但如果數(shù)據(jù)量比較大,該方法的計(jì)算代價(jià)太大了,所以不現(xiàn)實(shí)。

Lambda架構(gòu)通過(guò)分解的三層架構(gòu)來(lái)解決該問(wèn)題:Batch Layer,Speed Layer和Serving Layer。

4.1.Batch Layer

Batch Layer的功能主要有兩點(diǎn):

  • 存儲(chǔ)數(shù)據(jù)集
  • 在數(shù)據(jù)集上預(yù)先計(jì)算查詢(xún)函數(shù),構(gòu)建查詢(xún)所對(duì)應(yīng)的View

4.1.1.儲(chǔ)存數(shù)據(jù)集

根據(jù)前述對(duì)數(shù)據(jù)When&What特性的討論,Batch Layer采用不可變模型存儲(chǔ)所有的數(shù)據(jù)。因?yàn)閿?shù)據(jù)量比較大,可以采用HDFS之類(lèi)的大數(shù)據(jù)儲(chǔ)存方案。如果需要按照數(shù)據(jù)產(chǎn)生的時(shí)間先后順序存放數(shù)據(jù),可以考慮如InfluxDB之類(lèi)的時(shí)間序列數(shù)據(jù)庫(kù)(TSDB)存儲(chǔ)方案。

4.1.2.構(gòu)建查詢(xún)View

上面說(shuō)到根據(jù)等式Query = Function(All Data),在全體數(shù)據(jù)集上在線運(yùn)行查詢(xún)函數(shù)得到結(jié)果的代價(jià)太大。但如果我們預(yù)先在數(shù)據(jù)集上計(jì)算并保存查詢(xún)函數(shù)的結(jié)果,查詢(xún)的時(shí)候就可以直接返回結(jié)果(或通過(guò)簡(jiǎn)單的加工運(yùn)算就可得到結(jié)果)而無(wú)需重新進(jìn)行完整費(fèi)時(shí)的計(jì)算了。這兒可以把Batch Layer看成是一個(gè)數(shù)據(jù)預(yù)處理的過(guò)程。我們把針對(duì)查詢(xún)預(yù)先計(jì)算并保存的結(jié)果稱(chēng)為View,View是Lamba架構(gòu)的一個(gè)核心概念,它是針對(duì)查詢(xún)的優(yōu)化,通過(guò)View即可以快速得到查詢(xún)結(jié)果。


如果采用HDFS來(lái)儲(chǔ)存數(shù)據(jù),我們就可以使用MapReduce來(lái)在數(shù)據(jù)集上構(gòu)建查詢(xún)的View。Batch Layer的工作可以簡(jiǎn)單的用如下偽碼表示:


該工作看似簡(jiǎn)單,實(shí)質(zhì)非常強(qiáng)大。任何人為或機(jī)器發(fā)生的錯(cuò)誤,都可以通過(guò)修正錯(cuò)誤后重新計(jì)算來(lái)恢復(fù)得到正確結(jié)果。

對(duì)View的理解:
View是一個(gè)和業(yè)務(wù)關(guān)聯(lián)性比較大的概念,View的創(chuàng)建需要從業(yè)務(wù)自身的需求出發(fā)。一個(gè)通用的數(shù)據(jù)庫(kù)查詢(xún)系統(tǒng),查詢(xún)對(duì)應(yīng)的函數(shù)千變?nèi)f化,不可能窮舉。但是如果從業(yè)務(wù)自身的需求出發(fā),可以發(fā)現(xiàn)業(yè)務(wù)所需要的查詢(xún)常常是有限的。Batch Layer需要做的一件重要的工作就是根據(jù)業(yè)務(wù)的需求,考察可能需要的各種查詢(xún),根據(jù)查詢(xún)定義其在數(shù)據(jù)集上對(duì)應(yīng)的Views。

4.2.Speed Layer

Batch Layer可以很好的處理離線數(shù)據(jù),但有很多場(chǎng)景數(shù)據(jù)不斷實(shí)時(shí)生成,并且需要實(shí)時(shí)查詢(xún)處理。Speed Layer正是用來(lái)處理增量的實(shí)時(shí)數(shù)據(jù)。

Speed Layer和Batch Layer比較類(lèi)似,對(duì)數(shù)據(jù)進(jìn)行計(jì)算并生成Realtime View,其主要區(qū)別在于:

  • Speed Layer處理的數(shù)據(jù)是最近的增量數(shù)據(jù)流,Batch Layer處理的全體數(shù)據(jù)集
  • Speed Layer為了效率,接收到新數(shù)據(jù)時(shí)不斷更新Realtime View,而B(niǎo)atch Layer根據(jù)全體離線數(shù)據(jù)集直接得到Batch View。

Lambda架構(gòu)將數(shù)據(jù)處理分解為Batch Layer和Speed Layer有如下優(yōu)點(diǎn):

  • 容錯(cuò)性。Speed Layer中處理的數(shù)據(jù)也不斷寫(xiě)入Batch Layer,當(dāng)Batch Layer中重新計(jì)算的數(shù)據(jù)集包含Speed Layer處理的數(shù)據(jù)集后,當(dāng)前的Realtime View就可以丟棄,這也就意味著Speed Layer處理中引入的錯(cuò)誤,在Batch Layer重新計(jì)算時(shí)都可以得到修正。這點(diǎn)也可以看成是CAP理論中的最終一致性(Eventual Consistency)的體現(xiàn)。
  •  
  • 復(fù)雜性隔離。Batch Layer處理的是離線數(shù)據(jù),可以很好的掌控。Speed Layer采用增量算法處理實(shí)時(shí)數(shù)據(jù),復(fù)雜性比Batch Layer要高很多。通過(guò)分開(kāi)Batch Layer和Speed Layer,把復(fù)雜性隔離到Speed Layer,可以很好的提高整個(gè)系統(tǒng)的魯棒性和可靠性。

4.3.Serving Layer

Lambda架構(gòu)的Serving Layer用于響應(yīng)用戶(hù)的查詢(xún)請(qǐng)求,合并Batch View和Realtime View中的結(jié)果數(shù)據(jù)集到最終的數(shù)據(jù)集。

這兒涉及到數(shù)據(jù)如何合并的問(wèn)題。前面我們討論了查詢(xún)函數(shù)的Monoid性質(zhì),如果查詢(xún)函數(shù)滿(mǎn)足Monoid性質(zhì),即滿(mǎn)足結(jié)合率,只需要簡(jiǎn)單的合并Batch View和Realtime View中的結(jié)果數(shù)據(jù)集即可。否則的話(huà),可以把查詢(xún)函數(shù)轉(zhuǎn)換成多個(gè)滿(mǎn)足Monoid性質(zhì)的查詢(xún)函數(shù)的運(yùn)算,單獨(dú)對(duì)每個(gè)滿(mǎn)足Monoid性質(zhì)的查詢(xún)函數(shù)進(jìn)行Batch View和Realtime View中的結(jié)果數(shù)據(jù)集合并,然后再計(jì)算得到最終的結(jié)果數(shù)據(jù)集。另外也可以根據(jù)業(yè)務(wù)自身的特性,運(yùn)用業(yè)務(wù)自身的規(guī)則來(lái)對(duì)Batch View和Realtime View中的結(jié)果數(shù)據(jù)集合并。

 

5.Big Picture

上面分別討論了Lambda架構(gòu)的三層:Batch Layer,Speed Layer和Serving Layer。下圖給出了Lambda架構(gòu)的一個(gè)完整視圖和流程。

數(shù)據(jù)流進(jìn)入系統(tǒng)后,同時(shí)發(fā)往Batch Layer和Speed Layer處理。Batch Layer以不可變模型離線存儲(chǔ)所有數(shù)據(jù)集,通過(guò)在全體數(shù)據(jù)集上不斷重新計(jì)算構(gòu)建查詢(xún)所對(duì)應(yīng)的Batch Views。Speed Layer處理增量的實(shí)時(shí)數(shù)據(jù)流,不斷更新查詢(xún)所對(duì)應(yīng)的Realtime Views。Serving Layer響應(yīng)用戶(hù)的查詢(xún)請(qǐng)求,合并Batch View和Realtime View中的結(jié)果數(shù)據(jù)集到最終的數(shù)據(jù)集。

5.1.Lambda架構(gòu)組件選型

下圖給出了Lambda架構(gòu)中各個(gè)層常用的組件。數(shù)據(jù)流存儲(chǔ)可選用基于不可變?nèi)罩镜姆植际较⑾到y(tǒng)Kafka;Batch Layer數(shù)據(jù)集的存儲(chǔ)可選用Hadoop的HDFS,或者是阿里云的ODPS;Batch View的預(yù)計(jì)算可以選用MapReduce或Spark;Batch View自身結(jié)果數(shù)據(jù)的存儲(chǔ)可使用MySQL(查詢(xún)少量的最近結(jié)果數(shù)據(jù)),或HBase(查詢(xún)大量的歷史結(jié)果數(shù)據(jù))。Speed Layer增量數(shù)據(jù)的處理可選用Storm或Spark Streaming;Realtime View增量結(jié)果數(shù)據(jù)集為了滿(mǎn)足實(shí)時(shí)更新的效率,可選用Redis等內(nèi)存NoSQL。

5.2.Lambda架構(gòu)組件選型原則

Lambda架構(gòu)是個(gè)通用框架,各個(gè)層選型時(shí)不要局限時(shí)上面給出的組件,特別是對(duì)于View的選型。從我對(duì)Lambda架構(gòu)的實(shí)踐來(lái)看,因?yàn)閂iew是個(gè)和業(yè)務(wù)關(guān)聯(lián)性非常大的概念,View選擇組件時(shí)關(guān)鍵是要根據(jù)業(yè)務(wù)的需求,來(lái)選擇最適合查詢(xún)的組件。不同的View組件的選擇要深入挖掘數(shù)據(jù)和計(jì)算自身的特點(diǎn),從而選擇出最適合數(shù)據(jù)和計(jì)算自身特點(diǎn)的組件,同時(shí)不同的View可以選擇不同的組件。

6.Lambda架構(gòu) vs. Event Sourcing vs. CQRS

在Lambda架構(gòu)身上可以看到很多現(xiàn)有設(shè)計(jì)思想和架構(gòu)的影子,如Event Sourcing和CQRS,這兒我們把它們和Lambda架構(gòu)做一結(jié)合對(duì)比,從而去更深入的理解Lambda架構(gòu)。

6.1.事件溯源(Event Sourcing)vs. Lambda架構(gòu)

事件溯源(Event Sourcing)是由大名鼎鼎的Martin Flower大叔提出來(lái)的架構(gòu)模式。Event Sourcing本質(zhì)上是一種數(shù)據(jù)持久化的方式,它將引發(fā)變化的事件(Event)本身存儲(chǔ)下來(lái)。相比于傳統(tǒng)數(shù)據(jù)是持久化方式,存儲(chǔ)的是事件引發(fā)的結(jié)果,而非事件本身,這樣我們?cè)诒4娼Y(jié)果的同時(shí),實(shí)際上失去了追溯導(dǎo)致結(jié)果原因的機(jī)會(huì)。

這兒可以看到Lambda架構(gòu)中數(shù)據(jù)集的存儲(chǔ)和Event Sourcing中的思想是完全一致的,本質(zhì)都是采用不可變的數(shù)據(jù)模型存儲(chǔ)引發(fā)變化的事件而非變化產(chǎn)生的結(jié)果。從而在發(fā)生錯(cuò)誤的時(shí)候,能夠追本溯源,找到發(fā)生錯(cuò)誤的根源,通過(guò)重新計(jì)算丟棄錯(cuò)誤的信息來(lái)恢復(fù)系統(tǒng),達(dá)到系統(tǒng)的容錯(cuò)性。

6.2.CQRS vs. Lambda架構(gòu)

CQRS (Command Query Responsibility Segregation)將對(duì)數(shù)據(jù)的修改操作和查詢(xún)操作分離,其本質(zhì)和Lambda架構(gòu)一樣,也是一種形式的讀寫(xiě)分離。在Lambda架構(gòu)中,數(shù)據(jù)以不可變的方式存儲(chǔ)下來(lái)(寫(xiě)操作),轉(zhuǎn)換成查詢(xún)所對(duì)應(yīng)的Views,查詢(xún)從View中直接得到結(jié)果數(shù)據(jù)(讀操作)。

讀寫(xiě)分離將讀和寫(xiě)兩個(gè)視角進(jìn)行分離,帶來(lái)的好處是復(fù)雜性的隔離,從而簡(jiǎn)化系統(tǒng)的設(shè)計(jì)。相比于傳統(tǒng)做法中的將讀和寫(xiě)操作放在一起的處理方式,對(duì)于讀寫(xiě)操作業(yè)務(wù)非常復(fù)雜的系統(tǒng),只會(huì)使系統(tǒng)變得異常復(fù)雜,難以維護(hù)。 

7.總結(jié)

本文介紹了Lambda架構(gòu)的基本概念。Lambda架構(gòu)通過(guò)對(duì)數(shù)據(jù)和查詢(xún)的本質(zhì)認(rèn)識(shí),融合了不可變性(Immunability),讀寫(xiě)分離和復(fù)雜性隔離等一系列架構(gòu)原則,將大數(shù)據(jù)處理系統(tǒng)劃分為Batch Layer, Speed Layer和Serving Layer三層,從而設(shè)計(jì)出一個(gè)能滿(mǎn)足實(shí)時(shí)大數(shù)據(jù)系統(tǒng)關(guān)鍵特性(如高容錯(cuò)、低延時(shí)和可擴(kuò)展等)的架構(gòu)。Lambda架構(gòu)作為一個(gè)通用的大數(shù)據(jù)處理框架,可以很方便的集成Hadoop,Kafka,Storm,Spark,Hbase等各類(lèi)大數(shù)據(jù)組件。

 

責(zé)任編輯:李英杰 來(lái)源: 36大數(shù)據(jù)
相關(guān)推薦

2019-10-10 17:53:36

大數(shù)據(jù)平臺(tái)架構(gòu)LambdaKappa

2016-10-17 13:56:48

大數(shù)據(jù)大數(shù)據(jù)分析

2022-03-01 08:40:34

StormHadoop批處理

2012-05-18 10:49:36

SAP大數(shù)據(jù)HANA

2018-03-08 12:17:38

大數(shù)據(jù)HPCHadoop

2019-06-11 13:22:32

Lambda大數(shù)據(jù)架構(gòu)大數(shù)據(jù)平臺(tái)

2017-07-21 14:22:17

大數(shù)據(jù)大數(shù)據(jù)平臺(tái)數(shù)據(jù)處理

2020-11-02 15:56:04

大數(shù)據(jù)數(shù)據(jù)庫(kù)技術(shù)

2018-12-07 14:50:35

大數(shù)據(jù)數(shù)據(jù)采集數(shù)據(jù)庫(kù)

2016-12-13 11:56:09

大數(shù)據(jù)Hadoop計(jì)算框架

2021-04-13 14:39:08

谷歌Logica語(yǔ)言

2021-07-20 15:37:37

數(shù)據(jù)開(kāi)發(fā)大數(shù)據(jù)Spark

2023-08-25 15:13:16

大數(shù)據(jù)云計(jì)算

2023-11-29 13:56:00

數(shù)據(jù)技巧

2017-02-14 15:37:32

KappaLambda

2022-11-17 11:52:35

pandasPySpark大數(shù)據(jù)

2020-07-22 08:13:22

大數(shù)據(jù)

2012-05-31 14:37:10

Hadoop大數(shù)據(jù)

2018-04-03 10:33:15

大數(shù)據(jù)

2011-12-08 09:56:14

Hadoop
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美激情喷水| 亚洲日本国产精品| 欧美黄色aaaa| 亚洲精品狠狠操| www.99在线| 91网在线看| 久久色视频免费观看| 成人免费网站在线看| 精品无码久久久久久久久| 伊人久久大香线蕉综合网蜜芽 | 国产做受高潮漫动| 精品av一区二区| 精品三级在线观看| 一区二区三区 日韩| gogo久久| 18欧美乱大交hd1984| 蜜桃欧美视频| 亚洲精品网站在线| 久久精品99久久久| 日本国产一区二区三区| 黄色一级片在线| 三上亚洲一区二区| 亚洲人成网在线播放| 91精品人妻一区二区三区四区| 美女写真久久影院| 午夜精品久久久久久久99樱桃| 中文字幕久久综合| 国产在线视频网站| 97精品国产露脸对白| 亚洲最大av在线| 中文字幕人妻丝袜乱一区三区| 99视频一区| 欧美精品久久久久久久免费观看| 国产欧美小视频| 欧美极品在线观看| 亚洲国产欧美一区二区三区久久| 一个人看的视频www| 精品乱码一区二区三区四区| 黑人狂躁日本妞一区二区三区 | 国产精品av久久久久久无| 精品视频在线你懂得| 日韩欧美亚洲一区二区| 91精品999| 91另类视频| 色婷婷久久久综合中文字幕| 人妻少妇被粗大爽9797pw| 免费看电影在线| 亚洲柠檬福利资源导航| 宅男一区二区三区| 欧美成年黄网站色视频| 国产精品视频一二三| 日韩欧美精品在线不卡| 国产精品一区二区三区四区色| 91美女精品福利| 久久青青草综合| 亚洲aⅴ乱码精品成人区| av亚洲产国偷v产偷v自拍| 国产免费一区二区| 天天操天天干天天干| av电影在线观看不卡| 久久久久久国产精品免费免费| 手机看片1024日韩| 91免费观看在线| 日韩av电影免费观看| 国产视频网站在线| 中文字幕国产一区| 黄瓜视频免费观看在线观看www| 麻豆视频在线播放| 一区二区欧美精品| 日韩伦理在线免费观看| 在线男人天堂| 欧美色区777第一页| 亚洲国产日韩欧美在线观看| 91成人精品观看| 精品久久人人做人人爰| 日本黄色特级片| 久久国产中文字幕| 久久91精品国产91久久久| 日本视频www| 视频一区中文字幕| 91精品视频观看| 丰满少妇一级片| 91网上在线视频| 亚洲乱码一区二区三区| av网站免费在线观看| 亚洲亚洲人成综合网络| 男人靠女人免费视频网站| 99久久伊人| 日韩欧美成人激情| 手机免费看av| 欧美搞黄网站| 国产激情综合五月久久| 国产美女精品视频国产| 99精品国产视频| 亚洲精品国产精品国自产观看| 韩国av网站在线| 欧美视频13p| 亚洲18在线看污www麻豆| 国产极品模特精品一二| 中文日韩在线视频| 日韩经典在线观看| 毛片av中文字幕一区二区| 丁香婷婷久久久综合精品国产 | 国产理论片在线观看| 不卡的看片网站| 亚洲一区在线直播| 中文字幕在线看片| 日韩一区二区三区观看| 国产精品久久久久无码av色戒| 一区二区中文| 国产成人91久久精品| 亚洲免费一级片| 国产精品高潮呻吟| 鲁一鲁一鲁一鲁一澡| 日本一区精品视频| 国产亚洲激情在线| 日韩久久久久久久久| 国产乱码精品一区二区三| 欧美日韩一区综合| sm久久捆绑调教精品一区| 91精品国产综合久久久蜜臀粉嫩 | 韩国视频理论视频久久| 夜夜嗨aⅴ一区二区三区| 95精品视频在线| 免费观看亚洲视频| 亚洲成人精品综合在线| 国产午夜精品视频免费不卡69堂| 国产一级二级毛片| 国产一区二区三区av电影| 午夜精品视频在线观看一区二区| 黄色aa久久| 精品久久久三级丝袜| 欧美激情精品久久久久久免费| 日韩—二三区免费观看av| 精品999在线观看| 成人免费高清观看| 日韩女优av电影| 欧美成人aaa片一区国产精品| 开心九九激情九九欧美日韩精美视频电影| 久久精品日韩| 在线天堂资源www在线污| 亚洲精品xxxx| 国产又大又黑又粗免费视频| 成人深夜在线观看| 久久久久99精品成人片| 国产精品中文字幕制服诱惑| 欧美激情一区二区三区在线视频观看 | 午夜18视频在线观看| 亚洲超碰精品一区二区| 日韩成人av一区二区| 亚洲美女黄色| 精品国产乱码久久久久软件| 免费高潮视频95在线观看网站| 亚洲国产日韩精品在线| 国产成人无码精品久在线观看| 99久久夜色精品国产网站| 香港三级韩国三级日本三级| 窝窝社区一区二区| 国产成人欧美在线观看| 福利视频在线导航| 欧美精品一卡二卡| 欧美日韩在线视频免费播放| 国产成人精品aa毛片| 精品无码国产一区二区三区av| 欧美有码在线| 国产激情视频一区| 成人免费看片| 亚洲国产精彩中文乱码av在线播放| 亚洲天堂日韩av| 国产欧美日韩中文久久| 国产乱码一区二区三区四区| 欧美一区高清| 精品免费国产| 国产黄色一区| 欧美夫妻性视频| 亚洲av片在线观看| 欧美午夜精品一区| 久热这里有精品| 91免费视频网址| 天堂av8在线| 国产精品v欧美精品v日本精品动漫| 精品一区二区三区视频日产| av激情成人网| 欧美猛男性生活免费| 午夜影院免费视频| 精品视频在线免费看| 欧美人妻精品一区二区免费看| 99久久精品免费看国产免费软件| 久草综合在线观看| 中出一区二区| 欧美日韩综合网| 久久精品九色| 庆余年2免费日韩剧观看大牛| 午夜在线小视频| 亚洲国产成人精品久久| 伊人网中文字幕| 五月天久久比比资源色| 貂蝉被到爽流白浆在线观看| 99久久精品免费看国产 | 日本学生初尝黑人巨免费视频| 国产亚洲欧美一区在线观看| 中文字幕第10页| 日韩精品欧美精品| 免费人成在线观看视频播放| 欧美日韩国产高清电影| 国产日韩精品久久| 国产一区二区高清在线| 日本a级片电影一区二区| 尤物在线网址| 日韩在线视频一区| 毛片免费在线| 精品99一区二区| 国产美女明星三级做爰| 欧美性猛片aaaaaaa做受| 国产成人精品av久久| 亚洲蜜臀av乱码久久精品蜜桃| b站大片免费直播| 成a人片亚洲日本久久| 午夜av中文字幕| 日本aⅴ精品一区二区三区| 国产精品999视频| 综合视频在线| 亚洲一区二区三区精品视频| 国产一区国产二区国产三区| 国产日本一区二区三区| 我要色综合中文字幕| 国产在线精品一区免费香蕉| 韩国成人漫画| 国产91精品久久久久久| heyzo高清在线| 欧美黑人巨大xxx极品| 黄色片网站在线| 日韩小视频在线观看| 91在线不卡| 国产一区二区三区三区在线观看| 欧美一区二区三区少妇| 亚洲第一福利视频| 丰满少妇高潮在线观看| 日韩欧美视频在线| av一级黄色片| 日韩一区二区三区视频在线| av网站在线免费看| 日韩欧美国产一二三区| japanese国产| 欧美一级电影网站| 国产成人三级在线播放 | 97人人精品| 亚洲欧美日韩精品综合在线观看| 日韩一区欧美| 最新精品视频| 欧美一区亚洲| 成人av在线不卡| 在线国产日韩| 99视频在线免费播放| 免费亚洲视频| www.天天射.com| 精品一区二区综合| 国产伦理在线观看| 成人福利视频在线看| jizz欧美性20| 日本一区二区三区视频视频| 国产馆在线观看| 中文字幕中文乱码欧美一区二区 | 国产大学生视频| 99热精品一区二区| 精品人妻无码一区二区三区换脸| 国产欧美日韩在线| 黑人操日本美女| 亚洲国产精品一区二区久久| 国产精品久久久久久久妇| 日本韩国精品一区二区在线观看| 国产精品国产精品国产| 777午夜精品视频在线播放| 亚洲国产中文字幕在线| 精品一区二区三区四区在线| а√天堂中文在线资源bt在线| 久久精品国亚洲| 成人免费图片免费观看| 国产精品成人v| 精品视频91| 久久国产精品-国产精品| av中文字幕一区二区| 久久人妻无码一区二区| 亚洲深爱激情| 在线观看国产一级片| 成人av在线观| 日本猛少妇色xxxxx免费网站| 亚洲精品中文在线观看| 成年人视频在线免费看| 欧美老女人在线| 天天操天天干天天插| 日韩亚洲综合在线| 激情视频网站在线播放色| 国产日韩在线观看av| 99久久人爽人人添人人澡| 日韩欧美精品在线不卡| 激情六月综合| 污污网站在线观看视频| 91丨porny丨蝌蚪视频| 欧美国产日韩在线观看成人| 欧美日韩在线影院| 精品久久无码中文字幕| 亚洲日韩中文字幕| 超碰在线97国产| 国产三级精品网站| 伊人久久大香线蕉| 日本大片免费看| 久久国产三级精品| 蜜桃无码一区二区三区| 亚洲一区二区3| 国产精品特级毛片一区二区三区| 国产婷婷成人久久av免费高清| 天堂av资源在线观看| 国产精品普通话| 蜜桃一区二区三区| 9i看片成人免费看片| 国产精品自在在线| 深爱五月激情网| 亚洲午夜激情av| 国产绿帽刺激高潮对白| 国产一区二区三区精品久久久 | 久久免费视频这里只有精品| 久久精品资源| 日本在线免费观看一区| 日韩有码电影| 精品丝袜一区二区三区| 国产在线拍揄自揄拍视频 | 久热爱精品视频线路一| 日韩xxxxxxxxx| 91精品国产91热久久久做人人| 色资源在线观看| 欧美成人精品激情在线观看 | 久久久精品国产一区二区三区| 欧美亚洲不卡| 中文字幕在线视频精品| 国产欧美日韩在线看| 国产精品久久久久久久久夜色| 亚洲精品av在线播放| 欧美亚洲系列| 99在线国产| 国产综合久久| 四虎精品一区二区| 亚洲国产三级在线| 国产 日韩 欧美 精品| 欧美成人久久久| 四虎成人精品一区二区免费网站| 亚洲人成网站在线观看播放| 日韩综合一区二区| 成人免费视频入口| 欧美肥妇毛茸茸| 伊人影院蕉久影院在线播放| 69174成人网| 国产精品多人| 精品国产人妻一区二区三区| 午夜精品久久久久久久久久久| 无码精品在线观看| 欧美有码在线视频| 日本在线成人| 秋霞无码一区二区| 久久免费美女视频| 日韩一级在线视频| 深夜福利日韩在线看| 浪潮色综合久久天堂| 一本色道久久综合亚洲精品婷婷| 麻豆免费精品视频| 男人的午夜天堂| 日韩精品一区二区三区视频| 都市激情国产精品| 欧美日韩亚洲一区二区三区在线观看 | 久久久久女教师免费一区| 久久电影在线| 日韩视频免费在线播放| 国产欧美日韩精品a在线观看| 亚洲天堂视频网| 欧美夫妻性生活xx| 日韩深夜影院| 污污网站在线观看视频| 亚洲伊人色欲综合网| 国内三级在线观看| 91免费看国产| 美女黄网久久| 国产精品精品软件男同| 亚洲国产成人久久综合一区| 9i看片成人免费高清| 中文字幕一区二区三区最新| 国产超碰在线一区| 加勒比在线一区| 久久国产精品亚洲| 亚洲aa在线| 国产老头和老头xxxx×| 欧美视频13p| а天堂中文在线官网| 免费国产一区| 国产精品亚洲一区二区三区在线| 99久热在线精品996热是什么| 亚洲人午夜精品免费| 在线观看视频一区二区三区| 黄色一级二级三级| 夜夜精品视频一区二区| 精品美女视频在线观看免费软件|