GH GambleHub

Сигнали між вузлами

1) Поняття сигналу

Сигнал - мінімальна одиниця смислової комунікації в мережі: подія, запит, підтвердження, статус, ліміт, політика. На відміну від «сирого» пакета, сигнал має семантику (тип, схема, контекст, інваріанти) і гарантії (доставка, порядок, ідемпотентність).
Цілі: знизити зв'язаність сервісів, прискорити реакцію на зміни, зробити мережу керованою і спостережуваною.

2) Таксономія сигналів

Подієві (Event): факти про подію (Created, Updated, Settled, Slashed).
Командні (Command): намір виконати дію (Mint, Pause, RotateKey).
Запит-відповідь (Query/Reply): отримання стану/агрегацій.
Стан (State Snapshot): періодичні знімки (ліміти, квоти, конфіги).
Алерти/Інциденти (Alert): відхилення, деградації, порушення SLA.
治理/Politiki (Governance/Policy): параметри тарифів, лімітів, версій.
Крос-доменні (X-Chain/X-Domain): перенесення прав/повідомлень між ланцюгами/зонами довіри.

Кожен клас фіксується схемою (ID версії, обов'язкові поля, інваріанти).

3) Модель повідомлення

Мінімальний склад:
  • `signal_id` (ULID), `causality_id` (trace/span), `ts`, `ttl`
  • `type` (namespace:version), `schema_hash`
  • 'producer _ id','domain','auth _ proof'( підпис/VC/ZK)
  • 'qos'( клас),'retries','attempt'
  • `payload` (CBOR/JSON/ProtoBuf), `crc`
  • 'idempotency _ key'( по бізнес-сутності)

4) QoS і класи доставки

Q0 Fire-and-Forget: без підтверджень (telemetry, метрики).
Q1 At-Least-Once: ретраї, дедуп на приймачі, ідемпотентність.
Q2 Exactly-Once (ефективна): ідемпотентний запис + дедуп + транзакційна outbox/inbox.
Q3 Ordered: збереження порядку за ключем партії (keyed partitioning).
Q4 Priority/Deadline: пріоритети та дедлайни (EDF/LLF) для критичних команд.

Рішення: за замовчуванням Q1 + ідемпотентність; Q3 - для потоків з причинністю; Q4 - для avary/治理.

5) Порядок, причинність та ідемпотентність

Ключі причинності: `aggregate_id`, `version`, `prev_hash`.
Outbox/InBox-патерн: транзакційна фіксація події та відправлення.
Ідемпотентні хендлери: збереження'idempotency _ key'в «seen table» + upsert.
Reconciliation: періодичні звірки снапшотів і логів (repair jobs).
Ліміти ретраїв/TTL: захист від «вічних» повторів і дрейфу стану.

6) Контроль потоку і backpressure

Квоти та токени: leaky/bucket, rate-limit за типами/споживачам.
Договір по частоті/розміру: batch size, window, max-in-flight.
Drop/Degrade-політики: оглядова телеметрія при перевантаженні; важливі Q4 не дропати.
Справедливість: WFQ/DRR-планування по чергах.
Адаптивність: PID-контролери: зростання затримки → зменшити вікно.

7) Транспорт і шина

Локальна шина подій: Kafka/Pulsar/NATS/Redis Streams - партіонування за ключами.
Синхронні запити: gRPC/HTTP2 для Query/Reply, тайм-аути і Circuit Breakers.
Крос-доменні канали: IBC/CCIP-подібні шари, релейєри із заставами, доказові підтвердження.
Edge/POP: локальні буфери і ретрансляція в core.

8) Безпека сигналів

Автентифікація: mTLS/OIDC для S2S; підписані повідомлення (EdDSA/secp256k1).
Авторизація: ABAC/RBAC на топіки і типи сигналів; RNFT-права/ліміти.
Цілісність: хеші/мерклізації батчів, незмінні журнали.
Конфіденційність: поля в ZK/шифрування полів (FPE для часткових витоків).
Анти-фрод: поведінкові сигнатури, «медовий» трафік, стохастичні перевірки.

9) Спостережуваність і трасування

Кореляція: trace-id/span-id в кожному сигналі, наскрізні лейбли.
Метрики: p50/p95 latency по типам, success rate, timeout/reties %, DLQ depth, consumer lag.
Логи політики: хто, коли, що змінив (治理/limity), підписи і диффи конфігів.
Алертинги: SLO-бюджети помилок; синтетичні проби для критичних маршрутів.
DLQ/Replay: мертві черги, reprocess із захистом від дублів.

10) Схеми та версіонування

Schema Registry: еволюція полів (back/forward compatible), semver типів.
Feature flags: поступова активація полів/логіки.
Контракти сумісності: тести «стара продюсер ↔ новий консюмер» і навпаки.
Міграції: dual-write/dual-read, дзеркальні топіки, sunset-плани.

11) Політики ретраїв і дедуплікації

