Перерозподіл трафіку
1) Що таке перерозподіл і навіщо він потрібен
Перерозподіл трафіку - це керована зміна маршрутів/провайдерів/черг для частин навантаження (потоків, ключів причинності, класів QoS) при перевантаженнях, інцидентах, цінових шоках або зміні комплаєнс-статусів. Цілі:- утримувати SLO (p95/p99, success rate) при сплесках;
- знижувати Tail Amplification і час фінальності;
- мінімізувати Cost-to-Serve без втрати якості і порядку;
- забезпечувати fail-closed поведінку при ризиках і порушеннях.
2) Об'єкти, ролі та класи QoS
Об'єкти перерозподілу: маршрути, бриджі, секвенсери, DA-пули, POP/edge, GPU/CPU кластери, черги сервісу.
Ролі: Operator/Router, Provider (узел/бридж/DA/GPU), Compliance Gate, Orchestrator, Auditor/Regulator, Treasury/治理.
- Q4 - дедлайнові команди (критично до порядку/фінальності).
- Q3 - впорядковані потоки (ключ причинності).
- Q2 - exactly-once ефективно (снапшоти/білінг).
- Q1/Q0 - телеметрія/аналітика/бест-еффорт.
3) Коли запускати перерозподіл (детект)
Тригери (будь-яка з умов):- p95/p99 вище коридору, TailAmplification = p99/p50 зростає.
- Queue depth або consumer lag перевищують пороги.
- Finality lag/bridge errors ростуть, reorg/orphan вище норми.
- Cost/Req на маршруті виходить за бюджет.
- Compliance event: гео/вік/санкції → блок/обмеження.
- Degradation signals: SLA-брейки, flap-rate, error-budget burn.
4) Рішення про новий маршрут (utility-функція)
Маршрут/провайдер вибирається за мінімальною очікуваною «вартістю» при дотриманні інваріантів:
Utility(route) =
wL·Latency_p95_EWMA
+ wJ·Jitter
+ wQ·QueueDepth
+ wC·Cost_per_unit (gas + DA + egress + compute)
+ wF·FinalityTime
+ wR·RiskScore
+ wA·AvailabilityPenalty
+ wG·Geo/CompliancePenalty
Профілі ваг залежать від класу QoS: для Q4 ↑wL, ↑wF, ↑wR; для Q1 ↑wC, ↓wF.
Жорсткі інваріанти: `Order(true) ∧ Idempotency(true) ∧ Quotas(true) ∧ Compliance(true)`.
5) Алгоритми і механіка перерозподілу
Consistent hashing per key → мінімізує перестановки;
Hot-Shard Relief - тимчасова підсегментація «гарячих» ключів.
Percentile-aware routing - рішення по p95/p99, а не p50.
EDF/LLF для Q4 (Earliest Deadline / Least Laxity First).
Weighted Fair Queuing/DRR - справедлива частка в загальних чергах.
Leaky/Token buckets - квоти per клас/маршрут/провайдер.
Circuit breakers — trip → reroute; half-open проби на відновлення.
Adaptive retries - обмежені ретраї з джиттером і дедлайнами.
Spillover tiers — downshift: Q0/Q1 їдуть в batch/edge, звільняючи смугу Q3/Q4.
6) Порядок, ідемпотентність, фінальність
Strict order per key (Q3/Q4) на обраному маршруті; при failover - «стоп-бар'єр» + replay з outbox/inbox, потім «розморожування».
Idempotency key + seen-таблиці (TTL) - дедуп при повторній доставці.
X-chain фінальність: враховуємо вікно'FinalityTime '/challenge; критичні операції отримують шлях з мінімальною сумарною фінальністю.
7) Економіка перерозподілу
Surge-надбавки: при зростанні черг/хвостів ↑ wC на перевантажених маршрутах.
Quality Factor (QF) провайдера впливає на обсяг і оплату.
Budget-ліміти: добові/годинні стелі вартості і egress.
Treasury hooks: стійкі домени якості отримують ↓take - rate/↑obyem.
8) Комплаєнс і гео-правила
Fail-closed: сумнів у статусі → блок, ручний кворум.
ZK-пропуски: док-ва віку/гео без розкриття ПДн.
Export/retention policies: DA/egress по регіонах, податкові утримання на шляху виплат.
Geo-evasion guard: сигнатури обходу → карантин + аудит.
9) Спостережуваність і алертинг
Трасування: 'x _ msg _ id','route _ id','provider _ id', стадії bridge/DA, фінальність.
Метрики: p50/p95/p99, retry%, timeout%, duplicate/out-of-order%, queue depth, finality lag, cost/req, surge-индекс.
Дашборди: Reroute Live, Tail Heatmap, Queue/Finality Monitor, Cost-per-Route, Fairness Panel.
Алерти: error-budget burn, flap-rate, DLQ depth, комплаєнс-блоки.
10) Інциденти (RCA) і протокол деградацій
1. Детект (див. § 3) → ізоляція маршруту (trip), перерозподіл часток.
2. Пом'якшення: downshift Q0/Q1, посилення пріоритету Q4/Q3, зріз лімітів «галасливим» потокам.
3. Компенсації: зі страхового пулу (S-застава, RNFT-правила).
4. Пост-мортем: причини, коригування ваг/лімітів, оновлення сигнатур, rehearsal.
11) Формули і орієнтири
SuccessRate = 1 − (timeouts + errors)/requests
TailAmplification = p99/p50 (мета: ↓, коридори per QoS)
Headroom = (cap − current)/cap
Cost/Req = Σ (ресурс × ставка )/успішні _ запити
FairnessIndex (Jain) = (Σ x) ²/( n· Σ x ²) за квотами/ресурсами
QualityFactor провайдера: (QF = f(\text{success}, p95, DLQ, finality))
Орієнтири SLO (приклад):- Q4: success ≥ 99. 99%, p95 ≤ 200 мс, DLQ = 0, MTTR ≤ 15 хв.
- Q3: порушення порядку ≤ 10⁻⁶/soobshch., p95 ≤ 500 мс.
- DA/Bridge: фінальність ≤ 3 × T _ block, помилкові підтвердження = 0.
12)治理: правила зміни ваг/квот/цін
Пропозали на зміну (w), квот, тарифів і QF-бонусів.
R-модифікатор голосів для якісних ролей (коридор [0. 8..1. 2]).
Sunset-правки: тимчасові зміни з авто-відкатом.
Публічна звітність: квартальні метрики перерозподілу і fairness-аудит.
13) Плейбук впровадження (за кроками)
1. Картування потоків і ключів причинності (по QoS/регіону/комплаєнсу).
2. Телеметрія та проби: OWD/RTT/jitter/queue/finality/cost (EWMA + p95/p99).
3. Політики Utility: профілі ваг per QoS, бюджети вартості, коридори surge.
4. Квоти та шейпери: токен-бакети per маршрут/провайдер/клас.
5. Гарантії доставки: outbox/inbox, ідемпотентність, порядкові бар'єри.
6. Fairness & backpressure: WFQ/DRR, anti-noise, spillover tiers.
7. Спостережуваність: дашборди, алерти, error-бюджети, DLQ/Replay.
8. Game-days/chaos: падіння домену/моста/DA, ціновий шок, гео-блок.
9. 治理: процедури зміни ваг/лімітів/цін (пропозали, sunset).
10. Пілот → масштабування: A/B профілів, ретрокалібрування, публічний звіт.
14) KPI програми перерозподілу
Доставка: success за класами QoS, DLQ = 0 (Q3/Q4), duplicate/out-of-order ↓.
Затримка: p95/p99 і TailAmplification в цільових коридорах.
Стійкість: MTTR медіана ≤ цільового, flap-rate ↓.
Економіка: Cost/Req ↓ при збереженні SLO; зростання частки «дешевих» маршрутів.
Справедливість: Jain в коридорі; зниження інцидентів «noisy neighbor».
Фінальність/безпека: finality lag ↓, 0 помилкових підтверджень.
Комплаєнс: 100% проходження geo/age/санкцій, нульові порушення.
15) Чек-лист прод-готовності
- Визначено QoS, SLO/SLA, ключі причинності та бюджети помилок
- Реалізовані utility-політики, квоти і токен-бакети per route/provider
- Включені consistent hashing, hot-shard relief, EDF/LLF (Q4)
- Налаштовані outbox/inbox, ідемпотентність і порядкові бар'єри
- Працюють WFQ/DRR, backpressure і spillover tiers
- Доступні дашборди latency/tail/queue/finality/cost і алерти
- Включені circuit breakers, DLQ/Replay і компенсації (S-ескроу)
- Проведені game-days/chaos і оформлені пост-мортеми
- Підключений Compliance Gate і податкові утримання на виплатах
- Utverzhden治理 -процес зміни ваг/лімітів/цін (sunset)
16) Глосарій
Перерозподіл трафіку: керований reroute/перепризначення черг/провайдерів.
Tail Amplification: p99/p50 - сила «хвоста» затримок.
FinalityTime: час до незворотності крос-чейн події.
Utility-routing: вибір шляху по агрегованій корисності.
WFQ/DRR: справедлива дисципліна обслуговування черг.
Spillover tiers: зниження «м'яких» класів в batch/edge при перевантаженні.
Circuit breaker: автоматичне відключення деградованого маршруту.
17) Підсумок
Перерозподіл трафіку - це операційний контур стійкості: вимірюємо → вирішуємо → перенаправляємо, не порушуючи порядок, фінальність і правила. Комбінація utility-маршрутизації, fairness/квот, строгих гарантій доставки i治理 -контролю перетворює мультичейн-екосистему в адаптивну систему, здатну витримувати піки попиту, інциденти і цінові шоки - швидко, чесно і економічно.