GH GambleHub

Datenflüsse zwischen Knoten

(Abschnitt: Ökosystem und Netzwerk)

1) Wesen und Ziele

Datenströme zwischen Knoten sind verwaltete Übertragungskanäle für Ereignisse, Zustände und Artefakte zwischen Ökosystemrollen (Validatoren/Reader/Indexer/Bridges/Gateways/Storage/Analytics). Die Ziele sind:
  • Vorhersagbarkeit: Stabile SLOs durch Verzögerung/Erfolg/Frische.
  • Zuverlässigkeit: Widerstand gegen Verluste, Duplikate, Wiederholungen.
  • Sicherheit und Compliance: Verschlüsselung, Signaturen, Wohnsitz.
  • Skalierbarkeit: Geo-Distribution, Partitionierung, QoS.

2) Taxonomie der Ströme

1. Steuerebene: Configs, Ficheflags, Routing-/Limitrichtlinien.
2. Data Plane - event: domain events ('deposit.', 'payout.', 'bridge.').
3. Data Plane - Stream: Langlebige Streams (gRPC/WebSocket) für Signale und Live-Metriken.
4. Batch/Backfill: Downloads von historischen Schnitten, Repliken, Schnappschüssen.
5. Replikation/Anti-Entropie: State-Sync, Merklisierung, CRDT-Streams.
6. Telemetrie/Beobachtbarkeit: Logs/Metriken/Seitenband-Traces, stören nicht die Haupt-UX.

Jeder Typ entspricht QoS-Klassen und eigenen Retray-/Ordnungsregeln.

3) Topologien und Routing

Hub-and-Spoke: regionale Hubs als Reifen; Spooks sind Rollenknoten.
Mesh/P2P: partielle Zellularität für Replikation/Gossip.
Edge-Tiered: Dünne Edge-Gateways (Rate-Limit/Cache) → dicke regionale Cluster.
Geo-Routing: Anycast/Latency-Aware LB + Aufenthaltsregeln.

Der Schlüssel ist die Partitionierung: 'partition _ key = chainId' tenant 'topic' entityId 'gibt eine vorhersagbare Ordnung und Skala.

4) Transport und Formate

HTTP/2/3, gRPC/QUIC - niedrige Latenz, Multiplexing, keepalive.
Kafka/Pulsar/NATS - Warteschlangen mit Persistenz/Parties/Consumer-Gruppen.
WebSocket - Push-Events und Live-Kanäle.
Formate: Protobuf/Avro (Schaltungen mit Evolution), JSON für externe APIs.
Hash-Adressierung und Merkle-Quittungen zur Integritätsprüfung.

5) Bestellung, Lieferung und Finalisierung

Liefermodell:
  • At-least-once (Standard; Idempotenz/Dedup erforderlich).
  • Exactly-once-Effekt durch Outbox/Inbox + idempotent consumer.
  • Ordnung: innerhalb der Partei garantiert; Die parteiübergreifende Ordnung ist nicht gewährleistet.
  • Finalisierung: Status „observed → confirmed (K) → finalized → invalidated (reorg)“; für optimistic das Streitfenster.

6) Idempotenz und Dedup

Idempotence-Schlüssel für Ereignisse:
  • `idempotency_key = ${chainId}|${block}|${tx}|${logIndex}|${type}`
Regeln:
  • Upsert durch Schlüssel, TTL des Deduplexfensters ≥ 72 Stunden.
  • Auf dem Konflikt payload - die Politik „die Quelle der Wahrheit“ (die Priorität, die Version, die Unterschrift).
  • Für HTTP-Anfragen - Header 'Idempotency-Key' + Antwortprotokoll.

7) Warteschlangen, Backpress und Quoten

Warteschlangen: Parteien nach Schlüssel; DLQ für „giftige“ Nachrichten.
Backpressure: Credits/Token, Max-Inflight-Limit, Circuit-Breaker.
Quoten/QoS: P0 (kritisch), P1 (Produkt), P2 (Masse). Getrennte Pools/RPS/Bytes/s/Abonnements.
Admission Control: frühzeitige Ablehnung von „teuren“ Anfragen, Schutz nach Bereichen/Größen.

8) Konsistenz und Datenmodelle

Read-you-write innerhalb einer Partei/eines Knotens.
Eventual Consistency zwischen Regionen/Parteien.
CRDT für die konfliktfreie Replikation einiger Sätze (Zähler, Mengen).
Snapshots + Logs für schnelles Bootstrap und deterministisches Replay.

9) Sicherheit und Vertrauen

mTLS zwischen Knoten, Schlüsselpinning, Rotation.
Nachrichten/Webhook-Signaturen, Zeitstempel und Anti-Replay-Fenster.
Verschlüsselung unterwegs/in Ruhe; Segregation regionaler Schlüssel.
PII-Minimierung: Tokenisierung, Verbot personenbezogener Daten in Labels/Metriken.

10) Effizienz: Bündelung, Kompression, Cache

Batching: Gruppieren Sie kleine Nachrichten, um Overhead zu reduzieren.
Kompression: zstd/gzip mit sicheren Wörterbüchern.
Cache: negative Antworten und „heiße“ Verzeichnisse; TTL und Behinderung durch die Veranstaltung.

11) Datenschemata (Referenzen)

Register der Streams/Parties

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)
);

Ereignisprotokoll (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/Quarantäne

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

12) Politik (YAML)

QoS und Limits

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

Finalisierung und Fenster

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

Routing/Wohnsitz

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

13) Beobachtbarkeit: SLI/SLO