Ретраї: експоненціальна затримка + джиттер, максимум спроб, quarantine після порогу.
Дедуп: зберігання останніх «N» ключів на партію або bloom-фільтри; TTL записів.
Анти-шторм: групові ACK/NACK, coalescing подій (debounce/aggregate).

12) SLA/SLO для сигналів

Приклад цільових SLO (по класу):
  • Q4: p95 ≤ 200 мс, успішність ≥ 99. 99%, DLQ = 0, MTTR інциденту ≤ 15 хв.
  • Q3: p95 ≤ 500 мс, успішність ≥ 99. 9%, порушення порядку ≤ 10⁻⁶/soobshcheniye.
  • Q1: успішність ≥ 99. 5% за вікно T, p95 ≤ 1-2 с.

Error budget: перевитрата → авто-скачування швидкостей, включення пріоритетів, фіч-прапор деградації.

13) Крос-ланцюгові сигнали (мультичейн)

Докази подій: light-client/state proofs замість «довіри до релеєра».
Фінальність: облік затримок фіналізації домену, тимчасові замки (challenge period).
Економічні гарантії: S-застава релеєрів, слешинги за помилкові підтвердження.
Ідемпотентність X-Domain: глобальний'x _ msg _ id', таблиці seen на обох кінцях.
Політики виходу: стоп-крани, ліміти об'єму/часу, ручний кворум при атаках.

14) Анти-колюзія і зловживання

Сигнали-підробки: strong auth + поведінковий детектор аномалій.
Реплей-атаки: nonce/TTL і одноразові ключі.
Колюзія виробників: кореляційний аудит, сліпі вибірки, штрафи за систематичну помилку.
Фармінг подій: тарифікація за якістю (Q-клас), rate limits по суті.

15) Плейбук впровадження

1. Картування доменів і типів сигналів. Визначити критичність (Q-клас), власників, схеми.
2. Вибір транспорту і топік-архітектури. Партіонування за ключами причинності.
3. Визначення SLO/SLA. Бюджети помилок, алерти, аварійні процедури.
4. Security-by-default. Підписи, mTLS, ABAC, ключова ротація.
5. Ідемпотентність і дедуп. Outbox/InBox, seen-tables, TTL.
6. Backpressure. Квоти, вікна, пріоритети, дашборди лагів.
7. Schema Registry & версіонування. Контракти сумісності, тестові матриці.
8. Спостережуваність. Трасування E2E, синтетичні проби, DLQ/Replay.
9. Пілот і game-days. Інцидентні тренування, реплей реальних логів.
10. Масштабування. X-domain, ліміти, стоп-крани, публічні пост-мортеми.

16) Метрики і дашборди

Продуктивність: latency p50/p95/p99, throughput, consumer lag, in-flight.
Надійність: success rate, retry %, DLQ depth, duplicate ratio.
Порядок: out-of-order %, reordering distance.
Економіка: вартість обробки/повідомлення, маржа по класу, штрафи/стимули.
Безпека: rate підозрілих сигналів, фолс-позитив/негатив.
治理: швидкість розкатки схем/політик, частка успішних апгрейдів без відкату.

17) Шаблони контрактів/сервісів

Signal Gateway: валідація, автентифікація, нормалізація, пріоритизація.
Schema Registry: зберігання/валідація схем, сумісність.
Signal Router: маршрутизація за типом/доменом, QoS-класи, rate limits.
Idempotency Store: ключі, TTL, дедуп.
DLQ/Replay Service: карантин, відкладена обробка, реплей по вікнах.
X-Domain Relay: докази, застави, слешинг, фінальність.
Policy Hub: управління лімітами/конфігами, аудит змін.

18) Чек-лист прод-готовності

  • Визначено класи QoS і SLO для всіх типів сигналів
  • Включені підписи, mTLS, ротація ключів, ABAC
  • Налаштовані outbox/inbox, ідемпотентні хендлери, дедуп
  • Реалізовані rate limits, backpressure, пріоритети
  • Введений Schema Registry, тести сумісності, мить-плани
  • Доступні дашборди: latency/lag/DLQ, алерти за бюджетами помилок
  • Відпрацьовані інциденти (game-days), реплей, пост-мортеми
  • Для X-domain включені докази, застави і стоп-крани

19) Глосарій

QoS: клас гарантій доставки/пріоритету.
Idempotency: повторне виконання без побічних ефектів.
Backpressure: механізми, що обмежують навантаження при перевантаженні.
DLQ: «мертва» черга для неуспішної обробки.
Trace/Span: ідентифікатори наскрізного трасування.
X-Domain/X-Chain: крос-доменні/крос-ланцюгові маршрути сигналів.

Підсумок: правильно спроектовані сигнали - це «нервова система» мережі. Стандартизувавши схеми, гарантії, безпеку і спостережуваність, екосистема отримує передбачувану доставку, стійкість до збоїв і керовану еволюцію без прихованих зв'язків і ручних милиць.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.