332 lines
27 KiB
Markdown
332 lines
27 KiB
Markdown
# 项目进度
|
||
|
||
## 2026-08-07
|
||
|
||
- 已校正 `proxy-loadgen` 架构文档:HTTP、CONNECT 长连接和 Extract 都已实现;仅故障注入、
|
||
进程级资源采样和代表性集群报告仍未完成。
|
||
- Kubernetes 开发 mTLS Overlay 恢复 ConfigMap 内容哈希:配置更新会重写 Controller、Gateway
|
||
和 Checker 的 volume 引用并触发滚动;固定名称 Secret 的轮换仍要求显式受控重启。
|
||
- GitHub Actions Deployment job 现同时静态展开生产与测试 Compose,并对本地 Compose 配置和
|
||
开发 mTLS 配置执行严格校验,避免仅检查 Kubernetes 覆盖层。
|
||
- Docker 构建上下文现由根 `.dockerignore` 保护:本地控制面证书/私钥、环境文件、凭据文件、
|
||
Git 元数据和构建产物不会被 `COPY . .` 发送到镜像构建器;部署测试固定该清单。
|
||
- OpenAPI 标准验证已固定为 `@redocly/cli@2.25.4`:`verify-openapi.ps1` 对两份 OpenAPI
|
||
3.1 文档运行最小规则集,并将 Tag 描述提升为错误;本地统一校验与 GitHub Actions 均执行该门禁。
|
||
- 运行验证环境探测:Windows Go 为 `CGO_ENABLED=0`,系统没有可用 C 编译器;WSL 仅安装
|
||
`docker-desktop` 发行版。Docker Engine 可用,但 Dockerfile 所需的
|
||
`golang:1.26-bookworm`、`debian:bookworm-slim` 未缓存,且 Docker Desktop HTTPS 代理不可用;
|
||
容器端到端验证尚未完成。
|
||
- 控制面 mTLS 身份新增公共 `tlsreload.ResolveSPIFFEIdentity`:Gateway 和 Checker 在
|
||
`PROXY_POOL_AUTO_IDENTITY=true` 时只接受与信任域、环境和角色精确匹配的唯一 SPIFFE URI,
|
||
并在显式 ID 不匹配时拒绝启动。Compose 与 Kubernetes 开发 mTLS Overlay 已移除手工 ID,
|
||
改由挂载证书派生;定向 Go、文档、Compose、Kustomize 与严格配置校验均通过。
|
||
- SPIFFE URI 解析已下沉到 `workerruntime.SingleSPIFFEIdentity`,Controller 授权和客户端
|
||
自动派生共用同一边界。X.509-SVID 叶证书必须且只能包含一个 URI SAN;用户信息、端口、查询、
|
||
片段、转义路径、非精确角色路径和跨角色多 URI SAN 均拒绝。
|
||
- Gateway 静态 `routing.action: direct` 已贯通严格配置、控制面协议、完整 Snapshot、
|
||
HTTP/CONNECT 转发和目标地址策略。直连请求不会申请 Proxy 容量、创建粘性绑定或上报
|
||
Proxy Outcome;`onUnavailable.action: direct` 仍保留为代理无候选时的独立回退语义。
|
||
- Loadgen 固定速率模式已修复截止时排队令牌的记账:`generated = requests + dropped`,
|
||
防止报告将未执行的请求误记为已发送。
|
||
- Compose 已启用 Controller、两个从开发证书派生身份 Gateway 和 Checker 的本地 mTLS 控制面;
|
||
PowerShell/.NET 证书生成器输出 7 天 Controller DNS SAN 与角色隔离的 SPIFFE URI,
|
||
私钥目录被 Git 忽略。Checker 新增 `/livez`、`/readyz`、`/metrics`,首次成功领取任务
|
||
批次后才 Ready,后续领取失败会撤销 Ready。
|
||
- 管理态禁用当前 Sequential Upstream 现不依赖 Provider 空结果:Controller 以
|
||
`ExpectedCurrent` CAS 推进到后续启用项,`loop` 可回绕,`stop`/`stayLast` 无后继时
|
||
原子停用路由并刷新完整 Snapshot。定向测试覆盖无 Provider 读取、末端、回绕和跨副本竞争。
|
||
- Health Scheduler 已与 PostgreSQL Admin 管理态对齐:每轮以同一配置 revision 合并启用状态,
|
||
被管理态停用的 Upstream 不再读取 Redis due-index,也不会创建 BASIC、EGRESS、TARGET 任务;
|
||
管理态停用 Routing 则仅阻止该 Routing 的 TARGET 任务;revision 不匹配、状态缺失或重复时失败关闭。
|
||
- Grafana Overview 与 Prometheus 告警已从早期失效指标迁移到当前代码注册的低基数指标,覆盖
|
||
Gateway、Controller 容量、Provider、Extraction、Checker 与 Drain。部署测试会解析仪表盘和
|
||
规则,拒绝未注册指标以及 `upstream`/`worker` 聚合或 selector 标签,防止观测资产再次漂移。
|
||
- Gateway 新增按固定 `HTTP`/`CONNECT` protocol 标签聚合的请求总耗时 Histogram,覆盖从准入到
|
||
HTTP 响应或 CONNECT 隧道结束的完整生命周期;Grafana Overview 已恢复该真实指标的 p99 面板,
|
||
Prometheus 以相同固定标签集监控持续高于 5 秒的 p99。
|
||
- 全仓 `go test -count=1 -timeout 60s ./...`、`go vet ./...`、`go build ./...`、
|
||
Protobuf descriptor、Kustomize Base 渲染及开发证书 SAN/SPIFFE 校验均通过。Compose
|
||
容器端到端启动在拉取 Dockerfile 前端与监控镜像时受 Docker Desktop HTTPS 代理缺失阻断,
|
||
未把该环境问题记为运行验证通过。
|
||
|
||
## 2026-08-02
|
||
|
||
- 容量可观测性已接入 Provider 补池对账循环:每个成功 Redis 库存读数更新 Controller
|
||
进程级 managed/available/effective/pending/active Gauge,失败只增加固定
|
||
`success`/`error` 的读取计数。Upstream 仅用于进程内聚合,领导任期结束即清除,
|
||
不成为 Prometheus 标签;不进入 Gateway 10 万 QPS 容量热路径,也不增加 Redis 查询。
|
||
- Extraction 可观测性已接入公用 `MetricsObserver`:Controller 暴露固定 `result`
|
||
的请求计数、请求 Proxy 总数和响应交付 Proxy 总数。事件在服务单一出口分类,覆盖
|
||
complete/partial/empty/insufficient/idempotency_conflict/rate_limited/unavailable/
|
||
invalid/error;不带 Client、Request、Filter、Upstream、Proxy 或错误文本标签。
|
||
幂等重放统计响应交付而不误计为新的 Redis 消费。
|
||
- Provider 拉取可观测性已接入公用 `ResultObserver`:Controller 暴露
|
||
`proxy_pool_controller_provider_fetch_results_total{class}`、
|
||
`proxy_pool_controller_provider_valid_candidates_total` 与
|
||
`proxy_pool_controller_provider_new_proxies_total`。`class` 仅允许 `valid`、`empty`、
|
||
`duplicate_only`、`error`;指标不包含 Upstream、Proxy、IP、错误文本或凭据标签。
|
||
Provider 指标已完成。
|
||
- 新增统一 JSON 结构化日志出口:Controller、Gateway、Checker 的进程级致命错误只输出
|
||
组件和稳定错误类型,不输出原始错误文本。敏感字段、错误对象、Bearer、URL 用户信息和
|
||
查询 Secret 均由 `platform/logging` 脱敏;回归验证使用真实 Secret 标记,且不在请求
|
||
热路径逐条写日志。
|
||
- 已实现管理态驱动的即时完整快照刷新:`SnapshotRefreshBroker` 以每个 Worker 流一格的
|
||
非阻塞通道广播,连续变更自动合并。Admin 成功提交 Upstream 启停、Routing 切换和配置
|
||
发布时触发通知;Worker 保留原有定时刷新作为失效保护。Routing 切换不按旧 Upstream
|
||
强制 Drain,共享上游不会受误伤;Sequential 的后续预留直接使用新 CurrentUpstream,
|
||
旧 Proxy 和活跃连接自然排空。Worker/Admin/Bootstrap 定向测试已通过。
|
||
- Drain 可观测性已落地:`proxy_pool_controller_drain_candidates_total` 与
|
||
`proxy_pool_controller_drains_started_total` 只允许 `unhealthy` 和
|
||
`upstream_disabled` 两种 reason。健康异常与上游停用 Reaper 复用领域接口上报,
|
||
不产生 Proxy、Worker、上游或地址标签;Collector 注册复用与两类 Reaper 都有单测。
|
||
- 已实现上游停用的自动 Drain:有效策略由静态配置与 PostgreSQL Admin 管理态共同计算,
|
||
Controller 持续发布到 Redis;每个候选绑定上游 revision,只从 `owned(upstream)` 有界索引
|
||
读取。Redis 在创建 Drain Ticket 前原子复核策略 revision、Proxy 上游、Worker、assignment
|
||
epoch 和租约,重启用或重新分配后的旧候选不会排空当前归属。
|
||
- 新增 Memory/Redis 契约与 Controller Reaper 测试,并修复 Provider Supervisor 只看管理态
|
||
而可能重新启动静态停用上游的问题。`go test -count=1 -timeout 60s ./...` 和 Redis 集成标签
|
||
测试已通过。
|
||
- 已提交并推送 `2af504f feat: expose gateway outcome metrics`:Gateway 请求路径使用
|
||
领域 Metrics Observer,将固定阶段的成功/失败聚合到
|
||
`proxy_pool_gateway_outcomes_total{stage,result}`,并暴露本地 Outcome 队列满时的
|
||
`proxy_pool_gateway_outcome_queue_dropped_total`。指标不包含 Proxy、路由、目标、客户端或凭据。
|
||
- 新增队列、Prometheus 注册复用和 Gateway 启动装配测试;`go test ./...` 与
|
||
`scripts/verify.ps1` 全部通过,后者按环境跳过 `CGO_ENABLED` 未启用的 race 测试。
|
||
- 已完成持续 `UNHEALTHY` 后的安全淘汰:首次异常时间写入 Redis TTL 活动池,
|
||
`check.unhealthyRemoveAfter` 按 Upstream 生效;Controller 通过公用、有界的
|
||
Reaper 回收未分配代理。仍持有 Worker ownership 的候选以 `(proxy, worker, assignment
|
||
epoch, unhealthySince)` 有界返回,并由条件式 Drain 原子复核后创建 Ticket;排除 Snapshot
|
||
ACK 与 Runtime 零计数收尾后再删除,避免影响仍在 Gateway Snapshot 中使用的代理。
|
||
- Redis 集成标签测试在未设置 `PROXY_POOL_TEST_REDIS_URL` 时现能正确跳过所有契约
|
||
子测试;`go test ./...`、`go test -tags=integration ./internal/adapters/redisactivity`
|
||
与 `scripts/verify.ps1` 已通过,race 仍由 Linux CI 执行。
|
||
- Worker 控制面改为持续完整 Snapshot 发布:Controller 在每份 Snapshot 有效期的一半
|
||
前重建并下发递增版本,Gateway 在同一长连接内原子替换视图;构建失败或流中断时才由
|
||
SessionSupervisor 按原有退避重连。该机制复用 `RefreshingSnapshotSource`,不降低
|
||
Delta 的 fail-closed 校验。
|
||
- Health Scheduler 现在先建立 EGRESS 与 Routing TARGET 的独立 due 引用,再投递
|
||
BASIC 任务;在单项小批次下,短 TTL Proxy 不会因 BASIC 先出队而错过首次出口/目标探测。
|
||
- 修复 Snapshot epoch/version 栅栏:Worker 流的 `version` 在 ownership epoch 前进时
|
||
仍严格递增,Gateway 以连续版本加非倒退 epoch 进行完整快照原子替换,避免动态分配后的
|
||
有效刷新被错误拒绝。这是后续自动 Drain 编排的必要前提。
|
||
- Drain 首次发起现在原子推进 ownership epoch,并写入由 Proxy、Worker、原 assignment
|
||
epoch 与所需 Snapshot epoch 组成的待绑定 Ticket;Redis 使用 `drain-tickets` 与按
|
||
Worker 的 `worker-draining` 索引,ACK、过期和硬删除会清理 Ticket。Worker Handler
|
||
在持久登记完整 Snapshot 引用后,核验代理确实不在完整视图内,再绑定 Ticket 的
|
||
session/version/epoch/checksum 屏障;同一 Redis Runtime 替换事务验证当前 session ACK、
|
||
Ticket 屏障和完整报告零计数后自动删除 owner/Ticket/Drain 索引并恢复 AVAILABLE 代理的
|
||
可分配索引,避免读写分离竞态。
|
||
|
||
## 2026-07-30
|
||
|
||
- Gateway `Capacity` 新增一次打包原子读取,`snapshot.Store` 可生成完整稀疏
|
||
Active/Reserved 运行态报告;当前快照已移除但仍有连接的 Proxy 会持续以
|
||
draining 上报,归零后从后续报告消失。
|
||
- 新增公用 `workerruntime` session/report/read seam 与并发安全 MemoryStore;
|
||
完整替换、空报告清零、session fencing、单调 sequence、同内容幂等重放、
|
||
冲突/倒序拒绝和 TTL fail-closed 均已有单测。
|
||
- 生产 `redisactivity` Adapter 新增 Worker session/运行态 Lua 和权威
|
||
`pool.InventoryReader`;Managed/Available Slots 原子计入状态、TTL safety、
|
||
MaxConcurrency、ownership 及 Active/Reserved,未知或过期运行态贡献零容量。
|
||
- 真实 Redis 8.2 已覆盖 ACK snapshot/epoch、旧 session、空报告、超前 epoch、
|
||
报告过期、扫描预算耗尽及容量聚合。Managed 使用已有权威计数,Available
|
||
Slots 只扫描目标 Upstream 的未分配/已分配可用索引;Gateway 报告扫描当前
|
||
Snapshot,并用分片索引补充已移除但仍非零的 runtime,历史注册表设置硬上限。
|
||
WorkerControlPlane 接收端、Provider
|
||
Fleet/bootstrap、全局 `fetch.maxTotal` 和健康执行链仍待完成,总验收计数保持
|
||
51/73。
|
||
- Gateway 当前 Proxy 禁用活跃索引回调,只有移出 Snapshot 后才开启分片追踪;
|
||
本机 100k Proxy `Acquire` 三轮 1 秒基准为 893.9-1047 ns/op、256 B/op、
|
||
2 allocs/op。该数据只证明本地调度微基准,不代表 100k QPS 集群验收。
|
||
|
||
- 新增公用 Provider `Coordinator.RunLeader` / `LeaderSession` 深 seam 和独立
|
||
`redisprovider` Adapter;Redis Lua 原子维护 generation、epoch、Leader 租约、
|
||
全局 requestInterval 与带 TTL 的 maxInFlight Permit,异常时 fail-closed。
|
||
- 真实 Redis 8.2 已验证两个 Controller 同 Upstream 只有一个 Leader、取消后
|
||
epoch 单调接管、跨实例请求限速/在途上限、Permit 幂等释放,以及 Redis 协调
|
||
状态丢失后使用新 generation 自动重建。
|
||
- 新增显式 `refill.reconcileInterval/minimumAvailableSlots/targetAvailableSlots` 与
|
||
`fetch.estimatedIPsPerCall`;20 份示例、主配置、Compose/Kubernetes 配置均通过
|
||
严格解析和理论容量边界校验。
|
||
- Pool Reconciler 已按并发槽位实现 minimum/target 迟滞并计入 pending 预估;
|
||
FetchBudget 只在没有 pending 请求时接受 Redis Managed 同步,消除 Upsert 与
|
||
Permit Complete 短窗口中的重复计数风险。
|
||
- Provider Fleet、Worker Active/Reserved 容量汇总和 Controller bootstrap 接线
|
||
尚未完成,本轮不增加 51/73 的总验收计数。
|
||
|
||
- 新增公用 `platform/metrics.NewHandler`,固定提供 `/livez`、`/readyz` 与
|
||
`/metrics`;Readiness 失败只返回脱敏状态,不泄露底层存储错误。
|
||
- Metrics 地址进入严格配置校验;Controller Runtime 支持 Metrics-only 和
|
||
Distribution/Admin/Metrics 三监听器隔离、首错联动及统一优雅停机。
|
||
- Controller bootstrap 使用同一根生命周期装配 Prometheus 默认 Gatherer,
|
||
Metrics Readiness 按启用能力低成本检查 PostgreSQL/Redis,不触发 Provider 或
|
||
扫描 Proxy 明细。
|
||
- `go test` 定向包和 `.\scripts\test-controller.ps1` 通过;真实 PostgreSQL 18 +
|
||
Redis 8.2 fixture 已验证 `/readyz` 与 Prometheus 输出,临时容器和网络已清理。
|
||
|
||
- 新增 `cmd/proxy-controller` 与公用 `controller/bootstrap.Run`;配置只加载一次,
|
||
同一快照用于存储连接、PostgreSQL 管理态提交和 HTTP Runtime 构造,避免启动
|
||
期间二次读取产生配置撕裂。
|
||
- Bootstrap 已封装 PostgreSQL Ping/迁移/pgx Adapter、Redis Ping/活动池、
|
||
Distribution/Admin 服务构造、运行错误与关闭错误合并;`main` 仅处理
|
||
`-config`、`PROXY_POOL_CONFIG`、信号上下文和退出码。
|
||
- 活动池新增公用 `StateInventoryReader`;Memory/Redis 使用同一契约,Redis
|
||
通过低基数 Hash 和五个原子 Lua 维护七类状态计数,不扫描 Proxy 明细。
|
||
- 新增 `controller/operations.Reader`,把当前配置中的 Upstream 与活动状态映射到
|
||
Admin Status;Worker/Snapshot 与 Provider 统计尚无来源时保持空/零,不用
|
||
`Managed` 冒充 `Available`。
|
||
- Redis 状态读取在有界过期清理仍有积压或检测到负计数时 fail-closed,避免
|
||
Admin 返回包含失效代理或损坏计数的成功响应。
|
||
- 本轮全仓 `go test -count=1 -timeout 60s ./...`、`go vet ./...`、
|
||
`go build ./cmd/proxy-controller` 与 `git diff --check` 通过;新加的 Redis
|
||
backlog/负计数场景也已通过真实 Redis 8.2 fixture。
|
||
- 新增 `test-controller.ps1` 双存储 fixture;真实 PostgreSQL 18 + Redis 8.2 已
|
||
通过迁移、启动配置提交、Redis Readiness 与 Admin Status 组合验证。
|
||
- 固定 `github.com/jackc/pgx/v5 v5.6.0`,实现封装在 `adminstate.Store` 后的
|
||
PostgreSQL 深适配器;配置、Upstream、Routing mutation 在同一事务中提交
|
||
revision、管理状态、审计与 Outbox,数据库错误不泄漏 DSN、SQL 或参数。
|
||
- 实现只读 Repeatable Read Snapshot、审计分页、`FOR UPDATE SKIP LOCKED`
|
||
Outbox 领取和整批 ACK;具体 Adapter、SQL、pgx 类型及 codec 不向业务层暴露。
|
||
- 新增同一物理连接迁移执行器和 PostgreSQL 18 隔离 fixture;每个测试使用唯一
|
||
Schema,回环端口和 tmpfs 不保留数据,CI 已加入 Redis/PostgreSQL 集成任务。
|
||
- 真实 PostgreSQL 18 已通过完整公用契约:配置事务、Upstream 幂等、100 并发
|
||
Routing CAS、Routing no-op、审计分页、Outbox 租约/重领、原子 ACK 和 Context。
|
||
- 审计与 Outbox 触发器故障注入证明状态、revision、审计和事件完整回滚;迁移
|
||
重复执行及 `information_schema` 检查确认仅有六张管理表,无 Proxy、凭据、
|
||
逐次提取、Worker ownership 或幂等明细。
|
||
- Docker Hub 直连因 Docker Desktop 未配置 HTTPS 代理超时,改从 Google 官方
|
||
Docker Hub 公共缓存拉取相同 `postgres:18-alpine` 镜像并本地重标记;未修改
|
||
Docker Desktop 全局镜像配置。
|
||
- `implementation-plan.md` 中 PostgreSQL 两项验收已完成,总进度由 49/73 更新为
|
||
51/73(69.9%);生产命令装配、分布式协调、Checker 和 100,000 QPS 集群压测
|
||
仍未完成。
|
||
|
||
## 2026-07-29
|
||
|
||
- 新增公用 `verify-proto.ps1`:自动发现 Google well-known types include,固定
|
||
编译控制面 Proto 的 imports/source-info descriptor,并拒绝空输出;本机生成
|
||
30,972 字节 descriptor。`verify.ps1` 在存在 protoc 时执行,CI 强制安装待补。
|
||
- 新增 Distribution/Admin OpenAPI 公用 CI 结构门禁,递归验证本地 `$ref`、
|
||
operationId 唯一性、HTTP operation 响应和 security scheme 引用;完整 OAS
|
||
工具验证与 Protobuf descriptor CI 编译仍保持未完成。
|
||
- 一次 OpenAPI 检索在 PowerShell 双引号中误触发 `$ref` 变量解析;已改用单引号
|
||
模式继续审计,未重复原命令。
|
||
- 新增 PostgreSQL 18 隔离测试服务的静态契约:回环端口、正确 PG18 tmpfs 数据
|
||
根目录、零持久卷;Redis 测试改用独立 Compose 项目和显式服务启动,避免两个
|
||
fixture 相互影响。未拉取或启动容器,pgx Adapter/真实契约仍待依赖确认。
|
||
- 扩展 `adminstate/contracttest` 公用契约:审计完整字段和 AfterID 分页、Routing
|
||
no-op 审计且不写 Outbox、批量 ACK 零部分提交,以及六个 Store 方法的 Context
|
||
取消;MemoryStore 全部通过,后续 PostgreSQL Adapter 必须运行同一套契约。
|
||
- `adminstate` 六类命令/查询已封装公用 `Validate()`,MemoryStore 改为统一复用;
|
||
后续 pgx Adapter 不再重复实现名称、引用、分页和 Outbox 租约输入校验。
|
||
- 一次命令装配审计误用了不存在的 `controller/distribution/service.go`;实际领域
|
||
服务位于 `controller/extraction`,Distribution 包当前只负责 HTTP Handler。
|
||
- 根据对话最终定稿统一 Sequential:至少两个 Upstream,省略 `endBehavior` 时
|
||
默认 `stop`;新增领域和严格配置回归测试。disabled candidate、跨实例游标和
|
||
`onUnavailable` 请求链仍未提前标记完成。
|
||
- 一次并行读取误用了不存在的 `routing/sequential_test.go`,另一次误用了旧 ADR
|
||
文件名;已改用 `routing_test.go` 和 `006-postgresql-admin-state.md`,未重复命令。
|
||
- 新增文档契约测试,递归验证 README、docs、deploy、diagrams 的相对链接,并
|
||
拒绝公开指南引用不存在的具体 Go 命令目标;修正配置参考中尚未实现的
|
||
`cmd/proxy-controller` 启动命令,改为当前真实可执行的严格配置校验工具。
|
||
- 已复核 `implementation-plan.md` 的验收项:机器契约、OpenAPI/Protobuf 验证、
|
||
完整文档导航、20 份配置示例和 35 张 Mermaid 图已有仓库及验证证据,修正
|
||
滞后勾选;进一步核对发现 descriptor 编译尚未进入 CI,同时验证脚本和双平台
|
||
CI 已完成,最终校正为 49/73,约 67%。
|
||
- 正在并行审计 Routing/Sequential 与 Proxy Capacity 的剩余边界;本轮只收敛
|
||
已确认公共接口和既有需求,不把 Checker、pgx 或 100,000 QPS 目标提前记为完成。
|
||
- Routing 审计确认五种策略尚未进入真实请求链、`onUnavailable` 只有配置校验、
|
||
Sequential 仅有进程内 CAS;Capacity 审计确认固定 Max 不超卖,但动态降容、
|
||
Reservation 完整生命周期观测和短 TTL 运行态回收待完成。追踪矩阵已降级为
|
||
准确的“已完成证据 + 待办”描述。
|
||
- 定向执行 Proxy、Routing、Config、Gateway Dispatch/Server 测试,全部通过;
|
||
该结果只证明现有行为基线,不替代上述缺失运行链的验收。
|
||
- 一次组合检索因包含不存在的 `config` 路径返回退出码 1;有效输出已保留,
|
||
后续检索改用实际目录 `internal/config`,未重复原命令。
|
||
- Routing Runtime 设计核对确认采用 Controller 权威状态 + Gateway 不可变本地
|
||
快照的混合模型;已定位 Extract direct、默认值、disabled 推进和单 Upstream
|
||
Sequential 四项需确认语义,尚未在未批准设计上开始实现。
|
||
- 一次读取误用了不存在的 `controller/runtime/bootstrap.go` 路径;实际文件为
|
||
`runtime.go`,Gateway 构建辅助位于 `gateway/server/bootstrap.go`,已改用真实
|
||
文件继续核对,未重复失败命令。
|
||
- 架构证据审计确认 Provider 分布式 Leader、Health Reducer/Checker、Prometheus
|
||
指标模块和四个生产命令仍缺实现;追踪矩阵已把这些条目的配置/领域基础与
|
||
完整运行时证据拆开描述。
|
||
- 新增独立 Capacity 生命周期测试,覆盖 Cancel 后复用、重复 Commit/Cancel/
|
||
Release、Release-before-Commit、1,000 轮并发 Commit/Cancel 及 100 并发
|
||
Release;Proxy、Dispatch、Snapshot、Gateway Server 定向测试全部通过。
|
||
- 一次 `rg` 同时包含不存在的 `cmd` 路径,以及两次使用 PowerShell 不展开的
|
||
通配路径,分别返回退出码 2/123;后续改用实际目录和 `-g` 过滤,不重复原命令。
|
||
- 已实现共享 `httpapi`、`httpsecurity` 与 `httpserver`,统一严格 JSON、Problem、
|
||
Request ID、认证、可信代理、Client ID、准入、多监听器生命周期和优雅停机。
|
||
- Distribution/Admin Handler 已装配到独立监听器;Gateway 配置认证统一复用
|
||
`httpsecurity`,API 401 与代理 407 语义保持分离。
|
||
- 部署配置已使用 `${VAR}` 真实环境变量解析,ConfigMap 与本地配置通过
|
||
`LoadResolved` 回归测试。
|
||
- 已新增公用 `activitypool` 契约和并发安全内存参考实现;Provider 按各供应商
|
||
TTL 与安全余量写入,独占提取、短期幂等和 Worker 所有权在同一原子边界内。
|
||
- 已实现生产 Redis Activity Adapter:Upsert、健康更新、原子提取、所有权、
|
||
Drain/ACK、库存读取与有界过期清理均封装为窄领域端口和 Lua 原子操作。
|
||
- MemoryPool 与 Redis Adapter 运行同一套公用契约;真实 Redis 8.2 fixture 已覆盖
|
||
100 轮并发提取和 100 轮所有权竞争,本地 Compose 不持久化短效代理数据。
|
||
- Proxy 明细不写 PostgreSQL;PostgreSQL 仅保存配置版本、管理状态、Admin
|
||
审计、管理 outbox 和可选聚合指标。
|
||
- `usableUntil` 已进入 Worker Snapshot 契约,Gateway 在供应商硬过期前按安全
|
||
余量停止新分配。
|
||
- PostgreSQL 管理面 Adapter、Provider Leader/分布式限流与心跳装配、生产命令
|
||
入口、Redis 故障转移验证和代表性 100,000 QPS 集群压测仍待实现。
|
||
- 已新增 ADR-006 与公用 `adminstate` 事务 seam;MemoryStore 在同一锁内提交管理
|
||
状态、Admin 审计与 Outbox,覆盖配置冲突、Upstream 幂等、100 并发 Routing
|
||
CAS、Outbox claim/ack 租约、上下文取消和不可变快照。
|
||
- PostgreSQL 管理 Schema 已限制为六张配置/状态/审计/Outbox 表,并由静态测试
|
||
拒绝 Proxy、凭据、逐次提取、ownership 和短期幂等明细;pgx Adapter 和真实
|
||
PostgreSQL 18 契约仍待实现。
|
||
- Admin Handler 现在复用 `httpsecurity.Identity`,把 Actor ID 与可信 SourceIP
|
||
传给 enable/disable/switch/reload mutation,供持久化审计直接使用。
|
||
- 已实现 Admin `ApplicationService`:mutation 统一映射到 `adminstate`;Status 合并
|
||
一个权威管理快照和低基数运行态聚合;配置重载严格执行解析/校验、脱敏摘要、
|
||
持久化、原子发布顺序,任何持久化失败都不会替换旧运行配置。
|
||
- 已新增公用原子 `config.Store` 与标准 `FileConfigurationLoader`;覆盖 100 组
|
||
并发读写、typed-nil、未知字段、主配置/Secret 文件 I/O、取消、Secret 轮换和
|
||
Admin 禁止依赖 Redis Extract/Proxy 明细的架构边界。
|
||
- 本轮 `.\scripts\verify.ps1`、`.\scripts\test-redis.ps1`、Compose 静态展开和
|
||
Compose 非持久化策略测试通过;Windows `CGO_ENABLED=0`,race 继续由 Linux
|
||
CI 执行。
|
||
- 本地 PostgreSQL 管理面基础已提交为 `7951c29`;推送
|
||
`build/proxy-pool-architecture` 时远端返回 `Authentication failed`,未重复执行
|
||
相同推送。当前本地提交保持完整,等待可用 Git 凭据后同步。
|
||
|
||
## 2026-07-28
|
||
|
||
- 用户删除了先前基于不完整网页内容生成的设计文件。
|
||
- 已重新读取当前 `对话内容.md` 全部 9,404 行。
|
||
- 已按主题定位配置定稿、实施方案、Distribution API、认证、安全、并发、
|
||
故障语义和最终 Exclusive Extraction 修订。
|
||
- 已建立新的任务计划与事实记录,旧网页摘要不再作为需求证据。
|
||
- 已建立需求追踪矩阵、统一领域语言、产品设计、总体架构、项目结构、ADR、
|
||
开发、配置、API、安全、测试与运维文档。
|
||
- 已提供 20 个严格校验的配置示例、Distribution/Admin OpenAPI、Controller/
|
||
Worker/Checker Protobuf 契约和 35 张 Mermaid 图。
|
||
- 已实现并测试 Proxy 状态/TTL/唯一键、打包原子容量、首条路由、Sequential
|
||
并发切换、Fetch 分类、一次性独占提取、严格配置、Snapshot 与本地 Dispatch。
|
||
- `go test ./...`、`go vet ./...`、`go build ./...` 通过。
|
||
- Protobuf 描述符编译、Compose 静态展开、Kustomize 渲染、Grafana JSON 与
|
||
配置示例校验通过。
|
||
- Windows 当前 `CGO_ENABLED=0` 且无 C 编译器,race 测试由 Linux CI 承担。
|
||
- 100,000 QPS 仍是未验证设计目标;运行进程、存储适配器、完整网络转发与
|
||
代表性集群压测尚未实施,已在完成审计中明确列出。
|
||
- 历史文档压缩包已由用户删除,当前交付以仓库内可追踪文档为准。
|
||
- 已实现 random、roundRobin、weighted、leastConnections,并将 Sequential
|
||
拆成共享 Upstream 空结果状态与每 Routing 版本化游标。
|
||
- 已实现 Provider 合并通知、完整 attempt 超时、永久错误契约、指数退避、
|
||
Retry-After、原子 FetchBudget 以及 Pool Reconciler。
|
||
- 已强制 Worker 所有权与 Exclusive Extraction 注入同一权威 Repository,
|
||
覆盖 100 轮并发竞争、续期、Drain ACK 和 Worker 过期回收。
|
||
- 已实现提取服务层策略映射、Redis 短期幂等语义、来源身份准入和公共
|
||
FixedWindow 全局/Client 限流器;不保存逐代理提取审计记录。
|
||
- 已为 100k Proxy 快照建立 scheme/upstream/tag 索引;本机持续基准中
|
||
`Acquire` 为 640 ns/op、256 B/op、2 allocs/op。该数据仅证明本地选择热路径,
|
||
不代表 100k QPS 集群端到端容量。
|
||
- 本轮 `go test -count=1 ./...`、`go vet ./...`、`go build ./...` 和
|
||
`git diff --check` 通过;Windows `CGO_ENABLED=0`,race 仍由 Linux CI 验证。
|