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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
大伙評評理,Kafka與Pulsar 誰更牛?

Apache Kafka(簡稱Kafka)是由LinkedIn公司開發(fā)的分布式消息流平臺,于2011年開源。Kafka是使用Scala和Java編寫的,當(dāng)下已成為最流行的分布式消息流平臺之一。Kafka基于發(fā)布/訂閱模式,具有高吞吐、可持久化、可水平擴(kuò)展、支持流數(shù)據(jù)處理等特性。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供十堰鄖陽網(wǎng)站建設(shè)、十堰鄖陽做網(wǎng)站、十堰鄖陽網(wǎng)站設(shè)計、十堰鄖陽網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、十堰鄖陽企業(yè)網(wǎng)站模板建站服務(wù),10年十堰鄖陽做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

Apache Pulsar(簡稱Pulsar)是雅虎開發(fā)的“下一代云原生分布式消息流平臺”,于2016年開源,目前也在快速發(fā)展中。Pulsar集消息、存儲、輕量化函數(shù)式計算為一體,采用計算與存儲分離架構(gòu)設(shè)計,支持多租戶、持久化存儲、多機(jī)房跨區(qū)域數(shù)據(jù)復(fù)制,具有強一致性、高吞吐、低延時及高可擴(kuò)展性等流數(shù)據(jù)存儲特性。

Kafka與Pulsar都是優(yōu)秀的分布式消息流平臺,它們都提供了以下基礎(chǔ)功能:

(1) 消息系統(tǒng):Kafka與Pulsar都可以實現(xiàn)基于發(fā)布/訂閱模式的消息系統(tǒng),消息系統(tǒng)可以實現(xiàn)由消息驅(qū)動的程序—生產(chǎn)者負(fù)責(zé)產(chǎn)生并發(fā)送消息到消息系統(tǒng),消息系統(tǒng)將消息投遞給消費者,消費者收到消息后,執(zhí)行自己的邏輯。

這種消息驅(qū)動機(jī)制具有以下優(yōu)點:

  • 系統(tǒng)解耦:生產(chǎn)者與消費者邏輯解耦,互不干預(yù)。如果需要對消息添加新的處理邏輯,則只需要添加新的消費者即可,非常方便。
  • 流量削峰:消息系統(tǒng)作為消息緩沖區(qū),以低成本將上游服務(wù)(生產(chǎn)者)的流量洪峰緩存起來,下游服務(wù)(消費者)按照自身處理能力從消息隊列中讀取數(shù)據(jù)并進(jìn)行處理,避免下游服務(wù)由于大量的請求流量而崩潰。
  • 數(shù)據(jù)冗余:消息系統(tǒng)將數(shù)據(jù)緩存起來,直到數(shù)據(jù)被處理,避免下游服務(wù)由于崩潰下線、網(wǎng)絡(luò)阻塞等原因無法及時處理數(shù)據(jù)而導(dǎo)致數(shù)據(jù)丟失。

(2) 存儲系統(tǒng):Kafka與Pulsar可以存儲大量數(shù)據(jù),并且客戶端控制自己讀取數(shù)據(jù)的位置,所以它們也可以作為存儲系統(tǒng),存儲大量歷史數(shù)據(jù)。

(3) 實時流數(shù)據(jù)管道:Kafka與Pulsar可以構(gòu)建實時流數(shù)據(jù)管道,流數(shù)據(jù)管道從MySQL、MongoDB等數(shù)據(jù)源加載數(shù)據(jù)到Kafka與Pulsar中,其他系統(tǒng)或應(yīng)用就可以穩(wěn)定地從Kafka與Pulsar中獲取數(shù)據(jù),而不需要再與MySQL等數(shù)據(jù)源對接。為此,Kafka提供了Kafka Connect模塊,Pulsar提供了Pulsar IO模塊,它們都可以構(gòu)建實時流數(shù)據(jù)管道。

