iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
DevOps

玩耍開源k8s30天系列 第 15

day15 : NATS 、NATS Streaming、JetStream服務應用 on K8S (上)

k8s只是一個平台,要發揮他的價值就要讓適合的服務運行在上面,所以從今天開始就會介紹一些有趣的服務(不一定適合k8s)。

NATS是一項streaming服務平台,使用的是publish/subscribe 架構,較為完整的NATS平台會包含NATS及NATS streaming(事實上是在NATS內啟用NATS streaming),前者為發佈和訂閱所使用的,後者為提供NATS的持久化儲存,但是在使用NATS streaming時其實還是連到NATS;而更新的架構是使用NATS內部啟用JetStream 。

雖然我會期望k8s上的服務盡量是以無狀態的方式運行,不過如果考量到資料要保留一段時間儲存,那麼在也是可以提供一個小的pv空間做NATS streaming cluster;那麼NATS cluster長什麼樣子呢?
https://ithelp.ithome.com.tw/upload/images/20210915/2013966188ZbmBhc3Y.png
這是官網的一張NATS cluster圖,NATS讓client端各自打自己想要打的端點,並且訂閱想要的subject,這樣的架構有什麼樣的好處呢?

  1. NATS server可以擴展
  2. 打k8s 的service resource可以自動找尋可用的NATS server

當配上NATS streaming後架構會多出以下
https://ithelp.ithome.com.tw/upload/images/20210915/20139661nQvXAJcvzB.png
不過在今天寫文章時,重新去對了網站上的資訊,發現NATS streaming準備棄用(使用至2023/6),而官方接手的專案叫做jetstream,與NATS streaming一樣是運行於NATS上,同時可以使用CRD運行在k8s上。
https://ithelp.ithome.com.tw/upload/images/20210915/20139661Yw14vzTGdY.png
這張圖簡略地說明了jetstream對於訊息的發布和訂閱機制的流向,那麼為什麼要改用Jetstream呢?主要原因在於雖然NATS Streaming解決了NATS的儲存問題及確保訊息送達,但是變得沒辦法水平擴展了,JetStream改變了一些架構,像是運用了RAFT演算法、Stream data replication的機制,因此NATS的可用性更加地提升了。
https://ithelp.ithome.com.tw/upload/images/20210915/20139661RAxaI1X8vt.png


上一篇
day14 : 前半段小結
下一篇
day16 : NATS 、NATS Streaming、JetStream服務應用 on K8S (下)
系列文
玩耍開源k8s30天31

尚未有邦友留言

立即登入留言