NATS
约 2 分钟阅读
- 支持 JetStreaming
- 支持 WebSocket - 能够利用 HTTP 基础设施
- 支持 JWT Auth
- 支持 Auth Resolver - 通过 nats service 监听实现自定义 auth
- 支持 Group Consumer
- 支持 RPC -> Load Balance - Request/Reply
- 支持 KV
- 支持 ObjectStore
- nats-io/nats-serverGitHubnats-io/nats-server支持 JetStreaming · 支持 WebSocket - 能够利用 HTTP 基础设施 · 支持 JWT Auth · 支持 Auth Resolver - 通过 nats service 监听实现自定义 auth · 支持 Group Consumer笔记:NATS 是什么?
- 偏向通讯协议,用作 消息队列
- 默认没有持久化
- 协议支持 MQTT, NATS, WebSocket
- 集成 JetStream - 替代 STAN
- 支持 KV、ObjectStore
- 支持 持久化
- 端口
- 4222 客户端
- 8222 HTTP 管理和信息上报
- 6222 集群路由
- 7422 Leaf Node
- 参考
- nats-io/nats-architecture-and-designGitHubnats-io/nats-architecture-and-design
- ADR - Architecture and Design Docs
- nats-io/natscliGitHubnats-io/natsclinats-io/natscli · /.config/nats/ · context.txt - 当前上下文 · publish · request · subscribe · stream - str · add|edit|info|ls|rm|purge|copy笔记:nats
- 命令行工具
- nats-io/nscGitHubnats-io/nscnats-io/nsc · tool for creating nkey/jwt based configurations · 参考 · nsc manual · | env | default | · | NKEYSPATH | /.nkeys |笔记:nsc
- nats 账号管理功能
- compare-nats
- Client Protocol
- nats-io/nats-architecture-and-designGitHubnats-io/nats-architecture-and-design
- SDK
- nats.goGitHubnats-io/nats.go
- nats.javaGitHubnats-io/nats.java
- nats.netGitHubnats-io/nats.net
- Javascript
- nats.wsGitHubnats-io/nats.ws
- nats.denoGitHubnats-io/nats.deno
- nats.jsGitHubnats-io/nats.js
- NPM nats
- nats.cGitHubnats-io/nats.c
- nats.pyGitHubnats-io/nats.py
- nats.rsGitHubnats-io/nats.rs
- Demo
- nats://demo.nats.io
- demo.nats.io
- wss://demo.nats.io
- demo.nats.io/varz
- demo.nats.io/healthz
- demo.nats.io/connz
- limit, offset, state
- demo.nats.io/routez?subs=true
- demo.nats.io/gatewayz
- demo.nats.io/leafz?subs=true
- demo.nats.io/subsz
- demo.nats.io/acountz?acc=$G
- demo.nats.io/accstatz?unused=false
- demo.nats.io/jsz
# Docker
# 服务端 - 大约 10mb
docker run --rm -it --name nats -p 4222:4222 -p 6222:6222 -p 8222:8222 nats:alpine -js
# macOS
brew install nats-server
nats-server
# nats 工具需要额外 tap 或者直接下载 https://github.com/nats-io/natscli/releases
brew tap nats-io/nats-tools
brew install nats-io/nats-tools/nats
nats --help
nats account info
nats rttNotes
- Subject-Based Messaging
- Subject 名字
[a-z0-9.]+ - 级/层/token
- 建议不超过 16 层
- 通过
a.b方式实现级联 - 单层匹配
a.*.c- 匹配 a.b.c - 多层匹配
a.b.>- 匹配 a.b.c.d *.*.c.>- 匹配 a.b.c.d
- Subject 名字
- Publish-Subscribe
- Queue Groups / Queue Subscribe / Consumer Group
- Kafka Consumer Group 概念
- 多个 consumer 共享消费位置
- queue 表示这个 group - 有唯一的名字
- 如果不设置 durable 则会在 consumer 关闭完时移除 queue 信息
- durable 为一个 consumer 的名字
- 当所有 consumer unsub 时,也会移除 queue 信息
- ACK
- 响应一条消费的消息
- 返回
+ACK
- Sequence Numbers
- Leaf Nodes
- 路由消息到其他集群
- gateways
- 连接多个集群组成 full mesh
nats-top
关联信息
反向链接、本文链接的其他页面和外部资料。
反向链接
- Queue Awesome笔记 · nats-io/nats-server
持久化 · 顺序性 · 消息交付保证 · 语言支持 · 维护难易度 · 单机 · 集群 · 功能 · 延迟队列 · 请求 & 响应 · Dedup · 优先级队列 · 死信队列 · 重试队列 · 消费模式 - 推拉 · 广播消费 · 消息回溯 - 是否持久化
- Queue FAQ笔记 · Nats
Event -> EventBus · 事件 - 强调发生了什么 · 不包含业务属性,通用 - 无指向性 · 通常 fire and forget · 用于 集成、解耦、触发交互 · 多个 外部/内部消费者 · Message -> Queue
参考资料
GitHub14 条
- nats-io/nats-architecture-and-designgithub.com/nats-io/nats-architecture-and-design
- nats-io/nats-servergithub.com/nats-io/nats-server
- nats-io/nats-topgithub.com/nats-io/nats-top
- nats-io/nats.cgithub.com/nats-io/nats.c
- nats-io/nats.denogithub.com/nats-io/nats.deno
- nats-io/nats.gogithub.com/nats-io/nats.go
- nats-io/nats.javagithub.com/nats-io/nats.java
- nats-io/nats.jsgithub.com/nats-io/nats.js
- nats-io/nats.netgithub.com/nats-io/nats.net
- nats-io/nats.pygithub.com/nats-io/nats.py
- nats-io/nats.rsgithub.com/nats-io/nats.rs
- nats-io/nats.wsgithub.com/nats-io/nats.ws
- nats-io/natscligithub.com/nats-io/natscli
- nats-io/nscgithub.com/nats-io/nsc
其他外链12 条
- demo.nats.io/accstatz?unused=falsedemo.nats.io:8222/accstatz?unused=false
- demo.nats.io/acountz?acc=$Gdemo.nats.io:8222/acountz?acc=%24G
- demo.nats.io/connzdemo.nats.io:8222/connz
- demo.nats.io/gatewayzdemo.nats.io:8222/gatewayz
- demo.nats.io/healthzdemo.nats.io:8222/healthz
- demo.nats.io/jszdemo.nats.io:8222/jsz
- demo.nats.io/leafz?subs=truedemo.nats.io:8222/leafz?subs=true
- demo.nats.io/routez?subs=truedemo.nats.io:8222/routez?subs=true
- demo.nats.io/subszdemo.nats.io:8222/subsz
- demo.nats.io/varzdemo.nats.io:8222/varz
- docs.nats.io/compare-natsdocs.nats.io/compare-nats
- docs.nats.io/nats-protocol/nats-protocoldocs.nats.io/nats-protocol/nats-protocol