NATS: messaging cloud-native high-performance

NATS (Synadia, Derek Collison) entra in CNCF Sandbox (marzo 2018): messaging pub-sub ultra-leggero in Go, single binary, core pub-sub + JetStream per persistenza, wire protocol testuale. Alternativa a Kafka/RabbitMQ per scenari cloud-native.

Open SourceWeb NATSMessagingPub-SubSynadiaCNCFCloudOpen Source

Un messaging server di nuova generazione

NATS è un messaging server originariamente creato da Derek Collison (ex Cloud Foundry, VMware) nel 2010 in Ruby, riscritto in Go nel 2012. La società di sostegno è Synadia Communications. Licenza Apache 2.0.

A marzo 2018 NATS entra nel CNCF Sandbox; promosso a Incubating nel 2019 e Graduated nel 2024 (?). Lo sviluppo continua con focus su performance e semplicità.

Caratteristiche

NATS è progettato attorno a tre obiettivi: performance, semplicità, resilienza:

  • Pub-Sub, Request-Reply, Queue Groups come pattern base
  • Subject-based routingorders.europe.it, pattern wildcard orders.*.it, orders.>
  • Wire protocol testuale — debug via telnet/nc
  • Single binary Go — no dipendenze
  • Cluster nativo — nodi NATS si scoprono via gossip, formano mesh full-connected
  • Superclusters — connessioni tra cluster geografici
  • Leaf nodes — edge deployment con subset di traffico

Performance

Benchmark pubblicati mostrano milioni di messaggi/secondo per nodo su hardware commodity, con latenza sub-millisecond. È progettato per essere l’opposto di Kafka in termini di design: low-latency, fire-and-forget piuttosto che persistenza durevole.

JetStream (persistenza)

NATS originariamente non persistente. Nel 2020 (NATS 2.2) introduce JetStream: persistent streaming con exactly-once semantics, replay, compaction. Rivaleggia con Kafka per casi di event sourcing ma con footprint molto inferiore.

Uso

NATS è scelto in scenari dove Kafka è eccessivo:

  • IoT — messaggi da milioni di device
  • Microservizi real-time — request/reply intra-cluster
  • Gaming — low-latency coordinamento
  • Cloud-native — alternativa a message broker classici
  • Edge computing — leaf nodes portano logica vicino a sensori

Nel contesto italiano

Adoption italiana in:

  • IoT aziendale — gestione flotte, smart manufacturing
  • Gaming studios
  • Microservices startup
  • Banche con sistemi algorithmic trading (bassa latenza)

Confronto

  • Kafka — persistenza durevole, alta throughput ma alta latenza
  • RabbitMQ — AMQP protocol, routing complesso, più heavy
  • Redis Pub-Sub — semplice ma senza persistenza né resilienza
  • NATS — sweet spot tra semplicità, performance, resilienza cluster

Riferimenti: NATS Server in Go (2012). Derek Collison, Synadia Communications. CNCF Sandbox (marzo 2018), Incubating (marzo 2019). Licenza Apache 2.0. JetStream (2020, NATS 2.2). Protocollo testuale. Subject-based routing.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi