Files
platform/README.md

2.7 KiB
Raw Blame History

TODO

重新梳理提取逻辑:

  • 注册代理 & 注销代理
    • 实现两个 set 池,分别保存可用端口和全部端口
    • 添加代理时,同时将端口加入全部池和可用池
    • 注销代理时,同时将端口从全部池和可用池中移除
  • 调整通道分配策略,提供一个 all set 和一个 free set提取时取交集再取出归还时取交集再归还。
  • redis channel lease 加一个 zset定时处理没有成功释放的端口

低优先

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

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

jsonb 类型转换问题

标准化生产环境 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 倍