模块/服务设计文档
服务架构概览
井云服务中心后端采用微服务架构,包含以下核心服务:
- Gateway(网关服务):系统统一入口,负责路由、认证、负载均衡
- Auth(认证服务):用户认证和授权
- User(用户服务):用户管理、素材管理、分销系统、点数管理
- Agent(智能体服 务):智能体管理、分类、配置和工作流
- Tenant(租户服务):多租户管理、版本管理、权限管理、菜单管理
- Payment(支付服务):支付处理、订单管理、租户购买
- Integration(集成服务):第三方服务集成
- Cron(定时任务服务):定时任务调度
各服务详细设计
1. Gateway 网关服务
服务职责
作为系统的统一入口,处理所有外部请求的路由、认证和负载均衡。
API 列表
- 代理所有内部服务的 HTTP API
- 提供统一的认证和鉴权
- 请求限流和熔断保护
- 跨域处理和安全防护
核心功能
- 路由转发:根据请求 路径转发到对应的后端服务
- 认证拦截:验证 JWT Token 和用户权限
- 负载均衡:支持多种负载均衡策略
- 监控和日志:记录所有请求日志和性能指标
依赖的外部服务
- Consul:服务注册发现
- 所有内部微服务
关键设计决策
- 使用 Kratos Gateway 框架
- 支持动态路由配置
- 实现服务级别的熔断和降级
2. Auth 认证服务
服务职责
处理用户认证、授权和会话管理,支持多种登录方式。
API 列表
/auth/wechat/login:微信登录/auth/sms/send:发送短信验证码/auth/sms/login:短信验证码登录/auth/refresh:刷新 Token/auth/logout:用户登出
核心数据模型
type User struct {
ID int64 `json:"id"`
Phone string `json:"phone"`
Nickname string `json:"nickname"`
Avatar string `json:"avatar"`
Status int32 `json:"status"`
}
type AuthToken struct {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
ExpiresIn int64 `json:"expires_in"`
}
关键流程
-
微信登录流程:
- 生成微信登录二维码
- 用户扫码后获取微信用户信息
- 创建或更新用户记录
- 生成 JWT Token
-
短信登录流程:
- 发送短信验证码
- 验证短信验证码
- 创建或更新用户记录
- 生成 JWT Token
依赖的外部服务
- Redis:存储登录状态和验证码
- 微信 API:微信登录接口
- PostgreSQL:用户数据存储
幂等性、事务、并发处理
- 幂等性:相同的登录请求返回相同结果
- 事务:用户创建和 Token 生成在同一事务中
- 并发:使用 Redis 分布式锁防止重复登录
3. User 用户服务
服务职责
处理用户管理、素材管理、分销系统、点数管理等业务逻辑。
API 列表
/user/profile:获取用户信息/user/materials:素材管理/user/distribution:分销相关/user/points:点数管理/user/transactions:交易记录
核心数据模型
type User struct {
ID int64 `json:"id"`
Phone string `json:"phone"`
Nickname string `json:"nickname"`
Avatar string `json:"avatar"`
Status int32 `json:"status"`
TenantID int64 `json:"tenant_id,omitempty"`
InviterID int64 `json:"inviter_id,omitempty"`
}
type Material struct {
ID int64 `json:"id"`
UserID int64 `json:"user_id"`
Title string `json:"title"`
Content string `json:"content"`
CategoryID int64 `json:"category_id,omitempty"`
}
type UserPointLedger struct {
ID int64 `json:"id"`
UserID int64 `json:"user_id"`
Balance int64 `json:"balance"`
ExpiresAt time.Time `json:"expires_at"`
}
关键流程
-
点数消费流程:
- FIFO 策略选择即将过期的点数
- 扣减点数余额
- 记录消费流水
- 更新用户总点数
-
分销佣金计算:
- 查询用户分销等级
- 计算直推和间推佣金
- 生成佣金记录
- 更新用户佣金余额
依赖的外部服务
- PostgreSQL:用户数据存储
- Redis:缓存和会话存储
- RabbitMQ:异步消息处理
幂等性、事务、并发处理
- 幂等性:点数消费使用唯一订单号
- 事务:点数操作使用数据库事务保证一致性
- 并发:使用乐观锁防止并发修改