参考资料

  1. Pony 是一个高性能的 Python 异步网络框架
  2. Jobber 是一个轻量级的任务调度工具
  3. Stirling-PDF 是一个开源的 PDF 工具集
  4. NATS Streaming(现更名为STAN)是基于NATS的消息流系统
  5. docker安装包详细说明以及案例
  6. docker安装redis详细说明以及案例
  7. SWI-Prolog 是一个开源的 Prolog 实现,广泛用于人工智能、自然语言处理和知识表示等领域
  8. PostfixAdmin 是一个基于 Web 的邮件管理工具

NATS 简介

NATS 是一个高性能、轻量级的开源消息系统,支持发布/订阅、请求/响应和队列模式。适用于微服务、IoT 和云原生应用。

特点

  1. 高性能:低延迟、高吞吐量。

  2. 轻量级:占用资源少。

  3. 多种通信模式:发布/订阅、请求/响应、队列。

  4. 支持多种协议:NATS、NATS Streaming(JetStream)、WebSocket。

  5. 云原生友好:支持 Kubernetes、Docker。

  6. 多语言支持:Go、Java、Python、Node.js 等。

最新更新内容及时间

  • JetStream 持久化(2023年更新):支持消息持久化和流处理。

  • NATS 2.10(2023年):改进集群管理、安全性增强。

  • NATS Server 2.9(2022年):优化内存管理,提升性能。

镜像下载地址

官网地址

文档地址

Docker 安装示例

# 拉取并运行 NATS 服务器(默认端口 4222)
docker run -d --name nats-server -p 4222:4222 -p 8222:8222 nats:latest

# 启用 JetStream(持久化模式)
docker run -d --name nats-js -p 4222:4222 -p 8222:8222 nats:latest -js

.yaml 配置文件示例

# nats-server.conf
port: 4222
http_port: 8222

jetstream {
  store_dir: /data/nats
  max_memory: 1GB
  max_file: 10GB
}

cluster {
  name: "nats-cluster"
  port: 6222
  routes: [
    "nats://nats-node1:6222",
    "nats://nats-node2:6222"
  ]
}

常用错误及解决方法

  1. Error: Could not connect to NATS server

    • 检查 NATS 服务是否运行:docker psnats-server -v

    • 确保防火墙开放 4222 端口。

  2. JetStream not enabled

    • 启动时添加 -js 参数或配置 jetstream

  3. No responders available for request

    • 检查订阅服务是否在线,或超时时间是否太短。

  4. Insufficient Storage(JetStream)

    • 调整 max_memorymax_file 配置。

  5. TLS Handshake Error

    • 检查证书路径和权限,确保 NATS 配置正确。