791f20d2d7ae685578b5509499e6316b1194035f
todo
排查启动速度很慢的问题
可配置 processUserConn 超时等待时间
测试跳过认证时的最大 qps(需要注意单机连接数上限,会导致连接失败)
简化数据传递时的 tag 文本量(找一个无重复 hash 的办法),并且在控制通道直接传输目标地址,客户端可以同时开始数据通道和目标地址的连接建立
读取 conn 时加上超时机制
代理节点超时控制
网关根据代理节点对目标服务连接的反馈,决定向用户返回的 socks 响应
数据通道池化
协程池化
长期
配置退出等待时间
需要测试,考虑是否切换到 gnet
实现一个 socks context 以在子组件中获取 socks 相关信息
代理端口支持混合端口转发
数据通道支持 tcp 多路复用(分离逻辑流)
👆 进阶黑魔法 multipath tcp + 多路复用
考虑一下连接安全性
内部接口 rtt 是否还有优化空间(当前30-300ms,根据内容大小增长)
代码清理
检查 slog 级别:
ERR: 除非有必要,否则全部 error 都使用 errors.Wrap() 包裹(如果下游有返回 err),并附带本层业务信息,return 到上层统一打印
其他级别日志就地打印,Info 只用来跟踪关键流程
开发相关
环境变量
环境变量只记录在程序中用到的变量
构建期变量,比如 docker-compose 中的变量,以及其他配套服务的环境变量,直接写死
新增环境变量时,需要确保两个位置正确传递了变量
- 在对应端的 .env.sample 文件中添加变量
- 复制到 .env 文件中,并修改变量值
- 在 docker-compose.yml 和程序中使用变量
更新测试环境
- 构建项目
- 使用测试配置
.env.test远程启动 docker
转发服务结束时资源清理
- 关闭接听端口,防止新连接接入(user, data, ctrl)
- 通知并等待所有正在运行的 conn 处理协程全部关闭(user, data, ctrl)
- 结束所有保存且未使用的 conn 连接(user, ctrl)
Description
Languages
Go
90%
PowerShell
9%
Dockerfile
1%