"Jetstream"
- NATS core 到 JetStream:fire-and-forget 在哪裡不夠、跨過去要付什麼
Core NATS 的 fire-and-forget 在 consumer 重啟或 rolling deploy 時掉訊息——這不是 bug、是設計。需要訊息不丟就跨進 JetStream(persistence + at-least-once + redelivery)。本文展開 core 與 JetStream 的邊界、stream 與 consumer 的求值模型、實機驗證的 durable pull consumer、5 個把 JetStream consumer 寫成丟訊息與重投風暴的 production 踩坑
- Kafka ↔ NATS:不是 migration、是 messaging paradigm 重設計
Kafka 跟 NATS 不是同類產品(log-based event streaming vs subject-based messaging)、'migration' 字面上不成立;本文釐清兩家 paradigm 邊界、什麼情境真的能換、application 模式重設計的 5 個踩雷(consumer offset 觀念差 / retention model / exactly-once 假設 / schema registry 缺位 / fan-out 模式差)、跟 JetStream 對位 + 混合架構
- NATS JetStream 設計與 supercluster / leaf node:stream、consumer、跨區拓樸與多租戶
NATS JetStream 的 implementation-layer deep article:stream 設計(storage / retention / discard / 容量上限)、consumer 設計(pull/push、explicit ack、AckWait、MaxDeliver、replay)、Cluster Raft / Supercluster gateway / Leaf node edge 三層拓樸、subject-based ACL 多租戶;含 4 個 production 故障演練(AckWait 太短重投、discard policy 選錯丟訊息、leaf node 斷線重連、stream replica 失去 quorum)。