🧭
双速架构
图片与题面全部离线预生成进 Redis 队列,在线链路只做选取与判定,因此实时请求永不阻塞在图像计算上。
主题
图片与题面全部离线预生成进 Redis 队列,在线链路只做选取与判定,因此实时请求永不阻塞在图像计算上。
MVC 拦截器层管 License 与埋点,名单责任链在 check 业务内短路,高频规则跑在独立的第二套 Redis 上。
nc_licence 管请求放行,nc_license 管取图能力,两套代码各读各的,只配一个就是「一半可用」。
S3UploadService 以历史 bean 名 httpUploadService 注册,本地 HTTP 上传已注释,唯一持久卷要求 RWX。
11 个 @Scheduled 任务共享 5 线程池,跨副本零分布式锁,因此 captcha-schedule 必须单副本 + Recreate。
每条风险都带文件行号、影响面与改进建议,按 P0-P2 排序,可直接进入交付评审。
| 篇目 | 主题 | 核心问题 |
|---|---|---|
| 01 架构全景 | 全局 | 系统由哪几层组成?三条主链路怎么走? |
| 02 模块划分与依赖 | 全局 | 8 个模块谁依赖谁?包结构如何组织? |
| 03 核心 API 与业务链路 | 服务端 | get / check / verify / getconf 各自做什么? |
| 04 安全拦截链 | 服务端 | IP 与用户黑名单在哪里短路请求? |
| 05 限流体系 | 服务端 | 两套 Redis、两套限流语义如何配合? |
| 06 管理后台 | 管理端 | 运营改配置走的哪条路?权限怎么控? |
| 07 License 授权体系 | 管理端 | 两张表两套代码,如何避免只配一半? |
| 08 图片服务与存储 | 图片 | 图片存哪、怎么取、集群如何一致? |
| 09 定时任务与预生成 | 离线 | 题面怎么被提前造出来?为什么只能单副本? |
| 10 captcha-base 基础设施 | 基础库 | DAO / Redis / ES / 加解密怎么封装? |
| 11 captcha-common 工具与枚举 | 基础库 | 类型、错误码、常量在哪里定义? |
| 12 数据模型与表结构 | 数据 | 45 张表如何分域?sys_conf 怎么生效? |
| 13 配置体系全解析 | 配置 | 为什么 -D 覆盖不生效?正确姿势是什么? |
| 14 构建、部署与运维 | 交付 | 镜像怎么打?探针怎么配?故障怎么查? |
| 15 测试体系 | 质量 | 现有测试覆盖了什么,缺口在哪? |
| 16 风险清单与改进建议 | 治理 | 上线前必须知道哪些坑? |
按角色选路线
文档口径
所有结论均以当前仓库代码与配置为唯一事实来源,关键论断附 路径:行号。仓库内既有 docs/ 与 .codemaker/codeindex/ 文档存在少量与代码不符的描述(例如 Quartz、OpenCV、License 拦截器注册状态),本站以代码实测为准,并在正文中标注出入。