Files
platform/README.md
2025-12-05 17:30:34 +08:00

83 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## TODO
trade/create 性能问题,缩短事务时间,考虑其他方式实现可靠分布式事务
jsonb 类型转换问题,考虑一个高效的 any 到 struct 转换工具
端口资源池的 gc 实现
标准化生产环境 cors 配置
底层调用集成 otel
- redis
- gorm
- 三方接口
分离 task 的客户端支持多进程prefork 必要!)
调整目录结构:
```
- /core 核心概念
- /util 工具函数
- /models 模型
- /queries 数据库层
- /clients 三方依赖的客户端实例
- /services 服务层
- /auth 认证相关,特化服务
- /app 应用相关,初始化日志,环境变量等
- /http 协议层http 服务
- /cmd 主函数
逐层向上依赖
cmd 调用 app, http 的初始化函数
http 调用 clients 的初始化函数
```
考虑一个方案限制接口请求速率,无侵入更好
冷数据迁移方案
proxy 网关更新接口可以传输更结构化的数据,直接区分不同类型以加快更新速度
## 业务逻辑
### 订单关闭的几种方式
1. 创建订单后推送异步任务,到时间后尝试完成订单或关闭订单
2. sse 接口推送订单状态,轮询尝试完成订单
3. 异步回调事件,收到支付成功事件后自动完成订单
4. 用户退出支付界面,客户端主动发起关闭订单
### 产品字典表
| 代码 | 产品 |
| ----- | ------------ |
| short | 短效动态代理 |
| long | 长效动态代理 |
### 节点分配与存储逻辑
添加:
- 检查用户 ip 是否在白名单内
- 取用端口,不够则返回失败
- 将分配结果转写成配置发送到网关
- 保存通道信息和分配记录,其中通道信息以网关为主体,分配记录以用户为主体
- 添加异步任务,当时间结束后释放取用的端口并清空网关配置
删除:
- 如果传入用户信息,检查要删除的连接是否属于该用户
- 释放可用端口
- redis 脚本中检查,如果端口所属节点已下线则直接忽略
- 提交清空配置到网关
缩扩容:
- 通过调度任务实现缩扩容
- 每分钟检查一次全部配置,按代理分组
- 获取所有代理后备配置
- 后备配置/当前配置
- 当比例 < 1.5 或 > 3 时,重新更新为 2 倍