NATS Streaming Server 已被弃用。关键错误修复和安全修复将持续到 2023 年 6 月。需要持久化功能的 NATS 应用程序应使用 JetStream。
nats-streaming 是 NATS 消息系统的高性能流服务器,提供持久化消息传递、消息重放和订阅者容错等功能,适用于需要可靠消息传递的分布式系统。
repos/nats-streaming/ 目录注意:该镜像已不再提供***支持的标签和架构。
NATS Streaming Server 暴露以下端口:
4222:客户端连接端口8222:HTTP管理端口,用于信息报告由于Windows Docker镜像构建限制,不带参数运行镜像时,将使用基于内存的存储,监听端口4222和管理端口8222。如需指定其他参数,需显式指定可执行文件名:
bash# 自定义端口示例 docker run -p 4223:4223 -p 8223:8223 nats-streaming nats-streaming-server -p 4223 -m 8223 # 指定入口点 docker run --entrypoint c:/nats-streaming-server/nats-streaming-server -p 4222:4222 -p 8222:8222 nats-streaming
直接在命令行传递参数给NATS Streaming服务器:
bash# 自定义端口示例 docker run -p 4223:4223 -p 8223:8223 nats-streaming -p 4223 -m 8223 # 指定入口点 docker run --entrypoint /nats-streaming-server -p 4222:4222 -p 8222:8222 nats-streaming
bash# 启动NATS Streaming服务器 docker run -d -p 4222:4222 -p 8222:8222 nats-streaming
输出信息(非后台运行时):
[1] 2022/10/11 14:57:50.404688 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.25.2 [1] 2022/10/11 14:57:50.404739 [INF] STREAM: ServerID: fbZJjwGYLBpNM5I8z23NSN [1] 2022/10/11 14:57:50.404741 [INF] STREAM: Go version: go1.19.2 [1] 2022/10/11 14:57:50.404743 [INF] STREAM: Git commit: [9e599667] [1] 2022/10/11 14:57:50.406004 [INF] Starting nats-server [1] 2022/10/11 14:57:50.406009 [INF] Version: 2.9.3 [1] 2022/10/11 14:57:50.406011 [INF] Git: [25e82d7] [1] 2022/10/11 14:57:50.406013 [INF] Name: NDQOBTB34ECZWAKAJAREPEXQPXGKUEJEZINCHV2CIHGGJQCSCVPQPU5W [1] 2022/10/11 14:57:50.406015 [INF] ID: NDQOBTB34ECZWAKAJAREPEXQPXGKUEJEZINCHV2CIHGGJQCSCVPQPU5W [1] 2022/10/11 14:57:50.406423 [INF] Listening for client connections on 0.0.0.0:4222 [1] 2022/10/11 14:57:50.406679 [INF] Server is ready [1] 2022/10/11 14:57:50.434935 [INF] STREAM: Recovering the state... [1] 2022/10/11 14:57:50.434945 [INF] STREAM: No recovered state [1] 2022/10/11 14:57:50.435271 [INF] STREAM: Message store is MEMORY [1] 2022/10/11 14:57:50.435303 [INF] STREAM: ---------- Store Limits ---------- [1] 2022/10/11 14:57:50.435306 [INF] STREAM: Channels: 100 * [1] 2022/10/11 14:57:50.435308 [INF] STREAM: --------- Channels Limits -------- [1] 2022/10/11 14:57:50.435310 [INF] STREAM: Subscriptions: 1000 * [1] 2022/10/11 14:57:50.435311 [INF] STREAM: Messages : *** * [1] 2022/10/11 14:57:50.435313 [INF] STREAM: Bytes : 976.56 MB * [1] 2022/10/11 14:57:50.435315 [INF] STREAM: Age : unlimited * [1] 2022/10/11 14:57:50.435316 [INF] STREAM: Inactivity : unlimited * [1] 2022/10/11 14:57:50.435318 [INF] STREAM: ---------------------------------- [1] 2022/10/11 14:57:50.435320 [INF] STREAM: Streaming Server is ready
使用文件存储代替内存存储:
bashdocker run -d -p 4222:4222 -p 8222:8222 \ -v $(pwd)/datastore:/datastore \ nats-streaming -store file -dir /datastore
bashdocker run -d --name=nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 nats
bashdocker run -d --link nats-main -p 4223:4222 -p 8223:8222 \ nats-streaming -store file -dir datastore -ns nats://nats-main:4222
NATS Streaming Server 支持以下主要命令行选项:
Streaming Server Options: -cid, --cluster_id <string> 集群ID (默认: test-cluster) -st, --store <string> 存储类型: MEMORY|FILE|SQL (默认: MEMORY) --dir <string> FILE存储类型的根目录 -mc, --max_channels <int> 最大通道数 (0表示无限制) -msu, --max_subs <int> 每个通道的最大订阅数 (0表示无限制) -mm, --max_msgs <int> 每个通道的最大消息数 (0表示无限制) -mb, --max_bytes <size> 每个通道的消息总大小限制 (0表示无限制) -ma, --max_age <duration> 消息最大存储时间 ("0s"表示无限制) -mi, --max_inactivity <duration> 通道无活动后垃圾回收时间 (0表示无限制) -ns, --nats_server <string> 连接外部NATS服务器URL (默认嵌入式) -sc, --stan_config <string> 流式服务器配置文件 -hbi, --hb_interval <duration> 服务器向客户端发送心跳的间隔 -hbt, --hb_timeout <duration> 服务器等待心跳响应的时间 -hbf, --hb_fail_count <int> 服务器关闭客户端连接前的失败心跳次数 --ft_group <string> FT组名称,2个或更多服务器共享相同数据存储 -p, --port <int> 客户端端口 (默认: 4222) -m, --http_port <int> HTTP管理端口
完整命令行选项列表可通过以下命令查看:
bashdocker run --rm nats-streaming --help
可以通过配置文件进行更详细的配置,使用-sc或--stan_config选项指定配置文件:
bashdocker run -d -p 4222:4222 -p 8222:8222 \ -v $(pwd)/stan.conf:/stan.conf \ nats-streaming -sc /stan.conf
配置文件详细说明请参考NATS Streaming Server配置文档。
以下是使用Docker Compose部署NATS Streaming Server与外部NATS服务器的示例:
yamlversion: '3' services: nats: image: nats ports: - "4222:4222" - "6222:6222" - "8222:8222" command: "-m 8222" restart: always nats-streaming: image: nats-streaming depends_on: - nats ports: - "4223:4222" - "8223:8222" command: "-store file -dir /datastore -ns nats://nats:4222 -cid my-cluster -m 8222" volumes: - ./datastore:/datastore restart: always
启动:
bashdocker-compose up -d
Docker的-p参数用于将容器端口映射到主机端口,这与NATS Streaming Server自身的-p参数不同。例如,要让NATS Streaming Server监听容器内的4444端口并映射到主机的5555端口:
bashdocker run -p 5555:4444 nats-streaming -p 4444
Streaming服务器本身与以前的版本向后兼容,但v0.15.0+版本嵌入了NATS Server 2.0,如果使用嵌入式NATS服务器并想路由到现有的v0.14.3-服务器,由于NATS Server路由协议的更改,将无法正常工作。但可以将v0.15.0+连接到现有的NATS集群,因此可以混合使用v0.15.0和v0.14.3-流式服务器。
该镜像已被***弃用,不再接收更新和安全补丁。建议尽快迁移到JetStream。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429