NATS 服务基础设施

NATS 是一种客户端/服务器系统,你使用 “NATS 客户端应用”(使用某个 NATS 客户端库的应用程序)连接到提供 NATS 服务的“NATS 服务器”。这些 NATS 服务器协同工作,为它们的客户端应用提供 NATS 服务基础设施。

NATS 具有极高的灵活性和可扩展性,其服务基础设施可以小至运行在本地机器上的单个进程,也可以大至由 Leaf 节点和 Leaf 节点集群组成的“NATS 互联网”,所有节点通过全球共享的 NATS 超级集群以安全的方式相互连接。

无论所使用的 NATS 服务基础设施规模和复杂程度如何,客户端应用所需的唯一配置是:一个或多个 NATS 服务器的位置(NATS URL),以及根据所需的安全性而定的凭据。

请注意,如果你的应用程序是用 Golang 编写的,你甚至可以选择将 NATS 服务器功能嵌入到应用程序本身中(但此时你需要为你的应用程序实例配置 nats-server 的相关配置信息)。

实际上,你并不需要自己运行 NATS 服务基础设施,而是可以使用由 NATS 服务提供商提供的公共 NATS 基础设施,例如 Synadia Cloud。你可以将 Synadia Cloud 理解为一个“NATS 互联网”(Internet of NATS),而 Synadia 则是一个“NATS 互联网服务提供商”。

您的 NATS 服务基础设施的演进

通常情况下,您会从在本地开发机器上运行单个 nats-server 实例开始,并让您的应用程序连接到该实例,以便进行应用程序开发和本地测试。

接下来,您可能会想在 VPC、区域或某些本地位置中测试并运行这些应用程序和服务,因此您会在 VPC、区域或本地等位置部署单个 NATS 服务器或 NATS 服务器集群,并让每个位置的应用程序连接到本地的 nats-server 或 nats-server 集群。然后,您可以将这些本地 nats-server 或本地 nats-server 集群连接起来,方法是让它们成为连接到“骨干”集群或超级集群的 Leaf 节点,或者通过网关连接直接相互连接。

如果您拥有大量客户端应用(例如,分布在互联网上的终端用户设备上的应用程序,或许多 IoT 设备),或者在许多地点拥有大量服务器,那么您将通过在多个地点、多个云提供商和多个 VPC 中部署 NATS 服务器集群来扩展您的 NATS 服务基础设施。然后,您需要将这些集群连接成一个全球性的超级集群,并设计出一种方案,以智能地引导您的客户端应用连接到合适的“最近”的 NATS 服务器集群。

运行您自己的 NATS 服务基础设施

您可以部署并运行自己的 NATS 服务基础设施,由 nats-server 实例组成,包括服务器、服务器集群、超级集群和 Leaf 节点 NATS 服务器。

关于虚拟化和容器化的注意事项

如果使用 Kubernetes,我们建议您使用 Helm 图表