自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kafka和消息隊列之間的超快速比較

大數(shù)據(jù) Kafka
Kafka最初是由Linkedin社區(qū)開發(fā)的一項技術(shù)。簡而言之,它有點像消息隊列系統(tǒng),但它與消息隊列系統(tǒng)不同的就是它能夠支持pub/sub,可以在許多服務(wù)器上進行擴展,并重新播放消息。

Kafka和消息隊列之間的超快速比較

本文的目的是讓讀者快速了解Kafka與消息隊列之間的關(guān)系,告訴讀者為什么會考慮使用它的原因。以下為譯文。

Kafka最初是由Linkedin社區(qū)開發(fā)的一項技術(shù)。簡而言之,它有點像消息隊列系統(tǒng),但它與消息隊列系統(tǒng)不同的就是它能夠支持pub/sub,可以在許多服務(wù)器上進行擴展,并重新播放消息。

平時你可能不太關(guān)注這些問題,但是當(dāng)你想要采用響應(yīng)式編程風(fēng)格而不是命令式編程風(fēng)格時,上述這些就是你需要進行關(guān)注的了。

命令式編程和響應(yīng)式編程之間的區(qū)別

命令式編程是我們一開始就采用的編程類型。當(dāng)發(fā)生了一些事情,換句話說,事件發(fā)生了,然后你的代碼被告知發(fā)生了該事件。例如,用戶單擊一個按鈕,你在代碼中處理這個事件的地方,就決定了你希望系統(tǒng)接下來觸發(fā)哪些動作。您可以將記錄保存到數(shù)據(jù)庫中,調(diào)用另一個服務(wù),發(fā)送電子郵件,或者將這些動作組合在一起。這里最重要一點是,事件是與這些具體發(fā)生的動作是直接耦合的。

響應(yīng)式編程使用戶能夠響應(yīng)發(fā)生的事件,通常以流的形式出現(xiàn)。多個關(guān)注點可以訂閱相同的事件,并讓事件在它的域中產(chǎn)生影響,而不管其他域發(fā)生了什么。換句話說,它支持松散耦合的代碼,可以很容易地擴展到更多的功能。有可能在不同的棧中編碼的各種大的下流系統(tǒng)會受到事件的影響,甚至是在云的某個地方執(zhí)行的一大堆沒有服務(wù)器的函數(shù)。

從消息隊列到Kafka

為了理解Kafka會給你的架構(gòu)帶來什么,讓我們先談?wù)撘幌孪㈥犃?。我們之所以從消息隊列開始,是因為我們將討論它的局限性,然后看看Kafka是如何解決這些問題的。

消息隊列允許一組訂閱者從隊列的末尾提取一條或多條消息。在消息被移除之前,隊列通常允許執(zhí)行某些級別的事務(wù),以確保在消息被刪除之前執(zhí)行所需的操作。

并不是所有的隊列系統(tǒng)都具有相同的功能,但是一旦消息被處理了,就會從隊列中刪除掉。如果你仔細想想,它其實與命令式編程非常類似,首先得發(fā)生一些事情,然后起始系統(tǒng)決定在下游系統(tǒng)中應(yīng)該執(zhí)行哪些操作。

盡管可以在隊列中擴展多個消費者,但它們都包含相同的功能,而這只是為了處理負載和并行處理消息,換句話說,它不允許你基于相同的事件啟動多個獨立的操作。隊列消息的所有處理器將在相同的域中執(zhí)行相同類型的邏輯。這意味著隊列中的消息實際上是命令,它適合于命令式編程,而不是一個適合于響應(yīng)式編程的事件。

 

對于隊列,通常在相同的域中為隊列中的每個消息執(zhí)行相同的邏輯

另一方面,使用Kafka,你可以將消息/事件發(fā)布到主題上,它們會被持久化。當(dāng)消費者收到這些消息時,他們也不會被移除掉。這允許你重放消息,但更重要的是,它允許大量的消費者基于相同的消息/事件處理各自不同邏輯。

你仍然可以在相同的域中進行并行處理,但是更重要的是,你還可以添加不同類型的消費者,這些消費者基于相同的事件執(zhí)行不同的邏輯。換句話說,對于Kafka,用戶可以采用一個被動的pub/sub體系結(jié)構(gòu)。

 

不同的邏輯可以由不同的系統(tǒng)基于相同的事件來執(zhí)行

在使用Kafka的情況下,這是可能的,因為信息是保留的,消費者群體的概念也是如此。Kafka的消費者團體在向Kafka詢問關(guān)于某個話題的信息時,將自己定位于Kafka。Kafka將會記錄哪些消息(偏移量)被傳送到哪個消費者組,這樣它就不會再為它服務(wù)了。實際上,它比這要復(fù)雜一些,因為您有許多可用的配置選項來控制這一點,但是我們不需要全面地探索這些選項,只是為了在高層次上理解Kafka。

總結(jié)

Kafka還有其它很多的功能,比如它是如何管理擴展(分區(qū))的、為可靠消息傳遞提供了哪些配置選項等等,但我希望這篇文章足夠好,讓你明白為什么你會考慮采用Kafka而不是好的“ol消息隊列”。 

責(zé)任編輯:龐桂玉 來源: CSDN大數(shù)據(jù)
相關(guān)推薦

2023-03-07 16:12:32

2020-05-17 14:37:37

機器學(xué)習(xí)技術(shù)架構(gòu)

2020-02-20 16:45:39

RabbitMQKafka架構(gòu)

2022-08-07 10:44:00

JSONPython對象

2024-01-11 09:53:16

Kafka中間件編程語言

2019-07-19 07:56:13

消息隊列消息代理消息中間件

2024-08-02 10:55:30

2023-09-06 14:11:03

數(shù)據(jù)庫Redis消息隊列

2019-05-29 14:49:02

KafkaRocketMQRabbitMQ

2017-10-11 15:08:28

消息隊列常見

2017-03-07 12:05:32

大數(shù)據(jù)區(qū)塊鏈分析

2020-07-27 08:24:42

編程語言C語言Java

2024-05-28 08:24:18

2024-05-28 08:31:46

2024-03-20 08:33:00

Kafka線程安全Rebalance

2024-07-01 13:58:07

2009-12-29 15:41:21

2017-10-26 19:47:55

華為

2024-09-13 08:49:45

2023-12-11 13:07:00

消息隊列分布式系統(tǒng)RabbitMQ
點贊
收藏

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