优化连接效率

This commit is contained in:
2025-03-07 15:50:57 +08:00
parent 791f20d2d7
commit 053041ae34
13 changed files with 564 additions and 418 deletions

View File

@@ -1,49 +1,34 @@
## todo
排查启动速度很慢的问题
鉴权时判断授权的协议
可配置 processUserConn 超时等待时间
建立通道时,发送的 dst 和 tag 等信息,可以用字节表示而非 string提高效率
建立数据通道失败后,根据用户所选协议返回对应失败响应
测试跳过认证时的最大 qps需要注意单机连接数上限会导致连接失败
简化数据传递时的 tag 文本量(找一个无重复 hash 的办法),并且在控制通道直接传输目标地址,客户端可以同时开始数据通道和目标地址的连接建立
读取 conn 时加上超时机制
代理节点超时控制
网关根据代理节点对目标服务连接的反馈,决定向用户返回的 socks 响应
数据通道池化
协程池化
可配配置环境变量
- 退出等待时间
- 数据通道连接超时等待时间
- 目标地址连接超时等待时间
### 长期
配置退出等待时间
协程池化
需要测试,考虑是否切换到 gnet
实现一个 socks context 以在子组件中获取 socks 相关信息
代理端口支持混合端口转发
数据通道支持 tcp 多路复用(分离逻辑流)
👆 进阶黑魔法 multipath tcp + 多路复用
考虑一下连接安全性
内部接口 rtt 是否还有优化空间当前30-300ms根据内容大小增长
### 代码清理
检查 slog 级别:
ERR: 除非有必要,否则全部 error 都使用 `errors.Wrap()` 包裹(如果下游有返回 err并附带本层业务信息return 到上层统一打印
其他级别日志就地打印Info 只用来跟踪关键流程
## 开发相关
### 环境变量
@@ -68,3 +53,34 @@ ERR: 除非有必要,否则全部 error 都使用 `errors.Wrap()` 包裹(如
1. 关闭接听端口防止新连接接入user, data, ctrl
2. 通知并等待所有正在运行的 conn 处理协程全部关闭user, data, ctrl
3. 结束所有保存且未使用的 conn 连接user, ctrl
### 代码清理
检查 slog 级别:
ERR: 除非有必要,否则全部 error 都使用 `errors.Wrap()` 包裹(如果下游有返回 err并附带本层业务信息return 到上层统一打印
其他级别日志就地打印Info 只用来跟踪关键流程
## 协议
### 建立连接
客户端(控制通道):
`version(1)` `id_len(1)` `id_buf(n)`
服务端(控制通道):
`status(1)`
### 开启代理
服务端(控制通道):
`dst_len(1)` `dst_buf(n)` `tag_len(1)` `tag_buf(n)`
客户端(数据通道):
`status(1)` `tag_len(1)` `tag_buf(n)`