Перераспределение трафика
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/↑объем.
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⁻⁶/сообщ., 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 и налоговые удержания на выплатах
- Утвержден治理-процесс изменения весов/лимитов/цен (sunset)
16) Глоссарий
Перераспределение трафика: управляемый reroute/переназначение очередей/провайдеров.
Tail Amplification: p99/p50 — сила «хвоста» задержек.
FinalityTime: время до необратимости кросс-чейн события.
Utility-routing: выбор пути по агрегированной полезности.
WFQ/DRR: справедливая дисциплина обслуживания очередей.
Spillover tiers: понижение «мягких» классов в batch/edge при перегрузе.
Circuit breaker: автоматическое отключение деградировавшего маршрута.
17) Итог
Перераспределение трафика — это операционный контур устойчивости: измеряем → решаем → перенаправляем, не нарушая порядок, финальность и правила. Комбинация utility-маршрутизации, fairness/квот, строгих гарантий доставки и治理-контроля превращает мультичейн-экосистему в адаптивную систему, способную выдерживать пики спроса, инциденты и ценовые шоки — быстро, честно и экономично.