# 概览

**什么是NATS?** NATS是一种连接技术，为现代分布式系统提供动力。连接技术负责寻址、发现和交换消息，这些消息驱动着分布式系统的常见模式；询问和回答问题，又称服务/微服务，以及创建和处理语句，或流处理。

**现代分布式系统所面临的挑战**\
现代分布式系统是由越来越多的超级连接的移动部件和它们产生的额外数据定义的。它们同时采用服务和流来驱动商业价值。它们也被位置独立性和移动性所定义，而不仅仅是我们通常认为是前端技术的东西。今天的系统和后端流程、微服务和流处理也被要求不受地点限制，具有移动性，同时又是安全的。

这些现代系统对那些一直用于连接移动前端和相当静态的后端的技术提出了挑战。这些现有的技术通常通过主机名（DNS）或IP和端口来管理寻址和发现，利用1:1的通信模式，并有多种不同的安全模式进行认证和授权。虽然不完美，但现有的技术在许多情况下已经足够好了，但时代正在迅速变化。随着微服务、功能函数和流处理被要求转移到边缘，这些技术和它们的假设都受到了挑战。

## 是什么让NATS连接技术在这些现代系统中独一无二？

**轻松的M:N连接：** NATS根据主题而不是主机名和端口来管理寻址和发现。默认为M:N通信，这是1:1的超集，意味着它可以做1:1，但也可以做更多。如果你有一个在开发中成功的1:1系统，请问在生产中需要多少其他移动部件来围绕1:1的假设来工作？诸如负载平衡器、日志系统和网络安全模型，以及代理和边车。如果你的生产系统需要所有这些东西，只是为了绕过正在使用的连接技术（如HTTP或gRPC）是1:1的事实，那么是时候看看NATS.io了。

**在任何地方部署：** NATS几乎可以在任何地方部署；在裸机上、在虚拟机中、作为容器、在K8S内、在设备上，或者你选择的任何环境。NATS在部署框架内或不在部署框架内都可以运行良好。

\*\*安全：\*\*同样，NATS默认是安全的，对网络周边的安全模型没有要求。当你开始考虑调动你的后端微服务和流处理器时，很多时候最大的障碍是安全。

### 可扩展的、面向未来的部署

NATS基础设施和客户端实时**沟通**所有拓扑变化。这意味着，当NATS部署发生变化时，NATS客户端不需要改变。要改变客户端的部署，就像每次你的手机供应商增加或改变一个手机塔时，都要重新启动你的手机。这听起来当然很荒谬，但想想今天有多少系统的前端与后端紧密相连，任何变化都需要一个完整的前端重启或至少重新配置。当后端服务器被添加、删除和改变时，NATS客户和应用程序不需要这样的改变。甚至DNS也只用于引导第一次接触，之后，NATS透明地处理终端位置。

### 混合部署

利用NATS的另一个优势是，它允许混合SaaS/Utility计算与单独拥有和运营。这意味着你可以有一个共享的NATS服务，其核心微服务、流和流处理可以由需要运行自己的NATS基础设施的团体或个人来扩展。你不会被迫选择鱼或者熊掌。

### 适应性

今天的系统会因为新的需求而显得不足。随着现代系统的不断发展，利用更多的组件和处理更多的数据，支持超越1:1的通信模式，与DNS绑定的寻址和发现是至关重要的。像NATS这样的基础技术将带来最大的投资回报。在现代系统**统一**云、边缘、物联网和其他方面时，现有的技术将无法良好运作。NATS可以。

### 使用案例

NATS可以在任何地方运行，从大型服务器和云实例，到边缘网关甚至是物联网设备。NATS的用例包括：

* 云信息传递
  * 服务（微服务，服务网）。
  * Event/Data Streaming （可观察性、分析、ML/AI/）。
* 指挥和控制
  * 物联网和边缘
  * 遥测/传感器数据/指挥和控制
* 增强或取代传统的信息传递系统
