Files
PolyGateway/research-wiki/designs/m2-distributed.md
T

2.4 KiB

type, node_id, title, date
type node_id title date
design design:m2-distributed M2 分布式:Redis 治理后端+背压+Postgres 遥测+pricing+Embedding+压测 harness 2026-07-21

M2 分布式:Redis 治理后端+背压+Postgres 遥测+pricing+Embedding+压测 harness

正文: 2026-07-20-m2-distributed-design.md(本页为图谱节点,只记选定方案与否决备选)。

选定方案与关键理由

选定 理由
Redis 限流 单条六道闸 Lua 逐字移植(CHS scripts.py),key 前缀 pgw:limit: 生产验证语义 + 保真成本最低
Redis 熔断 五操作 Lua 逐字移植(provider_gate),epoch 仅开断 +1;probe_ttl 显式配置 + 装配守卫 不动 M1 冻结的 BreakerConfig
契约测试 conftest fixture 增 redis param + 真实 Redis(db3);时间语义用小 TTL 真实等待变体 M1 预留接入方式,契约文件零改动
背压 stall 在 RetryMW _on_no_runnable wait 分支内做双条件判死 + poll jitter 挂接点 M1 已预留,不新增洋葱层
Postgres 遥测 DSN 自建 lazy 池(可注入 pool),失败静默降级,ON CONFLICT DO NOTHING 与 SQLiteRecorder 对称;GovDoc taskrun 蓝本反转降级方向
pricing JSON 价格表文件(PGW_PRICING_PATH)/dict 注入,零内置单价;计算点在 TelemetryEmitter 中转网关计费非官方价,内置表必然过时(P5)
Embedding 独立 EmbeddingClient + 复用后端/错误分类/退避/冷却备忘/遥测 helper;async httpx、list[list[float]]、normalize 开关、必填 batch_size、可选 expected_dim 校验 零改 M1 冻结面
harness tools/soak/ 四组件(corpus/scenarios/run_soak/scoreboard),吃自身遥测狗粮 findings/2026-07-20-m2-soak-workload.md 为准

被否决的备选及原因

  • 限流 WATCH/MULTI 事务、每闸独立脚本+补偿:原子性碎裂/竞态风暴。
  • fakeredis 契约测试:不执行真实 Lua,违"Redis 测试用真实 Redis"规约。
  • 独立 BackpressureMW:改冻结洋葱层序。
  • probe_ttl 装配自动计算(CHS container 形态):改冻结配置形态,守卫同效。
  • Postgres 走 SQLAlchemy:重依赖违依赖极简。
  • pricing 内置默认价格表 / env 平铺单价键:过时默认值掩盖成本 / env 键名不友好。
  • Embedding 泛化中间件洋葱(G1):动冻结核心,gold-plating;塞 chat 洋葱(G3):类型欺骗。
  • GovDoc embedding 自研退避与 on_usage 回调、VT 同步接口:有意放弃,统一库治理栈与遥测。