iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
Software Development

Event driven architecture的奧妙系列 第 29

Day 29 - NATS JetStream面臨的挑戰

  • 分享至 

  • xImage
  •  

前言

前兩篇我們講了NATS JetStream的兩個重要的功能Stream和Consumer,以及這兩個帶來的好處。
今天,我們總結NATS底下的CoreNATS以及NATS JetStream各自的優缺點。

好~我們開始吧!

Core NATS

優點

  • 輕量化: 適合高效能與延遲性低的情景
  • 好上手:透過簡單的API設計,讓開發團隊好上手
  • 高效的 Pub/Sub pattern:提供高效能的publish-subscribe pattern,適合即時通信Event Driven Architecture的應用

缺點

  • 不支援持久化: 沒有提供訊息持久化,可能會導致訊息在分發的過程中遺失,特別是在subscriber無法及時處理的情況
  • 不支持Ack確認: subscriber無法發送Ack的確認訊息告知訊息處理完成,增加了錯誤處理的難

NATS JetStream

優點

  • 支援持久化:支援訊息可以儲存在stream,達到訊息持久化,確保在系統故障時訊息不會遺失。
  • 進階功能:提供stream的管理、訊息的重送、延遲訊息等功能,適合需要大亮的訊息處理能力的情況
  • consumer:支援push/pull consumer pattern,能根據團隊的需求選擇
  • 訊息Ack確認:consumer可以發Ack訊息告知stream這筆訊息處理完畢,可以從stream中清除,增強了訊息處理的可靠性

缺點

  • 擴展性: 當系統的負載不斷增加,尤其是"高流量"的情景下,JetStream可能擴展上會有些困難
  • 訊息遺失: 昨天我們講到JetStream有支援訊息持久化,訊息可以存在stream,但訊息遺失的風險依然存在
  • 錯誤處理: stream處理失敗的訊息和consumer出現問題時如何恢復,是個很大的困難

總結

如果團隊的系統需要高性能、低延遲,CoreNATS可能足夠應付。但如果需要訊息持久化、更好的訊息管理機制和更高的可靠性,NATS JetStream會是更合適的選擇。總體來說,選擇CoreNATS還是NATS JetStream取決於團隊需求和系統設計。

好了~今天就到這邊!!


上一篇
Day 28 Nats的補充包JetStream - 後篇
下一篇
Day 30 - 結語
系列文
Event driven architecture的奧妙30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言