rat_quickdns
高性能DNS查询库,基于Rust开发,支持多种协议和智能决策。
特性
- 🚀 高性能: 基于Tokio异步运行时,支持并发查询
- 🌐 多协议支持: UDP、TCP、DoH (HTTPS)、DoT (TLS)
- 🎯 智能负载均衡: 多种策略自动选择最优服务器
- 🔄 容错机制: 自动重试、健康检查、故障转移
- 🗄️ 缓存支持: 内置DNS缓存,减少重复查询
- 🔌 跨语言集成: 支持Python绑定
- 📊 调用者初始化日志系统: 使用rat_logger高性能日志库
- 🧠 智能内存管理: 集成rat_quick_threshold内存管理
快速开始
调用者初始化模式
本库使用调用者初始化模式,用户必须先初始化日志系统,然后才能使用DNS查询功能。
use ;
use ;
use ;
use Duration;
async
严格配置模式
use ;
use Duration;
let config = builder
.strategy
.timeout
.retry_count
.enable_cache
.cache_ttl
.enable_upstream_monitoring
.upstream_monitoring_interval
.port
.concurrent_queries
.buffer_size
.enable_stats
.emergency_threshold
.add_upstream
.build?;
let resolver = from_config?;
日志系统
本库使用rat_logger高性能日志库,支持调用者初始化模式和专用DNS日志格式:
use ;
use ;
// 1. 调用者初始化基础日志系统
new
.with_level
.add_terminal_with_config
.init_global_logger?;
// 2. 初始化DNS专用日志格式
init_dns_logger?;
// 3. 使用专用DNS日志宏
dns_query!;
dns_response!;
dns_error!;
Python绑定
# 创建解析器
= \
\
\
\
# 执行查询
= await
架构设计
核心模块
- 传输层:
src/transport/- UDP/TCP/DoH/DoT协议实现 - 解析器:
src/resolver/- 核心DNS解析逻辑 - 构建器:
src/builder/- DnsResolverBuilder统一构建接口 - 配置:
src/config/- 严格配置模式(无兜底默认值) - Python绑定:
src/python_api/- PyO3集成
关键特性
- 调用者初始化: 用户必须明确初始化日志系统
- 零成本抽象: 所有配置都由用户明确指定
- 类型安全: 强类型系统确保配置正确性
- 线程安全: 所有组件都支持多线程并发
- 异步优先: 基于Tokio的异步运行时
构建和测试
# 构建主库
# 构建发布版本
# 运行所有测试
# 运行基准测试
# 构建Python绑定
示例程序
查看 examples/ 目录中的完整示例:
smart_dns_example.rs- 智能DNS查询示例mixed_protocol_test.rs- 混合协议测试dns_logger_example.rs- 日志系统使用caller_init_dns_example.rs- 调用者初始化模式dns_resolver_with_logging.rs- DNS解析器日志配置mx_record_test_udp.rs- MX记录查询测试
运行示例:
# 智能DNS解析器示例
# 混合协议测试
# 日志系统示例
# 调用者初始化示例
# DNS解析器日志配置
# MX记录查询测试
许可证
本项目采用 LGPL v3 许可证。详见 LICENSE 文件。
贡献
欢迎提交Issue和Pull Request!
路线图
- 完整的DNS-over-QUIC (DoQ) 支持
- DNSSEC验证
- 更详细的性能监控
- 更多负载均衡策略
- 插件系统