目录 / 文档-技术白皮书 / 07-EFT.WP.Core.Threads v1.0
I. 范围与目标
- 统一时钟体系与时间基准:tau_mono(单调时钟)与 ts(UTC),给出映射、漂移与校准规则。
- 形式化 hb(happens-before)关系与可见性边界,定义投递语义与补偿事务的接口契约。
- 完成超时、重试与抖动的合成时延上界;定义乱序、重复与去重窗口的度量与治理策略。
- 产出公设 P74-*、最小方程 S74-*、运行流程 Mx-3,并与实现接口 I70-4/I70-7/I70-8/I70-9 对齐。
II. 时钟体系与映射(tau_mono ↔ ts)
- 基本映射与漂移
- 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 记录。
- 同步与重校准
- 触发条件:当观测到 |ts_obs - ts(tau_mono)| > eps_resync 或累计漂移超阈。
- 校准动作:更新 offset/skew,记录 eid_sync 与校准证据 Trace。
- 到达时校准(跨卷锚点)
- 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。
- S74-2(两口径并行)
III. 因果与可见性:hb 关系
- 基本定义
- hb 为严格偏序,满足自反否、反对称、传递(在本卷中使用传递闭包)。
- 生成规则:
- 线程内程序次序:u -> v 则 hb(u,v)。
- 发送-接收边:send(msg) -> recv(msg) 则 hb(send,recv)。
- 同步原语:release(x) -> acquire(x) 则 hb(release,acquire)。
- 生命周期:spawn(child) -> start(child),done(child) -> join(child)。
- 可见性边界
- P74-3(提交边界):只有跨越 hb 边后的写入对后继可见;未跨越的仅作局部效果。
- P74-4(补偿优先):若无法建立 hb 使外部观察到一致历史,需发布补偿事件 compensate(eid_parent)(见本章 V)。
IV. 超时、重试与抖动的合成
- 时间预算与上界
- 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;若不满足,禁止发起请求或降级。
- 预算拆分
budget_total = W_q_in + w(proc) + W_q_out + W_net;面向 SLO:P99(budget_total) <= SLO。
V. 投递语义与补偿事务
- 语义分级
- sem="at_most_once":不重试,最小延迟,最高丢失风险。
- sem="at_least_once":允许重复,需结合幂等 idemp_key 与去重窗口。
- sem="exactly_once*":借助幂等存储与去重表的近似一次语义。
- 补偿与 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. 乱序、重复与去重窗口
- 乱序界与水位
- 定义乱序跨度: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),用于判定“确定迟到”的阈。
- 定义乱序跨度:span_reorder = max( ts_recv - ts_send )(限同 idemp_key 流)。
- 去重表与窗口
- 结构: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. 故障模型与语义裁决
- 故障分类
crash-stop(进程崩溃)、omission(丢包/丢 ACK)、partition(网络分区)、timing(超时/抖动异常)。 - 语义裁决
- P74-8(分区优先级):当检测到 partition 与 SLA_window 冲突时,优先保障幂等与一致性,必要时进入降级或只读。
- P74-9(取消传播):cancel_token 跨 hb 边传播,收到取消后禁止发起新的外部副作用。
VIII. 事务边界、幂等与一次语义近似
- 幂等契约
定义:f(x; idemp_key) = f(x; idemp_key)(恒等)。
P74-10:凡外部可见写入均需通过 idemp_key 或幂等存储层保护。 - Outbox/Inbox 模式
- Outbox:业务操作与消息持久化同事务写入;由异步转发器投递。
- Inbox:消费者先幂等落库再执行业务变更;完成后写确认位。
- 近似一次
S74-6(最小充要条件,工程近似):atomic( write(idemp_key, state) ) ∧ dedup(Delta_t_dedup) ∧ ack(ordered)。
IX. 一致性级别与读取视图
- 读取级别
read_local(线程本地)、read_committed(跨 hb 提交边界)、read_linearizable*(需全序裁决与仲裁时钟)。
星号表示工程近似,受 eps_off/eps_skew 与仲裁延迟影响。 - 视图构造
P74-11(视图单调):相同消费者对相同键的连续读取视图必须单调不回退;实现以版本戳或单调水位保障。
X. 可观测性与 SLI(时序与语义维度)
- 核心指标族
TS.sli.latency_ms{P50,P95,P99}、TS.sli.timeout_rate、TS.sli.retry_rate、TS.sli.reorder_span_ms、TS.sli.dup_rate、TS.sli.compensate_rate。 - 审计不变量
S74-7:窗口内校核 check_dim( L - lambda * W ) = 0;异常触发重估 lambda/mu 与 eps_skew/eps_off。
XI. 接口绑定(I70 对齐摘要)
- 计时与追踪:with_timeout(timeout)、trace_span(name, ...)、trace_link(span, eid)。
- 重试与幂等:retry(policy)、ensure_idempotent(fn, key_fn, window=Delta_t_dedup)。
- 绑定到数据规范:bind_to_parameters、bind_to_equations、enforce_arrival_time_convention(用于 T_arr 对齐)。
- P74-12(接口约束):retry 策略必须与 with_timeout 共同声明,且满足 S74-3;ensure_idempotent 的 window 与 Delta_t_dedup 一致。
XII. 契约与测试矩阵(与 I70-8 配置)
- 必测条目
- hb 保证:spawn/start、release/acquire、send/recv 三类边的可见性测试。
- 超时合成:给定 timeout/retries/J_total,验证 W_retry 上界与 p_ok。
- 乱序与去重:构造 span_reorder 极端场景,验证 Delta_t_dedup 不漏不误杀。
- 补偿事务:部分失败时序下,compensate 逆序生效且外部状态回滚一致。
- 断言样例
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(时序与语义闭环)
- 选择时间基准与初始 offset/skew,启用 tau_mono 计时与 ts 审计。
- 若涉及跨域校准,计算 T_arr(两口径)并应用对齐,记录 delta_form。
- 为关键路径配置 timeout/retries,按 S74-3 拆分预算并设置告警阈。
- 为外部副作用标注 idemp_key,配置 Delta_t_dedup 与 Outbox/Inbox。
- 以测试矩阵触发 hb、乱序、重复与补偿用例;修订策略直至通过。
- 上线后持续采集 TS.sli.*,当 reorder_span_ms 或 dup_rate 越阈,动态调优 Delta_t_dedup 与重试策略。
XIV. 出厂条件与交付件
- 通过 P74-*、S74-*、Mx-3 全量校核;TS.sli.* 指标入库并达成既定 SLO。
- 交付包含:时钟映射与校准记录、hb 证明草图、timeout/retries 策略卡、Delta_t_dedup 与补偿清单、assert_thread_contract 报告。
版权与许可(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/