NATS: high-performance cloud-native messaging

NATS (Synadia, Derek Collison) enters CNCF Sandbox (March 2018): ultra-light pub-sub messaging in Go, single binary, core pub-sub + JetStream for persistence, textual wire protocol. Alternative to Kafka/RabbitMQ for cloud-native scenarios.

Open SourceWeb NATSMessagingPub-SubSynadiaCNCFCloudOpen Source

A next-generation messaging server

NATS is a messaging server originally created by Derek Collison (ex Cloud Foundry, VMware) in 2010 in Ruby, rewritten in Go in 2012. The backing company is Synadia Communications. Apache 2.0 licence.

In March 2018 NATS enters the CNCF Sandbox. Development continues with focus on performance and simplicity.

Features

NATS is designed around three goals: performance, simplicity, resilience:

  • Pub-Sub, Request-Reply, Queue Groups as base patterns
  • Subject-based routingorders.europe.it, wildcard patterns orders.*.it, orders.>
  • Textual wire protocol — debug via telnet/nc
  • Single Go binary — no dependencies
  • Native cluster — NATS nodes discover each other via gossip, forming a fully-connected mesh
  • Superclusters — connections between geographic clusters
  • Leaf nodes — edge deployment with traffic subset

Performance

Published benchmarks show millions of messages/second per node on commodity hardware, with sub-millisecond latency. Designed as the opposite of Kafka design-wise: low-latency, fire-and-forget rather than durable persistence.

Persistence

NATS is originally non-persistent: it favours low latency and fire-and-forget, with no message history. For event sourcing cases it must be paired with a third-party system (Kafka, Redis Streams).

Usage

NATS is chosen in scenarios where Kafka is overkill:

  • IoT — messages from millions of devices
  • Real-time microservices — intra-cluster request/reply
  • Gaming — low-latency coordination
  • Cloud-native — classical message broker alternative
  • Edge computing — leaf nodes bring logic close to sensors

In the Italian context

Italian adoption in:

  • Corporate IoT — fleet management, smart manufacturing
  • Gaming studios
  • Microservices startups
  • Banks with algorithmic trading systems (low latency)

Comparison

  • Kafka — durable persistence, high throughput but high latency
  • RabbitMQ — AMQP protocol, complex routing, heavier
  • Redis Pub-Sub — simple but no persistence or cluster resilience
  • NATS — sweet spot among simplicity, performance, cluster resilience

References: NATS Server in Go (2012). Derek Collison, Synadia Communications. CNCF Sandbox (March 2018). Apache 2.0 licence. Textual protocol. Subject-based routing.

Need support? Under attack? Service Status
Need support? Under attack? Service Status