Skip to content
所有標籤

#event-streaming

6 篇文章

Apache Kafka:不是把訊息排隊,而是保存可重播的事件日誌

Kafka 的核心是依 partition 排序、依 retention 保存的分散式 log;consumer group 用 offset 分工,exactly-once 只在 Kafka transaction 能涵蓋的邊界內成立。

Apache Pulsar:把 stateless broker 與 BookKeeper 儲存拆開的事件平台

Pulsar 將 serving 與 storage 分離:stateless broker 處理連線,BookKeeper 保存 ledger 與 subscription cursor;彈性與多租戶能力換來更多營運元件。

NATS 與 JetStream:先選即時訊息還是持久事件,再談同一套 API

Core NATS 是不落盤的 at-most-once pub/sub;JetStream 才加入 stream、consumer、ack、retention 與重播。兩者同用 subject,可靠性契約卻完全不同。

RabbitMQ:先用 exchange 表達路由,再用 quorum queue 保住工作

RabbitMQ 的強項是 exchange、binding 與 queue 組成的訊息路由;需要高可用時以 quorum queue 為預設,並同時啟用 publisher confirm、manual ack 與冪等 consumer。

Redis Streams:用 append-only log 與 consumer group 補上 Redis 的可靠訊息層

Redis Streams 以 `XADD` 保存可回讀 entry,consumer group 再用 Pending Entries List 與 `XACK` 追蹤處理;它比 Pub/Sub 可靠,但不是自動變成 Kafka。

Redpanda:Kafka API 相容,不代表換 broker 可以不做驗證

Redpanda 以 C++/Seastar、thread-per-core 與每個 partition 的 Raft group 重做 Kafka-compatible event log;client 相容度高,營運與邊角語意仍須實測。