GH GambleHub

Flussi di dati tra nodi

(Sezione Ecosistema e Rete)

1) L'essenza e gli obiettivi

I flussi di dati tra i nodi sono canali gestiti per la trasmissione di eventi, stati e manufatti tra i ruoli dell'ecosistema (validatori/rider/indici/ponti/gateway/storage/analisi). Obiettivi:
  • Prevedibilità: SLO stabile per ritardo/successo/freschezza.
  • Affidabilità: resistenza alle perdite, ai duplicati, alle reorghe.
  • Sicurezza e compilazione: crittografia, firma, residenza.
  • Scalabilità: distribuzione geo, partizionamento, QoS.

2) Tassonomia dei flussi

1. Control Plane: confighi, ficcoflagi, criteri di instradamento/limiti.
2. Data Plane - Eventi di dominio ('deposit', 'payout', 'bridge').
3. Data Plane - Flusso a lunga durata (gRPC/WebSocket) per segnali e metriche live.
4. Batch/Backfill - Carichi di tagli storici, repliche, snapshot.
5. Replica/anti-entropia: state sync, merceologia, flussi CRDT.
6. Telemetria/osservabilità: loghi/metriche/trailer side-band, non interferiscono con l'UX principale.

A ogni tipo corrispondono le classi di QoS e le proprie regole di retro/ordine.

3) Topologia e routing

Hub-and-Spoke: hub regionali come pneumatici; Gli spoop sono i nodi dei ruoli.
Mesh/P2P: partiale per la replica/sistema pubblico.
Edge-Tiered - Sottili gateway (rate-limit/cache) per cluster regionali spessi.
Geo-Routing: Anycast/Latency-Aware LB + regole di residenza.

Chiave - Partition: 'partition _ key = chainId'tenant'topic'entityId' fornisce un ordine e una scala prevedibili.

4) Trasporti e formati

HTTP/2/3, gRPC/QUIC - bassa latitanza, multiplex, keepalive.
Kafka/Pulsar/NATS - code con persuasività/partenze/gruppi di concertazione.
WebSocket - eventi push e canali live.
Formati: Protobuf/Avro (schemi evolutivi), JSON per API esterne.
Indirizzi hash e ricevute Merkle per verificare l'integrità.

5) Ordine, consegna e finalizzazione

Modello di spedizione:
  • At-least-once (impostazione predefinita; richiede Idampotenza/Deadup).
  • Effetto exactly-once tramite Outbox/Inbox + Idempoted console.
  • Ordine: garantito all'interno della partitura; l'ordine interpartire non è garantito.
  • Finalizzazione: stati'osserved confirmed (K) 'finalization s'invalidated (reorg)'; per l'ottimistica è una finestra di discussione.

6) Idampotenza e deducibilità

Chiave di idempotenza per gli eventi:
  • `idempotency_key = ${chainId}|${block}|${tx}|${logIndex}|${type}`
Regole:
  • Upsert chiave, TTL finestra di deduplo ≥ 72 ore
  • Il conflitto payload è il criterio «origine verità» (priorità, versione, firma).
  • Per le richieste HTTP, titolo «Idempotency-Key» + registro delle risposte.

7) Code, backpressure e quote

Code: partenze a chiave; DLQ per i messaggi «velenosi».
Backpressure: prestiti/token, limitazione max-inflight, circuito-breaker.
Quote/QoS: P0 (critico), P1 (prodotto), P2 (bulk). Pool/limiti RPS/byties/s/sottoscrizioni separati.
Errore precoce delle query «costose», guard per intervalli/dimensioni.

8) Coerenza e modelli di dati

Read-you-write all'interno della partitura/nodo.
Avvenual Consistency tra regioni/partenze.
CRDT per la replica in conflitto-free di alcuni set (contatori, molteplici).
Snapshot + registri per bootstrap veloci e determinati replay.

9) Sicurezza e fiducia

mTLS tra i nodi, pinning delle chiavi, rotazione.
Firma messaggi/webhoop, timeline e finestra anti-replay.
Crittografia in viaggio/in pace; segregazione delle chiavi regionali.
Riduzioni PII: tornizzazione, proibizione dei dati personali nelle etichette/metriche.

10) Efficienza: pacchetti, compressione, cache

Batching raggruppa piccoli messaggi per ridurre gli overhead.
Compressione: zstd/gzip con dizionari sicuri.
Cache: risposte negative e guide hot; TTL e invalidità per evento.

11) Diagrammi di dati

Registro dei flussi/partenze

sql
CREATE TABLE streams (
name TEXT PRIMARY KEY,
partitions INT,
qos TEXT,        -- P0    P1    P2 retention_days INT,
schema_version TEXT
);

CREATE TABLE offsets (
stream TEXT, partition INT, consumer_group TEXT,
offset BIGINT, updated_at TIMESTAMPTZ,
PRIMARY KEY (stream, partition, consumer_group)
);

Registro eventi (Idempotent upsert)

sql
CREATE TABLE events_core (
id UUID PRIMARY KEY,
idempotency_key TEXT UNIQUE,
ts TIMESTAMPTZ,
partition_key TEXT,
type TEXT,
payload JSONB,
status TEXT,      -- observed    confirmed    finalized    invalidated signature TEXT
);

DLQ/quarantena

sql
CREATE TABLE dlq (
id UUID PRIMARY KEY,
stream TEXT, partition INT, offset BIGINT,
reason TEXT, payload JSONB, ts TIMESTAMPTZ
);