(4) 流計算應(yīng)用:流計算應(yīng)用不斷地從Kafka與Pulsar中獲取流數(shù)據(jù),并對數(shù)據(jù)進(jìn)行處理,最后將處理結(jié)果輸出到Kafka與Pulsar中(或其他系統(tǒng))。流計算應(yīng)用通常需要根據(jù)業(yè)務(wù)需求對流數(shù)據(jù)進(jìn)行復(fù)雜的數(shù)據(jù)變換,如流數(shù)據(jù)聚合或者join等。為此,Kafka提供了Kafka Streams模塊,Pulsar提供了Pulsar Functions模塊,它們都可以實現(xiàn)流計算應(yīng)用。另外,Kafka與Pulsar也可以與流行的Spark、Flink等分布式計算引擎結(jié)合,構(gòu)建實時流應(yīng)用,實時處理大規(guī)模數(shù)據(jù)。

Kafka與Pulsar都具有(或追求)以下特性

  • 高吞吐、低延遲:它們都具有高吞吐量處理大規(guī)模消息流的能力,并且能夠低延遲處理消息。這也是大多數(shù)消息流平臺追求的目標(biāo)。
  • 持久化、一致性:Kafka與Pulsar都支持將消息持久化存儲,并提供數(shù)據(jù)備份(副本)功能,保證數(shù)據(jù)安全及數(shù)據(jù)一致性,它們都是優(yōu)秀的分布式存儲系統(tǒng)。
  • 高可擴(kuò)展性(伸縮性):Kafka與Pulsar都是分布式系統(tǒng),會將數(shù)據(jù)分片存儲在一組機(jī)器組成的集群中,并支持對集群進(jìn)行擴(kuò)容,從而支持大規(guī)模的數(shù)據(jù)。
  • 故障轉(zhuǎn)移(容錯):Kafka與Pulsar支持故障轉(zhuǎn)移,即集群中某個節(jié)點因故障下線后,并不會影響集群的正常運行,這也是優(yōu)秀的分布式系統(tǒng)的必備功能。

Kafka與Pulsar雖然提供的基礎(chǔ)功能類似,但它們的設(shè)計、架構(gòu)、實現(xiàn)并不相同,本書將深入分析Kafka與Pulsar如何實現(xiàn)一個分布式、高擴(kuò)展、高吞吐、低延遲的消息流平臺。另外,本書也會介紹Kafka與Pulsar中連接器、流計算引擎等功能的應(yīng)用實踐。

Kafka與Pulsar涉及的基礎(chǔ)概念

將Kafka與Pulsar都視為一個簡單的消息系統(tǒng),消息流轉(zhuǎn)流程如下圖所示。

圖中展示了消息系統(tǒng)中的4個基本概念。它們在Kafka與Pulsar中都存在,并且含義相同。

  • 消息Message:Kafka與Pulsar中的數(shù)據(jù)實體。
  • 生產(chǎn)者Producer:發(fā)布消息的應(yīng)用。
  • 消費者Consumer:訂閱消息的應(yīng)用。
  • 主題Topic:Kafka與Pulsar將某一類消息劃分到一個主題,主題是消息的邏輯分組,不同主題的消息互不干預(yù)。

下面結(jié)合一個例子說明上述概念。假如存在一個用戶服務(wù),該用戶服務(wù)創(chuàng)建了一個主題“userTopic”,每當(dāng)有新用戶注冊時,用戶服務(wù)都會將一個消息發(fā)送到該主題中,消息內(nèi)容為“新用戶注冊”。當(dāng)前有兩個服務(wù)訂閱了該主題的消息:權(quán)益服務(wù)和權(quán)限服務(wù)。權(quán)益服務(wù)收到消息后,負(fù)責(zé)給新用戶創(chuàng)建權(quán)益。權(quán)限服務(wù)收到消息后,負(fù)責(zé)給新用戶分配權(quán)限。該例子中的消息即用戶服務(wù)發(fā)送的數(shù)據(jù)實體,生產(chǎn)者是用戶服務(wù)。消費者是權(quán)益服務(wù)與權(quán)限服務(wù)。ka的基礎(chǔ)概念

下面介紹Kafka的一些基礎(chǔ)概念

(1) Kafka消費組:Kafka將多個消費者劃分到一個邏輯分組中,該分組即一個消費組。這個概念比較重要,結(jié)合上面的例子進(jìn)行說明,在Kafka中,權(quán)益服務(wù)所有的消費者都可以加入一個權(quán)益消費組rightsGroup,而權(quán)限服務(wù)所有的消費者都可以加入一個權(quán)限消費組guthorityGroup。不同消費者之間消費消息互不干預(yù)。

