82 lines
1.9 KiB
Markdown
82 lines
1.9 KiB
Markdown
## TODO
|
||
|
||
优化中间件,配置通用限速
|
||
|
||
trade/create 性能问题,缩短事务时间,考虑其他方式实现可靠分布式事务
|
||
|
||
jsonb 类型转换问题,考虑一个高效的 any 到 struct 转换工具
|
||
|
||
端口资源池的 gc 实现
|
||
|
||
channel 服务代码结构,用 provider 代替整个 service 的复用
|
||
|
||
用反射实现环境变量解析,以简化函数签名
|
||
|
||
---
|
||
|
||
分离 task 的客户端,支持多进程(prefork 必要!)
|
||
|
||
调整目录结构:
|
||
|
||
```
|
||
- /util 工具函数
|
||
|
||
- /models 模型
|
||
- /queries 数据库层
|
||
- /clients 三方依赖的客户端实例
|
||
|
||
- /services 服务层
|
||
- /auth 认证相关,特化服务
|
||
|
||
- /app 应用相关,初始化日志,环境变量,错误类型等
|
||
- /http 协议层,http 服务
|
||
- /cmd 主函数
|
||
|
||
逐层向上依赖
|
||
cmd 调用 app, http 的初始化函数
|
||
http 调用 clients 的初始化函数
|
||
```
|
||
|
||
---
|
||
|
||
慢速请求底层调用埋点监控
|
||
- redis
|
||
- gorm
|
||
- 三方接口
|
||
|
||
冷数据迁移方案
|
||
|
||
## 业务逻辑
|
||
|
||
### 订单关闭的几种方式
|
||
|
||
1. 创建订单后推送异步任务,到时间后尝试完成订单或关闭订单
|
||
2. sse 接口推送订单状态,轮询尝试完成订单
|
||
3. 异步回调事件,收到支付成功事件后自动完成订单
|
||
4. 用户退出支付界面,客户端主动发起关闭订单
|
||
|
||
### 产品字典表
|
||
|
||
| 代码 | 产品 |
|
||
| ----- | ------------ |
|
||
| short | 短效动态代理 |
|
||
| long | 长效动态代理 |
|
||
|
||
### 节点分配与存储逻辑
|
||
|
||
提取:
|
||
- 检查用户套餐与白名单
|
||
- 选中代理
|
||
- 找到当前可用端口最多的代理
|
||
- 不考虑分割端口,不够加机器
|
||
- 获取可用端口
|
||
- 获取可用节点
|
||
- 生成批次号,提交到期释放任务
|
||
- 绑定节点与端口,保存到数据库
|
||
- 分别提交连接与配置请求
|
||
|
||
释放:
|
||
- 根据批次查出所有端口与相关节点
|
||
- 分别提交断开与关闭请求
|
||
- 释放端口
|