SLI (Kernel):
  • Latency p95/p99 (ingress→egress, per-stream/QoS).
  • Success Rate / Drop Rate.
  • Queue Lag p95 und consumer lag nach Parteien.
  • Freshness p95 (ingest→consume).
  • Reorg/Invalidated Rate (wenn onchain).
  • Dedup Efficiency (% idempotent absorbierte Takes).
  • Geo-Hit Ratio (lokal bedient).
SLO (Benchmarks):
  • P0 latency p95 ≤ 400 ms Success ≥ 99. 95%; Queue-lag p95 ≤ 2 с; Freshness p95 ≤ 60 с.
  • Dedup efficiency ≥ 99%; DLQ ≤ 0. 1% des Traffics.

Dashboards: Streams Core/Lag & Freshness/QoS & Errors/Geo/Security (mTLS/Signaturen).

14) Muster der Verbraucher

Outbox/Inbox: atomare Publikation und idempotente Anwendung.
Exactly-once-Effekt: Speichern Sie den zuletzt angewendeten Schlüssel und die Version.
Watermarks: Verarbeitung von verspäteten Ereignissen (Late Data).
Idempotent Side-Effects: Externe Abfragen nur mit Schlüssel und Antwortprotokoll.

15) Degradierungsregime

Finalized-only-Modus: Wir geben nur finalisierte Ereignisse aus.
Cache-only für Verzeichnisse, Einfrieren schwerer Methoden.
Throttle P2 und „Diät-Modus“ für Streams (reduzierte Aktualisierungsrate).
Nur für sekundäre APIs lesen.

16) Downtime-freie Releases und Migrationen

Blue-Green/Canary nach Streams und Consumern.
Schema-first: nur Felder hinzufügen; MAJOR sind parallele Versionen von Topics.
Offset-Migrationen: Schattenkonsumenten, Lag/Erfolg-Vergleich, Wechsel.

17) Betriebsvorschriften

Täglich: SLO-Bericht (Latenz/Erfolg/Lag/Frische), Unterschriftenprüfung, DLQ-Prüfung.
Wöchentlich: Revision der Parteien/Quoten, DR-Test (Bootstrap aus Snap-Shot), Analyse der Dedup-Effizienz.
Monatlich: Chaos-Tests (Loss/Jitter, Broker-Opt-out, Reorg-Burst), Überarbeitung der Finalitätsfenster.
Vor der Veröffentlichung: Kanarienvogel ≥120 min, SLO-Gates, Rollback-Plan.

18) Playbook der Vorfälle

A. Explosion von Queue-Lag/Consumer-Lag

1. Consumer/KEDA erhöhen; 2) Umverteilung der Parteien; 3) P2 und Bulk-Jobs einfrieren; 4) Analyse der „heißen“ Schlüssel.

B. Wachstum p95 Latency P0

1. P2-throttle, Priorisierung von P0; 2) skalieren Gateways/Broker; 3) Cache nur für Verzeichnisse; 4) outlier-ejection.

C. Hohe DLQ/Synchronisation

1. Idempotenz/TTL-Schlüssel prüfen; 2) Dedup verstärken; 3) Begrenzen Sie den lauten Produzenten; 4) Repliken nach dem Fix.

D. Drift von Regelungen/Verträgen

1. Strict-Modus aktivieren (Nicht-Valid abschneiden); 2) den Hersteller benachrichtigen; 3) den Adapter freigeben; 4) Aktualisieren Sie die Linter.

E. Verletzung des Wohnsitzes/der Unterschriften

1. Export-/Kanaleinheit; 2) Schlüssel-/Sert-Rotation; 3) Audit und Post-Mortem; 4) Aktualisierung der Richtlinien.

19) Checkliste Umsetzung

1. Definieren Sie die Thread-Typen und den Partitionierungsschlüssel.
2. Aktivieren Sie Idempotenz/Dedup und Finalisierung mit K/Spore-Fenstern.
3. Richten Sie Warteschlangen, QoS, Kontingente und Backpressure ein.
4. Führen Sie mTLS/Signaturen und Aufenthaltsrichtlinien aus.
5. Geben Sie Schemata/Register (Streams, Offsets, dlq) und SLI/SLO-Telemetrie ein.
6. Organisieren Sie Canary/Blue-Green und Migration von Schaltungen ohne Downtime.
7. Üben Sie degradierende Modi und Incident Playbooks.

20) Glossar

Backpressure - Steuerung der Eingangslast (Credits/Token/Limits).
DLQ ist eine „tote Warteschlange“ für problematische Nachrichten.
CRDT - Datenstrukturen mit Konfliktlösung ohne Koordination.
Finalität - Irreversibilität des Ereignisses/Zustands.
Exactly-once-Effekt - Wiederholungssicheres Ergebnis über at-least-once Lieferung.
Watermark - Markiert den Verarbeitungsfortschritt für spätere Ereignisse.
Outlier-ejection - Schließt degradierte Instances aus dem Pool aus.

Fazit: Die Datenströme zwischen den Knoten sind nicht nur „Warteschlange und Zuhörer“, sondern die Systemdisziplin von Ordnung, Finalisierung, Idempotenz, Sicherheit und Beobachtbarkeit. Standard-Partitionierungsschlüssel, QoS/Quoten, strenge Schemata und SLOs, zusammen mit degradierenden Modi und Playbooks, geben dem Ökosystem nachhaltige Datenkanäle auf der Skala und unter Kontrolle.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Telegram
@Gamble_GC
Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.