(2) Broker:Kafka服務(wù)節(jié)點,可以將Broker理解為一個Kafka的服務(wù)節(jié)點或者服務(wù)進(jìn)程(下面將其統(tǒng)稱為Broker節(jié)點),多個Broker節(jié)點可以組成一個Broker集群。

(3) 分區(qū)Partition:Kafka定義了分區(qū)的概念,一個主題由一個或多個分區(qū)組成,Kafka將一個主題的消息劃分到不同的分區(qū),并將不同分區(qū)存儲到不同的Broker,從而實現(xiàn)分布式存儲(典型的數(shù)據(jù)分片思想),每個分區(qū)都有對應(yīng)的下標(biāo),下標(biāo)從0開始。

(4) 副本Replica:Kafka中每個分區(qū)都有一個或多個副本,其中有1個leader副本,0個或多個follow副本,每個副本都保存了該分區(qū)全部的內(nèi)容。Kafka會將一個分區(qū)的不同副本保存到不同的Broker節(jié)點中,以保證數(shù)據(jù)的安全。本書后面會詳細(xì)分析Kafka副本同步機(jī)制。

(5) AR(Assigned Replicas):分區(qū)的副本列表,即一個分區(qū)所有副本所在Broker的列表。

(6) ISR:分區(qū)中所有與leader副本保持一定程度同步(即不能落后太多)的副本會組成ISR(In-Sync Replicas)集合。ISR集合中包括leader副本,可以將其理解為已同步副本(不一定完全同步,但不會落后太多)。

(7) ACK機(jī)制:ACK(消息確認(rèn))機(jī)制是消息系統(tǒng)中的一個很重要的機(jī)制,消息系統(tǒng)ACK機(jī)制與HTTP的ACK機(jī)制非常類似。消息系統(tǒng)ACK機(jī)制可以分為兩部分:

  • mBroker收到生產(chǎn)者發(fā)送的消息并成功存儲這些消息后,返回成功響應(yīng)(可以將該成功響應(yīng)理解為一種ACK)給生產(chǎn)者,這時生產(chǎn)者可以認(rèn)為消息已經(jīng)發(fā)送成功,否則生產(chǎn)者可能需要做一些補償操作,如重發(fā)消息。
  • m消費者收到Broker投遞的消息并成功處理后,返回消費成功響應(yīng)給Broker,Broker收到這些消費成功響應(yīng)后,可以認(rèn)為消費者已經(jīng)成功消費了消息,否則Broker可能需要做一些補償操作,如重新投遞消息。該場景下消費者通常需要將消費成功的消息位置(或者消息Id等)發(fā)送給Broker,并且Broker需要存儲這些消費成功的位置,以便后續(xù)消費者重啟后從該位置繼續(xù)消費。該場景也是我們關(guān)注的重點。

在Kafka中,每個消息都存在一個偏移量offset,如果將一個Kafka主題理解為一個簡單的消息數(shù)組,那么可以將消息偏移量理解為該消息在該數(shù)組中的索引。消費者會將最新消費成功的消息的下一個偏移量發(fā)送給Broker(代表該偏移量前面的消息都已經(jīng)消費成功),Broker會存儲這些偏移量,以記錄消費者的最新消費位置。為了方便描述,本書后面將消費者提交ACK信息中的偏移量稱為ACK偏移量。

另外,Kafka與Pulsar都使用ZooKeeper存儲元數(shù)據(jù),完成分布式協(xié)作等操作,ZooKeeper是一種分布式協(xié)作服務(wù),專注于協(xié)作多個分布式進(jìn)程之間的活動,可以幫助開發(fā)人員專注于應(yīng)用程序的核心邏輯,而不必?fù)?dān)心應(yīng)用程序的分布式特性。

下圖展示了Kafka集群的基礎(chǔ)架構(gòu):

下面介紹Pulsar的基礎(chǔ)概念

(1) Pulsar訂閱組:Pulsar可以將多個消費者綁定到一個訂閱組中,類似于Kafka的消費組。同樣使用前面“用戶服務(wù)”的例子進(jìn)行說明,在Pulsar中,權(quán)益服務(wù)所有的消費者都可以綁定一個權(quán)益訂閱組rightsSubscription,而權(quán)限服務(wù)所有的消費者都可以綁定一個權(quán)限訂閱組guthoritySubscription,不同訂閱組之間消費消息互不干預(yù)。

