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


<<:  2021-Day10. 第一印象很重要!!从「加入群组」时,就建立良好关系:Line加群组欢迎讯息实作教学

>>:  Day 3 Swift语法-基础篇(1/3)-基本运算符及字串

Day 26 - Filter 使用方式

其实威尔猪本来没打算写 Filter,因为总觉得在一般情形下不太常会用到,但又觉得这好像也算是 T...

使用Lucene.Net达成全文检索!基础解说(一)

Lucene.Net是一套C#开源全文索引库,其主要包含了: · Index : 提供索引的管理与词...

30天程序语言研究

今天是30天程序语言研究的第十三天,由於深度学习老师多让我们上了python的进阶课程里面包括之前没...

Day30 切版笔记 - 文字排版

没想到30天这麽快就过去了 还记得决定学习前端知识的时候,带给我的都是新奇的体验,但随着学习的内容越...

Day8:原来机器学习这个词跟我想的不太一样

  这几天研究下来,发现有三个词汇很让人搞不懂,也就是人工智慧(Artifical Intellig...