成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kafka 里面的信息是如何被消費的?

開發 架構 Kafka
作為一個爬蟲工程師,Kafka 對你而言就是一個消息隊列,你只需要掌握如何向里面寫入數據,以及如何讀取數據就可以了。

 作為一個爬蟲工程師,Kafka 對你而言就是一個消息隊列,你只需要掌握如何向里面寫入數據,以及如何讀取數據就可以了。

[[285596]]

請謹記:使用 Kafka 很容易,但對 Kafka 集群進行搭建、維護與調優很麻煩。Kafka 集群需要有專人來維護,不要以為你能輕易勝任這個工作。”本文,以及接下來的幾篇針對 Kafka 的文章,我們面向的對象都是爬蟲工程師或者僅僅需要使用 Kafka 的讀者。關于 Kafka 更深入的底層細節與核心原理,不在我們的討論范圍中。為了解釋方便,文章中對 Kafka 的一些術語會使用一些不太準確但能表明意思的類比。如果你需要在面試中解釋這些術語,還請閱讀Kafka 的官方文檔。

今天我們要討論的一個話題是,Kafka 是如何做到,對單個程序的多個進程而言,能持續消費,斷點續傳和并行消費;對多個程序而言又互不影響,各自獨立。

一個 Kafka 可以有多個不同的隊列,我們把這個隊列叫做Topic,假設其中一個隊列如下圖所示:

 

 

 

 

信息從右邊進去,從左邊出來。如果這是Redis 的列表,那么它彈出一條信息以后,隊列會變成下面這樣:

 

 

 

 

最左邊的信息1不見了。所以即使程序在消費了信息1后立刻關閉,再重新打開,程序也會接著從信息2開始消費,不會把信息1重復消費兩次。

但我如果有兩個程序呢?程序1讀取每一條數據,再轉存到數據庫。程序2讀取每一條數據,再檢查是否有關鍵詞。這種情況下,信息1應該能被程序1消費,也能被程序2消費。但上面這種方案顯然是不行的。當程序1消費了信息1,程序2就再也拿不到它了。

所以,在 Kafka 里面,信息會停留在隊列里面,但對每一個程序來說,有一個單獨的記號,來記錄當前消費到了哪一條數據,如下圖所示。

 

 

 

 

當程序1要讀取 Kafka 里面下一條數據時,Kafka 先把當前位置的標記向右移動一位,把新的這個值返回出來。標記移動與返回這兩個操作合在一起算是一個原子操作,不會出現重復讀取的問題。

程序1與程序2使用的是不同的標記,所以各自的標記指向哪個值,是互不影響的。

當增加一個程序3的時候,只需要再加一個標記即可。新的這個標記也不受前兩個標記的影響。

這就實現了在多個不同的程序讀取 Kafka 時,各自互不影響。

現在如果你覺得程序1消費太慢了,把程序1同時運行了3次,那么由于標記和移位是原子操作,即使你看起來程序是同時去讀取 Kafka,但在內部 Kafka 也會對他們進行“排隊”,從而使得他們返回的結果不重復,不遺漏。

如果你在網上看 Kafka 的教程,你會發現他們提到了一個叫做 Offset 的東西,實際上就是本文所說的各個程序里面指向當前數據的標記。

你還會看到一個關鍵詞叫做Group,實際上對應到本文的程序1,程序2和程序3。

對同一個隊列,如果多個程序使用不同的Group消費,那么他們讀取的數據就互不干擾。

對同一個隊列,相同 Group 的多個進程在消費數據時,看起來就像是在對 Redis 進行 lpop 操作一樣。

最后,你在網上關于 Kafka 的文章里面,一定會看到一個詞叫做Paritition或者中文分片。而且你會發現你無法理解這個東西。

沒關系,忘記它吧。你只需要知道,一個 Topic 有多少個 Partition,那么你最多能啟動多少個進程讀取同一個 Group。——如果一個Topic有3個Partition,那么你只能最多開3個進程同時讀相同的 Group。Topic如果有5個Partition,那么你只能最多開5個進程讀同一個 Group。

責任編輯:華軒 來源: 未聞Code
相關推薦

2024-04-01 08:23:20

代碼Javajavascript

2022-03-16 08:20:32

Pythonself

2024-12-18 07:43:49

2023-11-27 17:29:43

Kafka全局順序性

2024-09-23 20:55:04

2020-04-24 16:05:06

Javascript代碼前端

2015-07-30 09:46:42

開源項目

2021-07-06 06:39:58

Kafka消息隊列系統

2018-07-12 13:15:06

2020-11-13 10:58:24

Kafka

2013-06-09 11:11:54

歐朋瀏覽器

2014-11-04 11:19:51

2015-10-09 11:01:07

iPhone原創鎖定

2021-12-27 08:22:18

Kafka消費模型

2023-03-05 22:30:25

JavaCPU

2009-04-27 21:32:18

2015-09-23 19:20:29

2023-06-01 08:08:38

kafka消費者分區策略

2025-06-12 02:15:00

Kafka消費者高并發

2020-09-30 14:07:05

Kafka心跳機制API
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲免费在线 | 成人性视频免费网站 | 91视频一区| 黄色网毛片| 色中文在线 | 国产精品久久久爽爽爽麻豆色哟哟 | 免费成人av网站 | 久久久日韩精品一区二区三区 | 婷婷色在线 | 97国产在线视频 | 免费一级网站 | 亚洲免费一区二区 | 亚洲国产视频一区二区 | 中文字字幕一区二区三区四区五区 | 成人免费视频一区二区 | 中文字幕在线视频免费观看 | 久久黄网 | 韩日在线观看视频 | 最新日韩av | 国产精品久久久久久久7电影 | 91精品国产91久久久久久 | 国产午夜精品理论片a大结局 | 四虎永久免费在线 | 国产中文字幕网 | 国产精品视频一区二区三区不卡 | 日韩av免费看 | 久久久久国产一区二区 | 精品无码久久久久久久动漫 | 国产精品一区网站 | 亚洲精品中文字幕 | 国产精品视频一区二区三区, | 中文字幕一级毛片 | 国产日韩欧美激情 | 操操操av | 夜夜骑首页 | 国产精品一区二区三区久久久 | 成人国产在线观看 | 婷婷一级片 | 国产精品久久久久久久免费大片 | 精品久久久久久国产 | 亚洲美女网站 |