Vai al contenuto principale
Versione: 3.0.0-alpha (Diátaxis)

Concetti — NATS

Architettura

NATS su Hikube è un servizio di messaggistica gestito, ultra-leggero e ad alte prestazioni. Ogni istanza distribuita tramite la risorsa NATS crea un cluster di server con supporto opzionale di JetStream per la persistenza dei messaggi.


Terminologia

TermineDescrizione
NATSRisorsa Kubernetes (apps.cozystack.io/v1alpha1) che rappresenta un cluster NATS gestito.
SubjectIndirizzo di routing dei messaggi (es: orders.created). Supporta i wildcard (*, >).
Publish/SubscribeModello di comunicazione in cui i publisher inviano messaggi a un subject e i subscriber li ricevono.
JetStreamEstensione di persistenza di NATS — archiviazione durevole dei messaggi con replay, acknowledgment e consumer.
StreamCollezione persistente di messaggi in JetStream, con politica di retention configurabile.
ConsumerAbbonamento durevole in JetStream con tracciamento della posizione (offset) e acknowledgment.
Request/ReplyModello di comunicazione sincrono — un client invia una richiesta e attende una risposta.
resourcesPresetProfilo di risorse predefinito (da nano a 2xlarge).

Modelli di comunicazione

NATS supporta tre modelli di comunicazione:

Publish/Subscribe

Il modello più semplice — un publisher invia un messaggio, tutti i subscriber ricevono una copia:

Queue Groups

I subscriber di uno stesso queue group si ripartiscono i messaggi (load balancing):

Request/Reply

Comunicazione sincrona con risposta attesa:


JetStream

JetStream aggiunge la persistenza a NATS:

  • I messaggi sono archiviati su disco negli stream
  • I consumer tracciano la propria posizione e possono rileggere i messaggi
  • Supporto per la consegna at-least-once e exactly-once
  • Retention configurabile per durata, numero di messaggi o dimensione
suggerimento

Attivate JetStream solo se avete bisogno di persistenza. Per il pub/sub effimero, il NATS di base è più leggero (< 10 MB di RAM per istanza).


Gestione degli utenti

Gli utenti NATS sono dichiarati nel manifesto con una password. Le credenziali sono archiviate nel Secret <istanza>-credentials.


Preset di risorse

PresetCPUMemoria
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi

Limiti e quote

ParametroValore
Repliche maxSecondo la quota del tenant
Impronta di memoria minima< 10 MB per istanza (senza JetStream)
Dimensione archiviazione JetStreamVariabile (in Gi)
Latenza tipica< 1 ms (stesso datacenter)

Per approfondire