前言
最新項(xiàng)目中要用到消息隊(duì)列來做消息的傳輸,之所以選著 Kafka 是因?yàn)橐浜掀渌?java 項(xiàng)目中,所以就對(duì) Kafka 了解了一下,也算是做個(gè)筆記吧。
本篇不談?wù)?Kafka 和其他的一些消息隊(duì)列的區(qū)別,包括性能及其使用方式。
簡(jiǎn)介
Kafka 是一個(gè)實(shí)現(xiàn)了分布式的、具有分區(qū)、以及復(fù)制的日志的一個(gè)服務(wù)。它通過一套獨(dú)特的設(shè)計(jì)提供了消息系統(tǒng)中間件的功能。它是一種發(fā)布訂閱功能的消息系統(tǒng)。
一些名詞
如果要使用 Kafka ,那么在 Kafka 中有一些名詞需要知道,文本不討論這些名詞是否在其他消息隊(duì)列中具有相同的含義。所有名詞均是針對(duì)于 Kafka。
Message
消息,就是要發(fā)送的內(nèi)容,一般包裝成一個(gè)消息對(duì)象。
Topic
通俗來講的話,就是放置“消息”的地方,也就是說消息投遞的一個(gè)容器。假如把消息看作是信封的話,那么 Topic 就是一個(gè)郵筒,如下圖所示:
Partition && Log
Partition 分區(qū),可以理解為一個(gè)邏輯上的分區(qū),像是我們電腦的磁盤 C:, D:, E: 盤一樣,
Kafka 為每個(gè)分區(qū)維護(hù)著一份日志Log文件。
每個(gè)分區(qū)是一個(gè)有序的,不可修改的,消息組成的隊(duì)列。 當(dāng)消息過來的時(shí)候,會(huì)被追加到日志文件中,這個(gè)追加是根據(jù) commit 命令來執(zhí)行的。
分區(qū)中的每一條消息都有一個(gè)編號(hào),叫做 offset id,這個(gè) id 在當(dāng)前分區(qū)中是唯一的,并且是遞增的。
日志,就是用來記錄分區(qū)中接收到的消息,因?yàn)槊恳粋€(gè) Topic 可以同時(shí)向一個(gè)或者多個(gè)分區(qū)投遞消息,所以實(shí)際在存儲(chǔ)日志的時(shí)候,每個(gè)分區(qū)會(huì)對(duì)應(yīng)一個(gè)日志目錄,其命名規(guī)則一般為
網(wǎng)友評(píng)論