400 lines
11 KiB
Markdown
400 lines
11 KiB
Markdown
# 天远 API 服务器 - 微服务架构文档
|
||
|
||
## 项目概述
|
||
|
||
天远 API 服务器是一个基于 `go-zero` 框架构建的微服务架构系统,主要提供数据加密传输、用户管理、产品管理、支付等核心业务功能。整个系统采用微服务架构模式,每个服务独立部署,通过 gRPC 和 HTTP 进行通信。
|
||
|
||
## 技术栈
|
||
|
||
- **微服务框架**: go-zero
|
||
- **编程语言**: Go
|
||
- **数据库**: MySQL
|
||
- **缓存**: Redis
|
||
- **消息队列**: Kafka (通过 kq)
|
||
- **服务注册发现**: Etcd
|
||
- **API 协议**: HTTP/REST + gRPC
|
||
- **加密**: AES, MD5
|
||
- **第三方服务**: 阿里云短信、七牛云存储、百度 AI、支付宝支付
|
||
|
||
## 整体架构图
|
||
|
||
```
|
||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||
│ 客户端应用 │ │ 管理端应用 │ │ 第三方系统 │
|
||
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
||
│ │ │
|
||
▼ ▼ ▼
|
||
┌─────────────────────────────────────────────────────────────────┐
|
||
│ API 网关层 │
|
||
│ (gateway-api) │
|
||
└─────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────┐
|
||
│ 微服务集群 │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
||
│ │ API │ │ User │ │ Sentinel │ │ Admin │ │
|
||
│ │ Service │ │ Service │ │ Service │ │ Service │ │
|
||
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
||
│ │ MQS │ │ Index │ │ WestDex │ │ 共享包 │ │
|
||
│ │ Service │ │ Service │ │ Module │ │ (pkg) │ │
|
||
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
|
||
└─────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────┐
|
||
│ 基础设施层 │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
||
│ │ MySQL │ │ Redis │ │ Kafka │ │ Etcd │ │
|
||
│ │ Database │ │ Cache │ │MessageQueue │ │Service Disc │ │
|
||
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
|
||
└─────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## 服务详细说明
|
||
|
||
### 1. Gateway Service (网关服务)
|
||
|
||
**路径**: `apps/gateway/`
|
||
|
||
**功能**:
|
||
|
||
- 统一入口网关,处理所有外部请求
|
||
- 用户认证与授权
|
||
- 企业认证管理
|
||
- 产品信息查询
|
||
- 用户产品管理
|
||
- 充值管理
|
||
- 白名单管理
|
||
|
||
**API 端点**:
|
||
|
||
- `/api/console/auth/*` - 认证相关(登录、注册、验证码)
|
||
- `/api/console/user/*` - 用户管理(用户信息、企业认证)
|
||
- `/api/console/product/*` - 产品管理
|
||
- `/api/console/user-product/*` - 用户产品关联
|
||
- `/api/console/topup/*` - 充值管理
|
||
- `/api/console/whitelist/*` - 白名单管理
|
||
|
||
**依赖**:
|
||
|
||
- UserRpc: 用户服务的 gRPC 客户端
|
||
- SentinelRpc: 哨兵服务的 gRPC 客户端
|
||
|
||
### 2. API Service (核心 API 服务)
|
||
|
||
**路径**: `apps/api/`
|
||
|
||
**功能**:
|
||
|
||
- 核心业务 API 处理
|
||
- 数据加密解密
|
||
- 第三方接口代理
|
||
- 业务逻辑处理
|
||
|
||
**业务模块**:
|
||
|
||
- **IVYZ**: 数据查询服务 (7 个 API 端点)
|
||
- **FLXG**: 风险评估服务 (12 个 API 端点)
|
||
- **QYGL**: 企业管理服务 (6 个 API 端点)
|
||
- **YYSY**: 应用系统服务 (7 个 API 端点)
|
||
- **JRZQ**: 金融征信服务 (4 个 API 端点)
|
||
- **COMB**: 组合业务服务 (1 个 API 端点)
|
||
|
||
**特点**:
|
||
|
||
- 所有 API 都需要通过 `ApiAuthInterceptor` 中间件认证
|
||
- 数据采用 AES 加密传输
|
||
- 集成了消息队列服务记录 API 调用
|
||
|
||
### 3. User Service (用户服务)
|
||
|
||
**路径**: `apps/user/`
|
||
|
||
**功能**:
|
||
|
||
- 用户注册、登录、认证
|
||
- 企业认证管理
|
||
- 钱包服务(余额、充值、扣款)
|
||
- API 请求记录管理
|
||
|
||
**gRPC 服务**:
|
||
|
||
- `Auth`: 用户认证服务
|
||
- `User`: 用户信息服务
|
||
- `WalletService`: 钱包服务
|
||
- `Enterprise`: 企业服务
|
||
- `ApiRequestService`: API 请求记录服务
|
||
|
||
**数据模型**:
|
||
|
||
- 用户信息
|
||
- 企业认证信息
|
||
- 钱包余额
|
||
- 扣款记录
|
||
- 充值记录
|
||
- API 请求记录
|
||
|
||
### 4. Sentinel Service (哨兵服务)
|
||
|
||
**路径**: `apps/sentinel/`
|
||
|
||
**功能**:
|
||
|
||
- 产品管理
|
||
- 用户产品关联管理
|
||
- 白名单管理
|
||
- 密钥管理
|
||
- 支付管理
|
||
|
||
**gRPC 服务**:
|
||
|
||
- `product`: 产品服务
|
||
- `userProduct`: 用户产品服务
|
||
- `whitelist`: 白名单服务
|
||
- `secret`: 密钥服务
|
||
- `topUp`: 充值服务
|
||
|
||
### 5. Admin Service (管理端服务)
|
||
|
||
**路径**: `apps/admin/`
|
||
|
||
**功能**:
|
||
|
||
- 管理员认证
|
||
- 企业审核管理
|
||
- 产品管理
|
||
- 用户管理
|
||
- 用户充值
|
||
|
||
**API 模块**:
|
||
|
||
- `auth`: 管理员登录
|
||
- `review`: 企业审核
|
||
- `product`: 产品 CRUD 操作
|
||
- `user`: 用户管理和充值
|
||
|
||
### 6. MQS Service (消息队列服务)
|
||
|
||
**路径**: `apps/mqs/`
|
||
|
||
**功能**:
|
||
|
||
- 消息队列消费者服务
|
||
- API 请求记录处理
|
||
- 异步任务处理
|
||
|
||
**特点**:
|
||
|
||
- 监听 Kafka 消息队列
|
||
- 处理 API 请求日志
|
||
- 支持分布式消息处理
|
||
|
||
### 7. Index Service (索引服务)
|
||
|
||
**路径**: `apps/index/`
|
||
|
||
**功能**:
|
||
|
||
- 产品索引服务
|
||
- 搜索功能支持
|
||
|
||
### 8. WestDex Module (西部对接模块)
|
||
|
||
**路径**: `westDex/`
|
||
|
||
**功能**:
|
||
|
||
- 第三方西部数据源对接
|
||
- 数据加密解密
|
||
- 独立运行的数据处理模块
|
||
|
||
## 共享包 (pkg/)
|
||
|
||
### 1. crypto
|
||
|
||
- AES 加密解密
|
||
- MD5 哈希
|
||
- 西部数据源专用加密
|
||
|
||
### 2. errs
|
||
|
||
- 统一错误处理
|
||
- API 错误码定义
|
||
|
||
### 3. jwt
|
||
|
||
- JWT 令牌生成和验证
|
||
|
||
### 4. models
|
||
|
||
- 消息队列数据模型
|
||
- 通用数据结构
|
||
|
||
### 5. response
|
||
|
||
- 统一响应格式
|
||
|
||
### 6. generate
|
||
|
||
- 支付相关生成器
|
||
|
||
### 7. sqlutil
|
||
|
||
- 数据库工具函数
|
||
|
||
## 中间件系统
|
||
|
||
### 1. AuthInterceptor
|
||
|
||
- 用户身份认证
|
||
- JWT 令牌验证
|
||
- 用户上下文注入
|
||
|
||
### 2. ApiAuthInterceptor
|
||
|
||
- API 调用认证
|
||
- 签名验证
|
||
- 限流控制
|
||
|
||
### 3. EntAuthInterceptor
|
||
|
||
- 企业认证检查
|
||
- 企业用户权限验证
|
||
|
||
### 4. ApiMqsInterceptor
|
||
|
||
- API 调用记录
|
||
- 消息队列发送
|
||
|
||
## 数据库设计
|
||
|
||
### 主要数据表
|
||
|
||
- `users`: 用户基础信息
|
||
- `enterprises`: 企业认证信息
|
||
- `products`: 产品信息
|
||
- `user_products`: 用户产品关联
|
||
- `wallets`: 钱包信息
|
||
- `recharge_records`: 充值记录
|
||
- `deduction_records`: 扣款记录
|
||
- `api_requests`: API 请求记录
|
||
- `pay_orders`: 支付订单
|
||
- `whitelists`: 白名单
|
||
- `secrets`: 密钥管理
|
||
|
||
## 配置管理
|
||
|
||
每个服务都支持多环境配置:
|
||
|
||
- `etc/*.yaml`: 生产环境配置
|
||
- `etc/*.dev.yaml`: 开发环境配置
|
||
|
||
**主要配置项**:
|
||
|
||
- 数据库连接 (MySQL)
|
||
- 缓存配置 (Redis)
|
||
- 服务发现 (Etcd)
|
||
- 第三方服务 (阿里云、七牛云、百度 AI)
|
||
- JWT 配置
|
||
- 消息队列配置
|
||
|
||
## 部署架构
|
||
|
||
### Docker 化部署
|
||
|
||
每个服务都有独立的 Dockerfile:
|
||
|
||
- `apps/*/Dockerfile`
|
||
|
||
### 服务发现
|
||
|
||
- 使用 Etcd 作为服务注册中心
|
||
- gRPC 服务自动注册和发现
|
||
|
||
### 负载均衡
|
||
|
||
- 通过 go-zero 内置的负载均衡机制
|
||
- 支持多种负载均衡策略
|
||
|
||
## 安全机制
|
||
|
||
### 1. 数据传输安全
|
||
|
||
- AES 加密传输
|
||
- HTTPS 协议
|
||
- 签名验证
|
||
|
||
### 2. 身份认证
|
||
|
||
- JWT 令牌认证
|
||
- 多级权限控制
|
||
- 白名单机制
|
||
|
||
### 3. 数据存储安全
|
||
|
||
- 数据库密码加密
|
||
- 敏感信息脱敏
|
||
- 访问日志记录
|
||
|
||
## 监控与日志
|
||
|
||
### 日志系统
|
||
|
||
- 结构化日志记录
|
||
- 分级日志管理
|
||
- 链路追踪支持
|
||
|
||
### 监控指标
|
||
|
||
- API 调用统计
|
||
- 服务健康检查
|
||
- 性能指标监控
|
||
|
||
## 扩展性设计
|
||
|
||
### 水平扩展
|
||
|
||
- 无状态服务设计
|
||
- 数据库读写分离支持
|
||
- 缓存集群支持
|
||
|
||
### 模块化设计
|
||
|
||
- 微服务独立部署
|
||
- 插件化业务模块
|
||
- 模板化代码生成
|
||
|
||
## 开发规范
|
||
|
||
### 代码结构
|
||
|
||
每个微服务遵循 go-zero 标准结构:
|
||
|
||
```
|
||
service/
|
||
├── internal/
|
||
│ ├── config/ # 配置定义
|
||
│ ├── handler/ # HTTP处理器
|
||
│ ├── logic/ # 业务逻辑
|
||
│ ├── svc/ # 服务上下文
|
||
│ ├── types/ # 类型定义
|
||
│ └── middleware/ # 中间件
|
||
├── etc/ # 配置文件
|
||
├── *.api # API定义文件
|
||
├── *.proto # protobuf定义
|
||
└── Dockerfile # 容器化配置
|
||
```
|
||
|
||
### API 设计规范
|
||
|
||
- RESTful API 设计
|
||
- 统一错误码
|
||
- 标准化响应格式
|
||
- 版本控制支持
|
||
|
||
## 总结
|
||
|
||
天远 API 服务器采用了现代化的微服务架构,具备良好的可扩展性、可维护性和安全性。通过 go-zero 框架的支持,实现了高性能的服务间通信和统一的开发规范。整个系统支持多环境部署、监控告警、日志追踪等企业级特性,是一个完整的商业级 API 服务平台。
|