12) Criteri (YAML)

QoS e limiti

yaml qos:
P0: { ack_timeout_ms: 2000, retries: 3, backoff_ms: [100,400,800], rps_per_org: 1500 }
P1: { ack_timeout_ms: 5000, retries: 2, rps_per_org: 800 }
P2: { best_effort: true, rps_per_org: 200 }
limits:
max_message_bytes: 1048576 max_stream_subscriptions_per_client: 20

Finalizzazione e finestre

yaml finality:
eth-mainnet: { k: 12 }
polygon:   { k: 256 }
optimistic: { k: 0, challenge_minutes: 20 }

Routing/residenza

yaml routing:
prefer_local_region: true fallback: [nearest_healthy, master_hub]
residency:
eu: ["eu"]
uk: ["uk"]

13) Osservabilità: SLI/SLO

SLI (kernel):
  • Latency p95/p99 (ingress→egress, per-stream/QoS).
  • Success Rate / Drop Rate.
  • Queue Lag p95 e consumer lag per partenze.
  • Freshness p95 (ingest→consume).
  • Reorg/Invalidated Rated (se onchain).
  • Dedup Efficiency (% delle riprese assorbite in modo idropotente).
  • Geo-Hit Ratio (servito localmente).
SLO (punti di riferimento):
  • P0 latency p95 ≤ 400 ms; Success ≥ 99. 95%; Queue-lag p95 ≤ 2 с; Freshness p95 ≤ 60 с.
  • Dedup efficiency ≥ 99%; DLQ ≤ 0. 1% del traffico.

Dashboard: Streams Core/Lag & Freshness/ QoS & Errors/Geo/Security (mTLS/firme).

14) Pattern dei consumatori

Outbox/Inbox: pubblicazione atomica e applicazione idipotente.
Effetto exactly-once - Memorizza l'ultima chiave e versione applicata.
Watermarks: elaborazione degli eventi in ritardo (late data).
Idempotent Side-Efficis - Query esterne solo con chiave e registro delle risposte.

15) Modalità di degrado

Finalization-only mode: forniamo solo eventi finalizzati.
Cache-only per le guide, congelamento dei metodi pesanti.
Throttle P2 e «modalità dietetica» per gli striam (frequenza di aggiornamento ridotta).
Read-only per API secondarie.

16) Release e migrazioni senza downtime

Blue-Green/Canary per flussi e notebook.
Schema-first - Solo aggiunta di campi MAJOR è una versione parallela dei topic.
Migrazioni offset'ov: shadow-consumer, confronto lag/successo, cambio.

17) Regolamenti operativi

Ogni giorno: rapporto SLO (latency/success/lag/freshness), controllo delle firme, controllo DLQ.
Ogni settimana: revisione di partiture/quote, test DR (bootstrap), analisi di Dedup Efficiency.
Ogni mese: chaos-test (loss/jitter, broker guasto, reorg-burst), revisione finality-finestre.
Prima del lancio, canarino, gate SLO, piano di recupero.

18) Playbook incidenti

A. Esplosione di Queue-Lag/Consumer-Lag

1. Aumentare i consumatori/KEDA; 2) ridistribuire le partenze; 3) congelare P2 e bulk-jobs; 4) Analisi delle chiavi hot.

B. Crescita p95 Latency P0

1. P2-throttle, priorità P0; 2) ridimensionare gateway/broker; 3) cache solo per le guide 4) outlier-ejection.

C. DLQ alto/ripresa

1. Controlla la chiave di idempotenza/TTL; 2) Rafforzare la deduzione; 3) limitare il rumoroso produttore; 4) repliche dopo la fix.

D. Drift diagrammi/contratti

1. Abilita strict-mode (ritaglia i non-calidi) 2) informare il produttore; 3) rilascia l'adattatore; 4) Aggiorna i lenti.

E. Violazione della residenza/firma

1. Blocco di esportazione/canale; 2) rotazione chiavi/cerchi; 3) controllo e post mortem; 4) Aggiornamento dei criteri.

19) Assegno foglio di implementazione

1. Definire i tipi di flusso e la chiave di partizionamento.
2. Attivare Idempotence/Deadup e finalizzazione con finestre K/disputa.
3. Impostare code, QoS, quote e backpressure.
4. Eseguire mTLS/firme e criteri di residenza.
5. Inserisci schemi/registri (streams, offsets, dlq) e telemetria SLI/SLO.
6. Organizzare canary/blue-green e migrare diagrammi senza downtime.
7. Gestite le modalità di degrado e playbook degli incidenti.

20) Glossario

Backpressure - Controllo del carico di ingresso (crediti/token/limiti).
DLQ - Coda morta per messaggi problematici.
CRDT - Strutture dati con risoluzione dei conflitti senza coordinazione.
Finality - Irreversibilità evento/stato.
L'effetto Exactly-once è un risultato di ripetizione sicuro sopra la consegna at-least-once.
Watermark è il segno del progresso della lavorazione per gli eventi recenti.
Outler-ejection - Esclude le istanze degradate dal pool.

I flussi di dati tra i nodi non sono solo «coda e ascoltatore», ma una disciplina di sistema per l'ordine, la finalizzazione, l'idampotenza, la sicurezza e l'osservabilità. Le chiavi standard di partizionamento, QoS/quote, schemi rigorosi e SLO, insieme a modalità degradanti e playbook, forniscono all'ecosistema canali di trasmissione dei dati sostenibili su scala e sotto controllo.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Telegram
@Gamble_GC
Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.