(2) 非分區(qū)主題、分區(qū)主題:Kafka中每個分區(qū)都與一個Broker綁定,而Pulsar中每個主題都與一個Broker綁定,某主題的消息固定發(fā)送給相應(yīng)的Broker節(jié)點。而Pulsar中也有“分區(qū)主題”的概念,分區(qū)主題由一組非分區(qū)的內(nèi)部主題組成(下面將Pulsar中組成分區(qū)主題的非分區(qū)內(nèi)部主題簡稱為內(nèi)部主題),每一個內(nèi)部主題都與一個Broker綁定,這樣一個分區(qū)主題可以將消息發(fā)送到多個Broker,避免Pulsar單個主題的性能受限于單個Broker節(jié)點。

(3) Broker:Pulsar集群中的服務(wù)節(jié)點。需要注意,Pulsar由于采用計算、存儲分離的架構(gòu),因此Pulsar Broker節(jié)點只負(fù)責(zé)計算,并不負(fù)責(zé)存儲,Pulsar Broker節(jié)點會完成數(shù)據(jù)檢驗、負(fù)載均衡等工作,并將消息轉(zhuǎn)發(fā)給Bookie節(jié)點。

(4) Bookie:Pulsar利用BookKeeper服務(wù)實現(xiàn)存儲功能,BookKeeper中的節(jié)點被稱為Bookie節(jié)點。BookKeeper框架是一個分布式日志存儲服務(wù)框架,本書后面會詳細(xì)分析它。Pulsar中的Bookie節(jié)點負(fù)責(zé)完成消息存儲工作。

(5) Ledger:BookKeeper的數(shù)據(jù)集合,生產(chǎn)者會將數(shù)據(jù)寫入Ledger,而消費者從Ledger中讀取數(shù)據(jù)。為了數(shù)據(jù)安全,BookKeeper會將一個Ledger的數(shù)據(jù)存儲到多個Bookie節(jié)點中,實現(xiàn)數(shù)據(jù)備份。

(6) Entry:Ledger中的數(shù)據(jù)單元,Ledger中的每個數(shù)據(jù)都是一個Entry??梢詫edger理解為一個賬本,Entry則是賬本中的一個條目。

(7) 租戶、命名空間:Pulsar定義了租戶、命名空間的概念,Pulsar是一個多租戶系統(tǒng),它給不同的租戶分配不同的資源,并保證不同租戶之間的數(shù)據(jù)相互隔離,互不干預(yù),這樣可以支持多團(tuán)隊、多用戶同時使用一個Pulsar服務(wù)。每個租戶還可以創(chuàng)建多個命名空間,命名空間為主題的邏輯分組??梢詫ulsar理解為一個大房子,每個租戶是房子里的一個房間,并且這個房間的空間劃分為不同的區(qū)域(命名空間),不同區(qū)域存放不同的物件。例如,用戶服務(wù)可以創(chuàng)建一個租戶“user”,存儲用戶服務(wù)的消息。該租戶可以按自己的業(yè)務(wù)場景,創(chuàng)建多個命名空間,存放不同的主題,如下圖所示。

(8) Cluster集群:Pulsar為集群定義了一個Cluster概念,每個Pulsar Broker節(jié)點都運行在一個Cluster集群下,不同的Cluster集群之間可以相互復(fù)制數(shù)據(jù),從而實現(xiàn)跨地域復(fù)制。

(9) ACK機(jī)制:與Kafka類似,Pulsar同樣需要完成“Broker存儲消息后返回成功響應(yīng)給生產(chǎn)者”“消費者成功處理消息后發(fā)送ACK給Broker”。Pulsar中的每個消息都有一個消息Id,Pulsar消費者會將消費成功的消息Id作為ACK請求內(nèi)容發(fā)送給Broker。

下圖展示了Pulsar集群的基礎(chǔ)架構(gòu)。

? ?


名稱欄目:大伙評評理,Kafka與Pulsar 誰更牛?
文章地址:http://www.dlmjj.cn/article/dphgppi.html