Skip to content

增强DNS查询处理、缓存和管理功能 - #1

Merged
luoye663 merged 20 commits into
mainfrom
dev-v3
Aug 16, 2026
Merged

增强DNS查询处理、缓存和管理功能#1
luoye663 merged 20 commits into
mainfrom
dev-v3

Conversation

@luoye663

Copy link
Copy Markdown
Owner

luoye663 added 20 commits August 4, 2026 01:38
新增:为查询日志和小时聚合增加 success、negative_answer、policy_block、processing_error 四类结果,提供 result_class API 筛选、概览分类统计和前端状态展示。

修复:NXDOMAIN、NODATA 与策略拦截不再计入处理错误率;仅含错误文本的事件也会正确归为处理错误;历史原始记录与完整聚合窗口通过 V11 迁移精确回填。

删除:查询页移除语义含混的仅错误开关,概览移除将 NXDOMAIN 当错误的返回码错误统计,改用明确的结果分类。
新增:系统设置提供否定缓存开关和 1 至 86400 秒 TTL,控制器持久化配置并同步本地、远程两套缓存,WebUI 支持编辑且关闭时保留 TTL。

修复:双缓存同步会完整尝试两侧并记录失败审计,部分应用失败后仍保存目标状态以便启动时自动对账;客户端校验 mosdns 返回值与请求一致。

删除:不再依赖 mosdns 内部固定失败缓存时长,控制面统一管理否定缓存策略。

更新:mosdns 子模块指向 f6ad53c,包含 RFC 2308 否定缓存、错误响应不缓存和 dump TTL 修复。
新增:提供上游组查询、创建、更新、删除和组级缓存清理 API;每组可配置调度策略、节点、SOCKS5、ECS、独立缓存与启用状态,系统设置可选择任意已启用组作为默认路由。

新增:WebUI 支持动态组管理、版本冲突保护、草稿状态和响应式布局;查询日志与概览支持自定义组路由;控制器周期对账缓存及默认组设置。

修复:所有组与设置写入使用快照版本前置条件,未知写入结果会回读对账;内置组禁止禁用或删除;升级自动保留旧 local/remote 上游、代理和 ECS 配置。

删除:部署配置移除固定 cache_local/cache_remote、ecs_local/ecs_remote、local_dns/remote_dns forward 和 route sequence,统一切换到 dynamic_upstreams 注册表。

更新:mosdns 子模块指向 60c1cbe,包含动态注册表、组缓存隔离、审计元数据和并发资源回收。
新增:V12 subscription_bindings 表与 dns_queries.subscription_binding_id,自动迁移既有本地和远程路由订阅,并提供绑定创建、更新、查询和审计 API。

新增:订阅源整体绑定任意启用上游组,按最长后缀、priority 和 binding ID 发布 v3 快照;手工路由保持最高优先级。

新增:上游组操作与订阅绑定共享协调锁,默认组、当前绑定以及 active、pending、unknown 快照引用均阻止组禁用或删除。

新增:规则页调整为白名单、黑名单、路由规则、不记录四个视图,支持 URL/TXT 订阅绑定、默认组选中、优先级编辑和版本冲突自动刷新。

修复:startup reconcile 在 finalize 前迁移旧订阅域名,避免单连接嵌套查询死锁、空旧订阅阻断启动及候选版本收敛时规则丢失。

修复:补齐 mosdns status、validate、apply 严格响应 DTO,未知发布结果保留目标状态并由 candidate/source 补偿版本收敛。

修复:查询入库与页面展示 subscription_binding_id、访问订阅和路由订阅来源,组审计使用实际运行时元数据。

删除:部署模板中的四套固定 dynamic_domain_set、固定双缓存和固定 ECS 路由链,统一使用 dynamic_rules 与 dynamic_upstreams。
新增:更新 mosdns 子模块至 f3121b2,使每个动态上游组在优雅重启时独立保存并恢复缓存。

修复:缓存 dump 按 registry 版本隔离,flush、组删除和配置切换不会恢复失效缓存。

删除:动态组缓存仅存在于进程内、服务重启后必然冷启动的限制。
新增:URL 订阅刷新使用 updated_at_ms 乐观并发校验,旧下载结果遇到并发禁用、删除或其他更新时返回版本冲突。

新增:覆盖下载期间手工规则可继续发布、并发订阅变更不被旧内容覆盖的单元测试与竞态测试。

修复:网络下载和内容解析移出全局规则锁,数据库更新、快照生成和发布仍保持串行一致性。

修复:下载失败状态更新同样校验订阅版本,HTTP API 将并发刷新冲突映射为 409 VERSION_CONFLICT。

删除:最长约二十秒网络下载阻塞全部规则写操作的锁持有路径。
新增:为白名单、黑名单、路由规则和不记录分类添加随标签切换的行为说明,明确放行例外、缓存前拦截、路由优先级及日志统计影响。

新增:为默认上游组、缓存开关、缓存 TTL、否定缓存、否定响应缓存上限、地址族策略、日志保留天数和数据库上限补充就近说明。

修复:将设置控件与说明组成独立字段组,说明距上方控件 4px、字段组间距 18px,避免说明贴近下一项。

修复:将否定缓存 TTL 标签改为更准确的否定响应缓存上限,并说明 SOA TTL、故障响应和策略拦截边界。

删除:查询日志卡片中与字段说明重复的整块提示,保留地址族优先模式的动态 QPS 警告。
修复:关闭设置页表单项默认预留的校验反馈区域,使说明文字直接归属于上方控件。

修复:将说明文字上边距从 4px 调整为 2px,同时保留字段组之间的 18px 分隔。

新增:无。

删除:设置控件与说明之间无内容的垂直占位。
竞速:并发查询组内全部节点,不受 16 限制,采用首个有效响应。
加权选择:并发范围提升至 1-16。
主备优先级:每批最多 16 个,同优先级节点全部尝试后才进入下一层。
取消单组最多 16 个上游节点的限制。
前端竞速模式显示只读的“全部节点(N)”,其他模式可设置 1-16。
全局并发
所有上游组,包括禁用组
当前值、上限、使用率
正常、高负载、满载状态
连续满载时间
最后更新时间和更新失败状态
每 2 秒刷新,页面隐藏时暂停
@luoye663
luoye663 merged commit d417d9d into main Aug 16, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant