8f89503c88724cb19f466c0aaf42aacbe0b4cdf0
TODO
提取代理:
- 网关修改问题
- 在提取流程中如果网关被修改,有可能导致数据不一致
- 提供读写锁,在提取流程中获取读锁,在修改网关时获取写锁
- 端口悬空问题
- 在提取流程中如果发生异常,可能导致端口被占用但通道信息没有被写入数据库,配置以及端口将无法解除
- 提交删除任务时,带上配置信息,无需再查数据库且接口总是会被正确清理
- 异常情况下,将只清理网关端口,而无法解除节点连接,这个问题需要额外处理
- otel 没有正确记录接口失败信息
筛选和关联展示功能扩展
错误提示增强,展示整链路信息
ip 提取频率限制,在 ensure 函数加逻辑,通过 redis 或者 pg 计算分钟内提取次数,只允许每分钟提取 30 次
proxy 的删除和更新,锁粒度应该有问题
交易信息持久化
用反射实现环境变量解析,以简化函数签名
分离 task 的客户端,支持多进程(prefork 必要!)
慢速请求底层调用埋点监控
冷数据迁移方案
开发环境
更新表结构的流程
- 编辑
scripts/sql/init.sql文件,参照原有格式,需要注意:
- 先写 drop table if exists 语句,确保脚本可以幂等执行
- 编写 create table 语句,按需添加审计字段和软删除字段 (created_at, updated_at, deleted_at)
- 为有必要的字段添加索引
- 为数据表及其字段添加注释
- 在文件末尾创建数据表流程全部结束后,为字段添加外键
- 建议用数据库工具检查差异并增量更新,或者手动增量更新
- 创建 model 文件,并将其添加到 gen 代码中
- 生成查询文件
权限管理
在 web/core/scopes.go 下定义了系统所有静态权限
新增系统权限需要在数据库中配套添加权限
前端也需要新增配套权限定义
业务逻辑
订单关闭的几种方式
- 创建订单后推送异步任务,到时间后尝试完成订单或关闭订单
- sse 接口推送订单状态,轮询尝试完成订单
- 异步回调事件,收到支付成功事件后自动完成订单
- 用户退出支付界面,客户端主动发起关闭订单
节点分配与存储逻辑
提取:
- 检查用户套餐与白名单
- 选中代理
- 找到当前可用端口最多的代理
- 不考虑分割端口,不够加机器
- 获取可用端口
- 获取可用节点
- 生成批次号,提交到期释放任务
- 绑定节点与端口,保存到数据库
- 分别提交连接与配置请求
释放:
- 根据批次查出所有端口与相关节点
- 分别提交断开与关闭请求
- 释放端口
Description