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

第4章 时序、一致性与故障语义


I. 范围与目标


II. 时钟体系与映射(tau_mono ↔ ts)

  1. 基本映射与漂移
    • S74-1:ts(t) approx tau_mono(t) + offset + skew * ( tau_mono(t) - tau0 ),其中 |offset| <= eps_off,|skew| <= eps_skew。
    • P74-1(计时一致):所有超时、重试与抖动评估一律以 tau_mono 计量;审计与对外事件以 ts 记录。
  2. 同步与重校准
    • 触发条件:当观测到 |ts_obs - ts(tau_mono)| > eps_resync 或累计漂移超阈。
    • 校准动作:更新 offset/skew,记录 eid_sync 与校准证据 Trace。
  3. 到达时校准(跨卷锚点)
    • S74-2(两口径并行)
      T_arr = ( 1 / c_ref ) * ( ∫ n_eff d ell );T_arr = ( ∫ ( n_eff / c_ref ) d ell )。
      差异报告:delta_form = | ( 1 / c_ref ) * ( ∫ n_eff d ell ) - ( ∫ ( n_eff / c_ref ) d ell ) |。
    • P74-2(对齐规则):若使用 T_arr 对 ts 校准,须明确路径 gamma(ell) 与测度 d ell,并在 manifest 标注两口径与 delta_form。

III. 因果与可见性:hb 关系

  1. 基本定义
    • hb 为严格偏序,满足自反否、反对称、传递(在本卷中使用传递闭包)。
    • 生成规则:
      1. 线程内程序次序:u -> v 则 hb(u,v)。
      2. 发送-接收边:send(msg) -> recv(msg) 则 hb(send,recv)。
      3. 同步原语:release(x) -> acquire(x) 则 hb(release,acquire)。
      4. 生命周期:spawn(child) -> start(child),done(child) -> join(child)。
  2. 可见性边界
    • P74-3(提交边界):只有跨越 hb 边后的写入对后继可见;未跨越的仅作局部效果。
    • P74-4(补偿优先):若无法建立 hb 使外部观察到一致历史,需发布补偿事件 compensate(eid_parent)(见本章 V)。

IV. 超时、重试与抖动的合成

  1. 时间预算与上界
    • S74-3:W_retry <= timeout * ( retries + 1 ) + J_total,其中 J_total = ∑ J_i。
    • S74-4(成功概率近似,独立丢弃):p_ok = 1 - ( p_drop )^( retries + 1 )。
    • P74-5(预算闭包):deadline 必满足 deadline >= W_retry + margin;若不满足,禁止发起请求或降级。
  2. 预算拆分
    budget_total = W_q_in + w(proc) + W_q_out + W_net;面向 SLO:P99(budget_total) <= SLO。

V. 投递语义与补偿事务

  1. 语义分级
    • sem="at_most_once":不重试,最小延迟,最高丢失风险。
    • sem="at_least_once":允许重复,需结合幂等 idemp_key 与去重窗口。
    • sem="exactly_once*":借助幂等存储与去重表的近似一次语义。
  2. 补偿与 SAGA
    • P74-6(可逆对):每个外部副作用 op_i 必提供 op_i^{-1} 或声明不可逆并给出隔离策略。
    • 最小序列:do1 -> do2 -> commit_k -> ...;若 do_j 失败且无法继续,按逆序触发 compensate:do_{j-1}^{-1} -> ... -> do1^{-1}。
    • 审计要求:记录 eid_flow、eid_comp 的 hb 链与最终裁决。

VI. 乱序、重复与去重窗口

  1. 乱序界与水位
    • 定义乱序跨度:span_reorder = max( ts_recv - ts_send )(限同 idemp_key 流)。
      S74-5:span_reorder <= J_net + eps_off + |skew| * Delta_t_window。
    • 水位推进:watermark(t) = min_observed_ts_up_to(t),用于判定“确定迟到”的阈。
  2. 去重表与窗口
    • 结构:dedup_table = {(idemp_key) -> ts_last}。
    • 规则:if tau_mono_now - ts_last <= Delta_t_dedup then drop duplicate else accept and update ts_last。
    • P74-7(窗口显式):Delta_t_dedup 必显式声明并与 span_reorder 与 ttl 协调:Delta_t_dedup >= span_reorder,ttl >= Delta_t_dedup。

VII. 故障模型与语义裁决

  1. 故障分类
    crash-stop(进程崩溃)、omission(丢包/丢 ACK)、partition(网络分区)、timing(超时/抖动异常)。
  2. 语义裁决
    • P74-8(分区优先级):当检测到 partition 与 SLA_window 冲突时,优先保障幂等与一致性,必要时进入降级或只读。
    • P74-9(取消传播):cancel_token 跨 hb 边传播,收到取消后禁止发起新的外部副作用。

VIII. 事务边界、幂等与一次语义近似

  1. 幂等契约
    定义:f(x; idemp_key) = f(x; idemp_key)(恒等)。
    P74-10:凡外部可见写入均需通过 idemp_key 或幂等存储层保护。
  2. Outbox/Inbox 模式
    • Outbox:业务操作与消息持久化同事务写入;由异步转发器投递。
    • Inbox:消费者先幂等落库再执行业务变更;完成后写确认位。
  3. 近似一次
    S74-6(最小充要条件,工程近似):atomic( write(idemp_key, state) ) ∧ dedup(Delta_t_dedup) ∧ ack(ordered)。

IX. 一致性级别与读取视图


X. 可观测性与 SLI(时序与语义维度)


XI. 接口绑定(I70 对齐摘要)


XII. 契约与测试矩阵(与 I70-8 配置)

  1. 必测条目
    • hb 保证:spawn/start、release/acquire、send/recv 三类边的可见性测试。
    • 超时合成:给定 timeout/retries/J_total,验证 W_retry 上界与 p_ok。
    • 乱序与去重:构造 span_reorder 极端场景,验证 Delta_t_dedup 不漏不误杀。
    • 补偿事务:部分失败时序下,compensate 逆序生效且外部状态回滚一致。
  2. 断言样例
    assert_thread_contract(G,[ {"type":"hb_edges","edges":["send->recv","release->acquire"]}, {"type":"timeout_retry","W_retry_le":budget}, {"type":"dedup","window":Delta_t_dedup}, {"type":"saga","compensate_order":"LIFO"} ])。

XIII. 运行流程 Mx-3(时序与语义闭环)


XIV. 出厂条件与交付件


版权与许可(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/