11 KiB
11 KiB
天远 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 服务平台。