含分阶段演进方案 · 单点部署 → 集群扩展 → 网关统一化
| 组件 | 技术选型 | 说明 |
|---|---|---|
| 管理前端 | Vue 3 + Element Plus | PC端管理界面 |
| App端 | uni-app / 原生微信小程序 | 用户端 |
| 数据库 | MySQL 8.0+ | 关系型数据库 |
| 缓存 | Redis 7.0+ | 会话、缓存、分布式锁 |
| 消息队列 | RabbitMQ / Kafka | 异步处理(Phase2+) |
| 容器化 | Docker + Kubernetes | 集群部署(Phase2+) |
核心思路:采用渐进式架构演进策略,先用最小成本验证业务,再根据实际负载逐步扩展。
目标:快速上线核心功能,验证业务模型,控制初期成本
适用场景:业务初期、用户量 < 10万、日均请求 < 100万
┌─────────────────────────────────────────────────────────────────┐
│ 用户层 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │微信小程序│ │ 管理后台 │ │ 内网系统 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────────────┼─────────────────────┼─────────────────────┼───────┘
│ │ │
└─────────────────────┼─────────────────────┘
│ HTTP/HTTPS
┌───────────────────────────────────────▼───────────────────────────────┐
│ 单机服务器 (4核8G) │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Nginx (反向代理 + 静态资源) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────────────▼────────────────────────────┐ │
│ │ API 服务 (单一进程) │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ 用户模块 │ │ 举报模块 │ │ 报案模块 │ │ 止付模块 │ │ │
│ │ │ JWT │ │ CRUD │ │ OCR │ │ 同步 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ MySQL │ │ Redis │ │ 文件存储 │ │ 日志文件 │ │
│ │ (单机) │ │ (单机) │ │ (OSS) │ │ (本地) │ │
│ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │
└───────────────────────────────────────────────────────────────────────┘
| 特性 | 实现方式 | 说明 |
|---|---|---|
| 高并发防护 | 单机限流 + Redis乐观锁 | 单机应用层限流,数据层乐观锁 |
| 幂等性 | Redis缓存幂等键 | X-Idempotency-Key 24h缓存 |
| 缓存 | Redis本地缓存 | 本地Cache + Redis分布式缓存 |
| 消息队列 | 暂不使用 | Phase2升级为RabbitMQ |
| 部署方式 | 物理机/虚拟机直接部署 | Docker容器化(可选) |
| 模块 | 任务 | 工时 |
|---|---|---|
| 基础设施 | 项目初始化、环境搭建 | 3天 |
| 数据库设计与实现(17张表) | 5天 | |
| Nginx反向代理配置 | 1天 | |
| 核心模块 | 用户认证模块(JWT) | 5天 |
| 举报模块CRUD + 列表查询 | 6天 | |
| 报案助手模块(案件/线索区分) | 8天 | |
| 止付模块(银行卡/第三方/数字人民币) | 8天 | |
| 高并发基础 | 单机限流 + Redis乐观锁 | 3天 |
| 幂等性实现(X-Idempotency-Key) | 2天 | |
| App端 | 微信小程序基础框架 | 3天 |
| 核心页面开发(举报/报案/止付) | 10天 | |
| 管理后台 | Vue3后台框架搭建 | 3天 |
| 核心管理页面 | 8天 | |
| 联调测试 | 前后端联调 | 5天 |
| 测试 + Bug修复 + 部署上线 | 5天 | |
| Phase 1 合计 | 75天 | |
目标:根据业务负载,将高并发模块独立部署为集群,支持弹性伸缩
触发条件:单机CPU持续 > 70%、日均请求 > 500万、特定接口QPS > 5000
┌─────────────────────────────────────────────────────────────────────────┐
│ 用户层 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │微信小程序│ │ 管理后台 │ │ 内网系统 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────────────┼─────────────────────┼─────────────────────┼───────────────┘
│ │ │
└─────────────────────┼─────────────────────┘
│ HTTPS
┌───────────────────────────────────────▼───────────────────────────────┐
│ Nginx / SLB 负载均衡 (多节点) │
│ 健康检查 + SSL卸载 + 限流 │
└───────────────────────────────────────┬───────────────────────────────┘
│
┌───────────────────────────────────────▼───────────────────────────────┐
│ API Gateway (单节点,Phase3升级为集群) │
│ JWT鉴权 + 路由分发 + 基础限流 │
└───────────────────────────────────────┬───────────────────────────────┘
│
┌────────────────────────────────┼────────────────────────────────┐
│ │ │
┌───────▼───────┐ ┌───────▼───────┐ ┌─────────▼─────────┐
│ 举报集群 │ │ 报案集群 │ │ 止付集群 │
│ (3 Pods) │ │ (2 Pods) │ │ (3 Pods) │
│ HPA自动伸缩 │ │ HPA自动伸缩 │ │ HPA自动伸缩 │
│ QPS>3000 │ │ QPS>2000 │ │ QPS>2000 │
└───────┬───────┘ └───────┬───────┘ └─────────┬─────────┘
│ │ │
└────────────────────────────────┼────────────────────────────────┘
│
┌────────────────────────────────┼────────────────────────────────┐
│ │ │
┌───────▼───────┐ ┌───────▼───────┐ ┌─────────▼─────────┐
│ MySQL │ │ Redis │ │ RabbitMQ │
│ 主从集群 │ │ 集群 │ │ 消息队列 │
│ (1主2从) │ │ (3节点) │ │ (3节点) │
│ 读写分离 │ │ 缓存+锁 │ │ 异步解耦 │
└───────────────┘ └───────────────┘ └───────────────────┘
| 升级模块 | 升级内容 | 技术方案 |
|---|---|---|
| 举报服务 | 独立部署为集群,支持高并发提交 | K8s Deployment + HPA + Redis分布式锁 |
| 止付服务 | 独立部署,消息队列异步处理 | RabbitMQ异步 + 行级锁防并发 |
| 报案服务 | 独立部署,OCR异步调用 | K8s Deployment + HPA |
| 数据库 | 主从复制,读写分离 | MySQL主从半同步 + 读从库 |
| 缓存 | Redis集群 | 3主3从,自动故障转移 |
| 消息队列 | RabbitMQ集群 | 异步通知、统计、回调 |
| 文件存储 | OSS多副本 | 跨区域备份 |
| 机制 | 实现方案 | 适用场景 |
|---|---|---|
| 分布式锁 | Redis SETNX + Redlock | 止付申请、举报提交防并发 |
| 幂等性 | X-Idempotency-Key + Redis缓存 | POST类写接口 |
| 多级缓存 | L1本地(Caffeine) + L2 Redis | 高频只读接口 |
| 异步队列 | RabbitMQ延迟队列 | 止付回调、通知推送、统计 |
| 熔断降级 | Sentinel / Hystrix | 国反平台接口保护 |
| HPA弹性伸缩 | K8s HPA + 自定义指标 | 举报/止付/报案集群 |
| 模块 | 任务 | 工时 |
|---|---|---|
| 集群基础设施 | K8s集群搭建(测试+生产) | 5天 |
| Docker镜像制作 + Helm Charts | 3天 | |
| CI/CD流水线(GitLab CI) | 3天 | |
| 数据库升级 | MySQL主从搭建 + 读写分离 | 2天 |
| Redis集群部署 | 2天 | |
| 数据迁移 + 验证 | 2天 | |
| 消息队列 | RabbitMQ集群部署 | 2天 |
| 消息消费者开发(止付回调、通知) | 5天 | |
| 服务集群化 | 举报服务集群 + HPA | 5天 |
| 止付服务集群 + 消息队列集成 | 5天 | |
| 报案服务集群 + HPA | 3天 | |
| 弹性伸缩 | HPA策略配置 + 压测调优 | 3天 |
| 熔断降级(Sentinel)集成 | 2天 | |
| 监控运维 | Prometheus + Grafana监控 | 3天 |
| 日志收集(ELK/Loki)+ 告警 | 3天 | |
| Phase 2 合计 | 48天 | |
目标:建立统一流量入口,实现多维度治理,支持全国级规模
触发条件:日均请求 > 5000万、跨地域部署、多团队协作
┌─────────────────────────────────────────────────────────────────────────────┐
│ 用户层 (全国) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │微信小程序│ │ 管理后台 │ │ 第三方API │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────────────┼─────────────────────┼─────────────────────┼───────────────┘
│ │ │
└─────────────────────┼─────────────────────┘
│ HTTPS/DNS
┌───────────────────────────────────────▼───────────────────────────────┐
│ 全局负载均衡 (DNS/LVS/GSLB) │
│ 地域路由 + 健康检查 + 故障转移 │
└───────────────────────────────────────┬───────────────────────────────┘
│
┌───────────────────────────────────────▼───────────────────────────────┐
│ 统一API网关集群 (3节点 + Keepalived) │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 流量管理 │ 统一鉴权 │ 限流熔断 │ 协议转换 │ 灰度发布 │ │
│ │ Kong/APISIX│ JWT/OAuth2 │ Sentinel │ REST→gRPC │ 金丝雀 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
└───────────────────────────────────────┬───────────────────────────────┘
│
┌───────────────────────────────────┼───────────────────────────────────┐
│ │ │
│ ┌──────────────────────────────▼──────────────────────────────┐ │
│ │ 服务网格 (Istio/Linkerd) │ │
│ │ 流量治理 + 可观测性 + mTLS + 熔断 + 重试 + 超时 │ │
│ └──────────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌──────────────────────────────┼──────────────────────────────┐ │
│ │ 地域/专区 1 (华东) │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │举报集群 │ │止付集群 │ │报案集群 │ │用户集群 │ │ │
│ │ │(5 Pods) │ │(3 Pods) │ │(3 Pods) │ │(2 Pods) │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ │ │ │ │ │
│ └──────────┼──────────────┼──────────────┼──────────────────────┘ │
│ │ │ │ │
│ ┌───────────▼──────────────▼──────────────▼──────────────────┐ │
│ │ 数据层 (华东) │ │
│ │ MySQL(MGR) │ Redis Cluster │ Kafka(跨AZ) │ OSS │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────┼──────────────────────────────┐ │
│ │ 地域/专区 2 (华北/华南/西南...) │ │
│ │ (同华东架构) │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ 统一数据中台 │ │
│ │ 数据同步(CDC) │ 统一搜索 │ 数据分析 │ 实时大屏 │ │
│ └───────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
| 组件 | 选型 | 作用 |
|---|---|---|
| 统一网关 | Kong / APISIX | API生命周期管理、流量控制、安全策略 |
| 服务网格 | Istio / Linkerd | 微服务间通信治理、mTLS加密、可观测性 |
| 配置中心 | Nacos / Apollo | 配置集中管理、热更新、多环境隔离 |
| 注册中心 | Nacos / Consul | 服务发现、健康检查、动态上下线 |
| 分布式事务 | Seata / Saga | 跨服务事务一致性 |
| 链路追踪 | Jaeger / Zipkin | 分布式追踪、性能分析 |
| 多地域部署 | 阿里云多Region | 就近接入、容灾切换 |
| 策略 | 实现 | 说明 |
|---|---|---|
| 统一鉴权 | JWT + OAuth2 + API Key | 多租户、细粒度权限 |
| 流量控制 | 令牌桶/滑动窗口限流 | API级别+用户级别+服务级别 |
| 熔断降级 | Sentinel / Istio HTTPPolicy | 服务级+接口级熔断 |
| 灰度发布 | 金丝雀 + 流量染色 | 按用户/地区/版本灰度 |
| 协议转换 | REST → gRPC / Dubbo | 内部高性能通信 |
| 安全防护 | WAF + DDoS防护 | 防攻击、防爬虫 |
| 模块 | 任务 | 工时 |
|---|---|---|
| 统一网关 | Kong/APISIX网关集群部署 | 5天 |
| 网关插件开发(鉴权/限流/日志) | 5天 | |
| 路由规则配置 + 域名规划 | 2天 | |
| 服务网格 | Istio集群部署 + mTLS配置 | 5天 |
| 流量治理策略(超时/重试/熔断) | 3天 | |
| 可观测性集成(Jaeger/Kiali) | 2天 | |
| 配置中心 | Nacos/Apollo部署 + 多环境 | 3天 |
| 配置迁移 + 热更新验证 | 2天 | |
| 多地域扩展 | 第二Region架构部署 | 8天 |
| 跨Region数据同步 + CDC | 5天 | |
| 治理平台 | 统一监控大盘 + 告警收敛 | 5天 |
| 运维自动化平台(发布/扩缩容/巡检) | 5天 | |
| Phase 3 合计 | 50天 | |
时间轴 ──────────────────────────────────────────────────────────────────────►
Phase 1 ─────────────────┸──────────────────── Phase 2 ─────────────────┸──────────────────── Phase 3
│ 单机快速上线 │ │ 集群弹性扩展 │ │ 全局网关治理 │
│ │ │ │ │ │
│ 基础功能 ✓ │ │ 高负载模块集群│ │ 多Region部署 │
│ 单机限流 ✓ │ │ 消息队列 ✓ │ │ 统一网关 ✓ │
│ Redis缓存 ✓ │ ◄── 触发条件 ──► │ 读写分离 ✓ │ ◄── 触发条件 ──► │ 服务网格 ✓ │
│ 幂等设计 ✓ │ CPU>70%│ │ QPS>5000 │ │ │
│ │ 日均>5000万│ │ 日均>5亿 │
│ │ │ │ │
│ ◄──────────┴────────────┴────────────►│ ◄──────────┴────────────┴────────────►│
└──────────────────────────────────────────┴──────────────────────────────────────────┘
| 阶段 | 名称 | 主要内容 | 工时 | 累计工时 | 报价 |
|---|---|---|---|---|---|
| Phase 1 | 单机基础版 | 核心功能 + 单机高并发基础 | 75天 | 75天 | ¥30,000 |
| Phase 2 | 集群扩展版 | K8s集群 + 高负载模块独立部署 + HPA | 48天 | 123天 | ¥19,200 |
| Phase 3 | 网关治理版 | 统一网关 + 服务网格 + 多Region | 50天 | 173天 | ¥20,000 |
| 总计(含20%风险缓冲) | 173天 | ¥69,200 | |||
报价说明:
| 模块 | 并发等级 | 单点限流 | 集群方案 | 优先级 |
|---|---|---|---|---|
| 举报提交 | 极高 | Redis SETNX | 独立集群 + HPA | P0 |
| 止付申请 | 高 | 行级锁 | 消息队列 + 集群 | P0 |
| 国反平台对接 | 高 | 熔断降级 | 异步队列 | P0 |
| OCR识别 | 中 | 本地队列 | 独立集群 | P1 |
| 预警推送 | 中 | WebSocket | 消息推送集群 | P1 |
| 举报查询 | 高 | 多级缓存 | 缓存集群 | P1 |
| 用户认证 | 高 | JWT缓存 | Redis集群 | P2 |
| 序号 | 事项 | 影响阶段 | 状态 |
|---|---|---|---|
| 1 | 后端技术选型(Go / Java / Node.js) | Phase 1 | ⬜ 待确认 |
| 2 | 国反平台接口文档 | Phase 1 | ⬜ 待提供 |
| 3 | OCR服务商选择 | Phase 1 | ⬜ 待确认 |
| 4 | 初期业务量预估 | Phase 1 | ⬜ 待确认 |
| 5 | 云服务商选择(阿里云/腾讯云/自建) | Phase 2 | ⬜ 待确认 |
| 6 | K8s集群环境 | Phase 2 | ⬜ 待确认 |
| 7 | 多地域部署需求 | Phase 3 | ⬜ 待确认 |
文档版本:v1.2
创建日期:2026-03-25
最后更新:2026-03-27(新增分阶段演进方案)