本帖最后由 chensg 于 2024-8-14 23:48 编辑
NATS是一个开源的、高性能的、简洁的、灵活的 适用于现代的可靠灵活的云和分布式系统的中枢系统。NATS服务使用Go语言编写,但客户端可以通过各种主流语言与服务器交互。 根据NATS官方的说法,NATS可以在任何地方运行,从大型服务器和云实例,通过边缘网关甚至物联网设备。NATS的典型应用场景包括:
- Cloud Messaging
- Services (microservices, service mesh)
- Event/Data Streaming (observability, analytics, ML/AI)
- Command and Control
- IoT and Edge
- Telemetry / Sensor Data / Command and Control
- Augmenting or Replacing Legacy Messaging Systems
考虑到NATS用go开发的,很多压测结果反馈运行性能还不错,因此,我们对NATS进行了调研和探索,发现其消息发布订阅机制及存储特性,适合用于云平台内部服务间消息分发。经过综合比较考虑,最终我们选择了NATS作为云平台消息分发组件。 下面是云平台使用NATS组件的示意图,主要用于设备数据及微服务内部消息分发和订阅处理。
NATS里边有个JetStream存储引擎,支持消息的持久化存储及延迟分发,在后端微服务升级、或高峰期处理不过来时,已发布的消息都会缓存起来,不会丢失,微服务启动或扩容后可继续处理未处理的消息。 关于JetStream消息消费机制,可以参考官方给到图,云平台基本上时参考了这个例子来使用NATS的,只不过消息主题和内容不同而已。关于消息主题和消息内容结构,请参考爱星物联社区版源代码解读,这里不再详细分解。
|