Segnali tra i nodi
1) Concetto di segnale
Il segnale è l'unità minima di comunicazione di senso nella rete: evento, richiesta, conferma, stato, limite, criterio. A differenza del pacchetto grezzo, il segnale ha semantica (tipo, schema, contesto, invarianti) e garanzie (consegna, ordine, idampotenza).
Gli obiettivi sono ridurre la connettività dei servizi, accelerare la risposta ai cambiamenti, rendere la rete gestibile e osservabile.
2) Tassonomia dei segnali
Eventi - Fatti accaduti (Created, Updated, Settled, Slashed).
Comando (Command) - Intento azione (Mint, Pausa, RotateKey).
Query/Reply - Recupero stato/aggregazioni.
Stato (State Snapshot) - Istantanee periodiche (limiti, quote, configi).
Alert/Incidenti (Alert): deviazioni, degrado, violazioni della SLA.
治理/Politiki (Governance/Policy) - Parametri tariffari, limiti, versioni.
Dominio crociato (X-Chain/X-Domain) - Consente di spostare diritti/messaggi tra catene/zone di fiducia.
Ogni classe viene fissata dallo schema (ID versione, campi obbligatori, invarianti).
3) Modello di messaggio
Composizione minima:- `signal_id` (ULID), `causality_id` (trace/span), `ts`, `ttl`
- `type` (namespace:version), `schema_hash`
- «producer _ id», «domain», «auth _ proof» (firma/VC/ZK)
- «qos», «retries», «attempt»
- `payload` (CBOR/JSON/ProtoBuf), `crc`
- «idempotency _ key» (per entità aziendale)
4) QoS e classi di consegna
Q0 Fire-and-Forget: nessuna conferma (telematy, metriche).
Q1 At-Least-Once: retrai, deadup sul ricevitore, idampotenza.
Q2 Exactly-Once (efficiente): scrittura Idempotent + deadup + outbox transazionale/inbox.
Q3 Ordered - Mantiene l'ordine in base alla chiave di partitura (keyed partitioning).
Q4 Priority/Deadline: priorità e deadline (EDF/LLF) per i comandi critici.
La soluzione predefinita è Q1 + idampotenza; Q3 - per i flussi causali Il Q4 è per il avary/治理.
5) Ordine, causalità e idepotenza
Chiavi di causalità: «aggregate _ id», «variante», «prev _ hash».
Outbox/InBox-Pattern - Fissa l'evento e invia transazioni.
Hendler Idempotent: salva «idempotency _ key» in «seen table» + upsert.
Reconciliation - Comprimi periodici di snapshot e logi (repair jobs).
Limiti di retraine/TTL: protezione da ripetizioni «eterne» e deriva di stato.
6) Controllo del flusso e backpressure
Quote e token: leaky/bucket, rate-limit per tipo/consumer.
Contratto di frequenza/dimensione: batch size, window, max-in-flight.
Direttive Drop/Degrade: telemetria panoramica in caso di sovraccarico; Q4 essenziali da non prendere.
Equità: WFQ/DRR-pianificazione delle code.
Adattabilità: controller PID: l'aumento della latenza consente di ridurre la finestra.
7) Trasporti e pneumatici
Bus evento locale: Kafka/Pulsar/NATS/Redis Streams - Partizionamento delle chiavi.
Query sincrono: gRPC/HTTP2 per Query/Reply, timeout e Circus Breakers.
I canali di dominio incrociato sono livelli IBC/CCIP simili, relayer con garanzie, conferme provabili.
Edge/POP: buffer locali e ripetizione in core.
8) Sicurezza dei segnali
Autenticazione: mTLS/OIDC per S2S; messaggi firmati (EdDSA/secp256k1).
Autorizzazione: ABAC/RBAC su topic e tipi di segnale; Diritti RNFT/limiti.
Integrità: hash/merceology batch, riviste immutabili.
Privacy: campi ZK/Crittografia campi (FPE).
Anti - frod: firme comportamentali, traffico di miele, controlli stochastici.
9) Osservabilità e tracciabilità
Correlazione: trace-id/span-id in ogni segnale, etichette passanti.
Metriche: p50/p95 latency per tipo, success rate, timeout/reties%, DLQ depth, consumer lag.
I fogli della politica: chi, quando, cosa ha cambiato (治理/limity), le firme e i diffusi di configure.
Alerting: bilancio SLO degli errori; campioni sintetici per percorsi critici.
DLQ/Replay: code morte, reprocess con protezione da doppie.
10) Schemi e versioning
Schema Registry - Evoluzione dei campi (back/forward compatibile) e dei tipi semver.
Feature flags - Attiva gradualmente i campi/logiche.
I contratti di compatibilità sono i test «vecchio produttore» e viceversa.
Migrazioni: dual-write/dual-read, mirroring, piani sunset.
11) Regole per la deduplicazione e il retro
Retrai: ritardo esponenziale + jitter, massimo tentativi, quarantine dopo la soglia.
Deadup: memorizza le ultime chiavi «N» per la partitura o i filtri bloom; registrazioni TTL.
Anti-tempesta: eventi di gruppo ACK/NACK, coalescing (debounce/aggregate).
12) SLA/SLO per i segnali
Esempio di SLO di destinazione (per classe):- Q4: p95, 200 mc, successo 99. 99%, DLQ = 0, MTTR incidente di 15 minuti
- Q3: p95 500 mc, successo 99. Nove per cento, disturbo dell'ordine.
- Q1: successo di 99. 5% per la finestra T, p95 per 1-2 secondi.
Errore budget: sovrapprezzo del download automatico delle velocità, attivazione delle priorità, flag fiech del degrado.
13) Segnali a catena incrociata (cartone multiplo)
Prove di eventi: light-client/state proofs invece di «credibilità releer».
Finalità: conteggio dei ritardi di finalizzazione del dominio, serrature temporanee (challenge perid).
Garanzie economiche: S-cauzione releer, slashing per false conferme.
Idampotenza X-Domain: globale «x _ msg _ id», tabelle seen su entrambe le estremità.
Criteri di uscita: rubinetti, limiti di volume/tempo, quorum manuale per gli attacchi.
14) Anti-collusione e abuso
Segnali di contraffazione: strong auth + rilevatore di anomalie comportamentali.
Repliche-attacco: nonce/TTL e chiavi singole.
Collusioni dei produttori: controllo correlato, campionamenti ciechi, multe per errore sistematico.
Farming eventi: tariffa qualità (classe Q), rate limits in base all'entità.
15) Playbook di implementazione
1. Mappatura dei domini e dei tipi di segnale. Definisci criticità (classe Q), proprietari, schemi.
2. Scelta dei trasporti e delle architetture di punta. Partizionamento delle chiavi di causalità.
3. Definizione SLO/SLA. Budget degli errori, alert, procedure di emergenza.
4. Security-by-default. Firme, mTLS, ABAC, rotazione chiave.
5. Idampotenza e dedotto. Outbox/InBox, seen-tables, TTL.
6. Backpressure. Quote, finestre, priorità, dashboard dei laghi.
7. Schema Registry & versioning. Contratti di compatibilità, matrici di prova.
8. Osservabilità. Traccia E2E, campioni sintetici, DLQ/Replay.
9. Pilota e game-days. Allenamenti per incidenti, repliche di vere e proprie unità.
10. Ridimensionamento. X-domain, limiti, rubinetti, post mortem pubblici.
16) Metriche e dashboard
Prestazioni: latency p50/p95/p99, throughput, consumer lag, in-flight.
Affidabilità: success rate, retry%, DLQ depth, duplicata ratio.
Ordine: out-of-order%, reordering distance.
Economia: costi di elaborazione/comunicazione, margine di classe, multe/incentivi.
Sicurezza: rate segnali sospetti, fols positivi/negativi.
治理: velocità di mappatura dei circuiti/regole, percentuale di upgrade di successo senza ritorno.
17) Modelli di contratti/servizi
Marchio Gateway: convalida, autenticazione, normalizzazione, priorità.
Schema Registry: conservazione/convalida degli schemi, compatibilità.
Server Router: routing per tipo/dominio, QoS, rate limits.
Idempotency Store: chiavi, TTL, deadup.
DLQ/Replay Service: quarantena, elaborazione ritardata, repliche per finestre.
X-Domain Relay - prove, garanzie, slashing, finalità.
Policy Hub: gestione dei limiti/configurazioni, controllo delle modifiche.
18) Foglio di assegno prod pronto
- Definite le classi QoS e SLO per tutti i tipi di segnale
- Incluse firme, mTLS, rotazione delle chiavi, ABAC
- Configurato outbox/inbox, idipotenti, deadup
- Implementati rate limits, backpressure, priorità
- Immesso Schema Registry, test di compatibilità, istantanee
- I dashboard disponibili sono latency/lag/DLQ, gli alert di bilancio degli errori
- Incidenti (game-days), repliche, post mortem
- Per X-domain incluse prove, garanzie e rubinetti di stop
19) Glossario
Classe di garanzia di consegna/priorità.
Idempotency: esecuzione ripetuta senza effetti collaterali.
Backpressure - Meccanismi che limitano il carico durante il sovraccarico.
DLQ: coda «morta» per l'elaborazione non corretta.
Trace/Span - Identificatori di tracciatura completa.
X-Domain/X-Chain - Percorsi di segnale di dominio/a catena incrociata.
I segnali correttamente progettati sono il sistema nervoso della rete. Standardizzando schemi, garanzie, sicurezza e osservabilità, l'ecosistema ottiene una fornitura prevedibile, una resistenza ai guasti e un'evoluzione controllata senza collegamenti nascosti o stampelle manuali.