HiDNS 架构概览
项目概述
HiDNS 是一个现代化的 DNS 聚合管理平台,支持管理多个 DNS 服务商的域名解析记录。项目采用前后端分离架构,使用 TypeScript 全栈开发。
系统架构图
HiDNS/
├── server/ # 后端服务
│ └── src/
│ ├── config/ # 配置文件
│ ├── db/ # 数据库层(三层架构)
│ ├── lib/dns/ # DNS 核心逻辑
│ ├── middleware/ # Express 中间件
│ ├── routes/ # API 路由
│ ├── service/ # 业务服务
│ ├── types/ # TypeScript 类型定义
│ ├── utils/ # 工具函数
│ └── app.ts # 应用入口
└── client/ # 前端应用
└── src/
├── api/ # API 客户端
├── assets/ # 静态资源
├── components/ # UI 组件
├── contexts/ # React Context
├── hooks/ # 自定义 Hooks
├── i18n/ # 国际化
├── pages/ # 页面组件
├── styles/ # 样式文件
├── utils/ # 工具函数
├── App.tsx # 应用根组件
└── main.tsx # 应用入口
核心特性
- 多 DNS 服务商支持:支持 21+ 个 DNS 服务商(阿里云、腾讯云、华为云、Cloudflare 等)
- 多用户与团队管理:基于角色的权限控制(RBAC)
- 完整的 DNS 记录管理:支持所有常见记录类型的 CRUD 操作
- WHOIS 查询系统:智能缓存与注册商模式支持
- 域名续期管理:自动化续期调度与执行
- NS 监测与故障转移:高可用保障机制
- API Token 管理:细粒度权限控制
- 审计日志:完整的操作审计和导出功能
- 安全认证:OAuth2/OIDC、WebAuthn/Passkeys、TOTP 双因素认证
- 通知系统:邮件通知与模板管理
- 现代化 UI:React 18 + TailwindCSS 响应式设计
- 多语言支持:中/英/日/西四语言
技术栈
后端技术栈
| 技术 |
用途 |
| Node.js + TypeScript |
运行时和开发语言 |
| Express.js |
Web 框架 |
| better-sqlite3 / mysql2 / pg |
数据库驱动(SQLite/MySQL/PostgreSQL) |
| JWT |
身份认证 |
| swagger-jsdoc + swagger-ui-express |
API 文档 |
前端技术栈
| 技术 |
用途 |
| React 18 |
UI 框架 |
| TypeScript |
开发语言 |
| Vite |
构建工具 |
| TailwindCSS v3 |
CSS 框架 |
| React Router v6 |
路由管理 |
| @tanstack/react-query |
数据请求和缓存 |
| Axios |
HTTP 客户端 |
| lucide-react |
图标库 |
| react-i18next |
国际化 |
架构设计原则
- 分层架构:清晰的职责分离,便于维护和扩展
- 统一认证:所有 API 请求都经过认证中间件
- 审计日志:关键操作都记录审计日志
- 错误处理:统一的错误处理机制
- 限流保护:防止暴力破解和 DDoS 攻击
高级功能架构
WHOIS 查询系统
- whoisService.ts: WHOIS 查询核心服务
- whoisScheduler.ts: WHOIS 调度器接口
- providers/dnshe/whoisScheduler.ts: DNSHE WHOIS 实现
- whoisJob.ts: 后台定时刷新任务
- whois_cache 表: 数据库化缓存存储
域名续期系统
- renewalScheduler.ts: 续期调度器接口
- domainRenewalJob.ts: 自动续期任务
- renewable_domains 表: 独立续期域名管理
- 范式化架构: 解耦核心域名表
NS 监测与故障转移
- nsMonitorJob.ts: NS 记录监测任务
- failover.ts: 故障转移逻辑
- failoverJob.ts: 故障转移执行任务
- failover_configs 表: 故障转移配置
任务管理器
- taskManager.ts: 统一任务调度与并发控制
- 优先级插队机制
- 防止大量并发请求超时