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 的初始化函数

开号流程事务化

开号:

  • 提交关闭任务
  • 保存数据
  • 开通端口

过期:

  • 接口
  • redis

冷数据迁移方案

proxy 网关更新接口可以传输更结构化的数据,直接区分不同类型以加快更新速度

业务逻辑

订单关闭的几种方式

  1. 创建订单后推送异步任务,到时间后尝试完成订单或关闭订单
  2. sse 接口推送订单状态,轮询尝试完成订单
  3. 异步回调事件,收到支付成功事件后自动完成订单
  4. 用户退出支付界面,客户端主动发起关闭订单

产品字典表

代码 产品
short 短效动态代理
long 长效动态代理

节点分配与存储逻辑

添加:

  • 检查用户 ip 是否在白名单内
  • 取用端口,不够则返回失败
  • 将分配结果转写成配置发送到网关
  • 保存通道信息和分配记录,其中通道信息以网关为主体,分配记录以用户为主体
  • 添加异步任务,当时间结束后释放取用的端口并清空网关配置

删除:

  • 如果传入用户信息,检查要删除的连接是否属于该用户
  • 释放可用端口
    • redis 脚本中检查,如果端口所属节点已下线则直接忽略
  • 提交清空配置到网关

缩扩容:

  • 通过调度任务实现缩扩容
  • 每分钟检查一次全部配置,按代理分组
  • 获取所有代理后备配置
  • 后备配置/当前配置
    • 当比例 < 1.5 或 > 3 时,重新更新为 2 倍
Description
后端
Readme 1.5 MiB
v1.7.0 Latest
2026-04-20 16:47:27 +08:00
Languages
Go 99%
HTML 0.6%
Dockerfile 0.2%
PowerShell 0.2%