Kafka 不只是訊息系統,更偏向於資料庫

src: https://kafka.apache.org/intro

「Message queue system 極簡說明」


在遠端呼叫機制中,有一種 pattern 為 publisher - broker - consumer 的方式,publisher 負責產生資料/consumer 負責消化資料/broker 負責handle 雙方吞吐的狀況,而這基本上也是現在大多數的訊息系統 (Message queue system )所實作的方式。

「Kafka 極簡說明」

Kafka 在 broker 的實作上是這樣,從 publisher 來的資料放置在 topic 當中,以 log 的方式存下來,並讓 consumer 來消化它,期間 broker 不會主動去 push 資料給 consumer,而是等 consumer 自己來 pull ,如此一來,就減少許多處理 ack 的問題。

「將 kafka 作為資料庫」

既然資料都在 topic 上面,那為何還需要對其他 DB 作 Query 呢?topic 與 DB 通常主要差異是在資料存放的方式,前者為 log,後者為 transaction,前者是連續時間,後者是片段時間。舉生活例子來說明,請問你昨天在哪裡?

log的系統會回答"每個時間點"你所在的位置,transaction 只有一個,而且會是最新(最後更動)那個點。
kafka 是可以做為資料庫的,並且以 log 方式貯存資料。

「ktable, kstream, etl, connecter」

“現階段”處理 log 是用 kStream ,如果要取得某個片段時間點資料是用 KTable,如果要和其他DB作 query 則採用 connector,在這套論點當中,會有些文章提出 ETL(Extract-Transform-Load) is dead 的論述, 我覺得這算是某種程度上的 Buzzword 了,ETL 的概念是會一直跟著的,生活中也一直出現過,數學上也常做表達,他會換個方式活著不會就此停止XD
例如說:KStream 可以是 T, connecter 可以是 E/L

留言

這個網誌中的熱門文章

Raspberry pi 樹莓派系列 :安裝瀏覽器

『如何說出好故事|故事架構介紹|輕鬆做出大師級故事架構』

『目標管理|SMART原則|最有效的目標管理原則』