TODO

活体认证回调在后端实现

重新实现接口 proxy 注册与注销接口:

  • 注册时向 redis ports 可用池中加入端口
  • 注销时需要同时移除可用池与租约池中的端口(需要考虑具体实现,考虑正在使用的节点归还问题)
  • 调整通道分配策略,提供一个 all set 和一个 free set提取时取交集再取出归还时取交集再归还。

otel 检查接口性能

trade/create 性能问题,缩短事务时间,考虑其他方式实现可靠分布式事务

需要确认以下 ID.GenSerial 的分布式并发安全性

实现 sse 检查订单,减少请求次数

网关缩扩容太慢

redis channel lease 加一个 zset定时处理没有成功释放的端口

长期

分离 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 倍
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%