目录文档-技术白皮书07-EFT.WP.Core.Threads v1.0

第3章 消息通道与背压


I. 范围与目标


II. 通道模型与消息格式

  1. 通道基本形制
    • chan = {name, mode, cap, policy, metrics},其中 mode ∈ {"spsc","mpsc","spmc","mpmc"}。
    • 队列状态:q_len(t)、cap、age_head(t)、blocked_put/blocked_get。
  2. 消息最小字段
    • msg = {eid, ts, tau_mono, idemp_key?, sem, ttl?, deadline?, payload_ref, trace_ctx?}。
    • 投递语义 sem ∈ {"at_most_once","at_least_once","exactly_once*"}(* 通过去重近似实现)。

III. 稳态与队列度量(S73 系列)

  1. 核心定义与恒等
    • 利用率:rho = lambda / mu;稳态必要条件:rho < 1。
    • Little 定律:L = lambda * W,对应队列:L_q = lambda * W_q。
  2. 近似公式(M/M/1 场景)
    • S73-1:W_q approx rho / ( mu * (1 - rho) )。
    • S73-2:W approx 1 / ( mu - lambda )。
  3. 批处理修正
    批大小 b >= 1 时有有效服务率:mu_eff approx mu * b;等效队长:q_len_eff = ceil( q_len / b )。

IV. 公设与约束(P73-*)


V. 背压信号与函数定义

  1. 背压强度
    • 定义:bp = min( 1 , max( 0 , a * ( q_len / cap ) + b * ( W_q / W_q_target ) ) ),a,b ∈ [0,1]。
    • 水位:wm_low < wm_high,当 q_len/cap >= wm_high 触发限流或丢弃;低于 wm_low 放宽。
  2. 控制动作
    • 输入端:shaping(rps)、batch_size↑、priority demotion。
    • 输出端:prefetch↓、consumer K_thr↑、worker 扩容。
  3. 反馈频率
    更新周期 T_bp 建议满足 T_bp << W_q,避免欠/超调。

VI. 溢出与丢弃策略

  1. 策略族与适用性
    • tail_drop:丢弃新到消息;对有序通道常用。
    • head_drop:丢弃最旧消息;用于时效性场景(最小化过期负担)。
    • random_drop:近似 RED;平滑拥塞。
    • shed_by_key(id):按 idemp_key 维度限流或丢弃高噪声源。
  2. 选择准则
    • 若优化 P99(latency):优先 head_drop 或 random_drop。
    • 若优化准确性:优先 tail_drop 或进入阻塞(需评估上游 rho)。

VII. 批处理与 ACK 语义


VIII. 投递语义与去重

  1. 语义对照
    • at_most_once:不重试,p_drop 可非零;最低延迟。
    • at_least_once:允许重复,结合 idemp_key 去重。
    • exactly_once*:通过 idemp_key + 幂等存储近似。
  2. 去重窗口
    dedup_table 存 (idemp_key, ts_last);规则:if tau_mono - ts_last <= Delta_t_dedup then drop duplicate。

IX. 端到端时序与年龄控制


X. 限流协同与稳定条件


XI. 容量规划与基线


XII. 接口绑定与不变量(I70-3 对齐)

  1. 绑定摘要
    • chan_open(name:str, cap:int, mode:str="mpmc") -> ChanRef(需校验 cap>0)。
    • chan_put(ch, msg|batch, key?, timeout?) -> bool(超时计入 TS.timeout.count)。
    • chan_get(ch, max_batch:int=1, timeout?) -> list(空超时计入 TS.timeout.count)。
    • set_backpressure(ch, strategy:dict) -> None(策略含 wm_low, wm_high, actions[])。
  2. 不变量
    q_len <= cap;bp ∈ [0,1];ACK 串行或幂等;trace_link(span,eid) 完整。

XIII. 可观测性与 SLI

  1. 指标映射 TS.*
    • TS.chan.cap、TS.chan.q_len、TS.backpressure.level、TS.drop.count、TS.retry.count、TS.timeout.count。
    • 延迟:TS.sli.queue_time_ms、TS.sli.latency_ms、TS.sli.p99_ms;吞吐:TS.sli.qps;错误:TS.sli.err_rate。
  2. 合规检验
    校核 check_dim( L - lambda * W ) = 0;窗口为 SLA_window。

XIV. 契约与测试矩阵

  1. 必测用例
    • rho < 1 稳态通过;wm_high 触发限流;head_drop/tail_drop/random_drop 行为正确。
    • at_least_once 去重有效;ack_timeout 重投不破坏顺序约束;Delta_t_dedup 生效。
    • 老化与过期:ttl 到期自动丢弃并审计。
  2. 断言结构(示例)
    assert_thread_contract(G, tests=[ {"type":"queue_stability","chan":"ingress","rho_lt":1.0}, {"type":"slo","p99_ms_le":SLO}, {"type":"drop_policy","mode":"head_drop"} ])。

XV. 运行流程 Mx-2(背压闭环)


XVI. 出厂条件与交付件


版权与许可(CC BY 4.0)

版权声明:除另有说明外,《能量丝理论》(含文本、图表、插图、符号与公式)的著作权由作者(“屠广林”先生)享有。
许可方式:本作品采用 Creative Commons 署名 4.0 国际许可协议(CC BY 4.0)进行许可;在注明作者与来源的前提下,允许为商业或非商业目的进行复制、转载、节选、改编与再分发。
署名格式(建议):作者:“屠广林”;作品:《能量丝理论》;来源:energyfilament.org;许可证:CC BY 4.0。

首次发布: 2025-11-11|当前版本:v5.1
协议链接:https://creativecommons.org/licenses/by/4.0/