50 lines
1.5 KiB
Markdown
50 lines
1.5 KiB
Markdown
## TODO
|
|
|
|
### 长期
|
|
|
|
模型字段修改,特定枚举字段使用自定义类型代替通用 int32
|
|
|
|
更新接口可以传输更结构化的数据,直接区分不同类型以加快更新速度
|
|
|
|
## 业务逻辑
|
|
|
|
### 代理服务与节点的增量更新
|
|
|
|
代理服务定时提交增量更新数据包,格式为:
|
|
|
|
| version(1) | proxy_id(4) | count(2) | edge_id(4) | mask(1) | info(...) |
|
|
|------------|-------------|----------|------------|---------|-----------|
|
|
| 数据包版本 | 代理服务 id | 更新的节点数量 | 节点 id | 节点更新项 | 节点更新内容 |
|
|
|
|
其中 mask 部分,每个位代表一个节点更新项,具体如下:
|
|
|
|
| 位数(从前到后) | 节点更新项 |
|
|
|----------|----------|
|
|
| 0 | 保留位,预留扩展 |
|
|
| 1 | 空,固定为 0 |
|
|
| 2 | 空,固定为 0 |
|
|
| 3 | 端口 |
|
|
| 4 | 省份 |
|
|
| 5 | 城市 |
|
|
| 6 | 运营商 |
|
|
| 7 | 状态 |
|
|
|
|
节点更新的具体内容大小视数据结构而定
|
|
|
|
### 产品字典表
|
|
|
|
| 代码 | 产品 |
|
|
|-------|------|
|
|
| short | 短效代理 |
|
|
| long | 长效代理 |
|
|
|
|
## 业务流程
|
|
|
|
### 短效动态
|
|
|
|
1. 获取远端连接配置
|
|
2. 查询并计算实际连接状况
|
|
3. 每个网关:
|
|
1. 根据负载分配算法,计算是否需要为此网关分配新的连接
|
|
2. 如果需要新的连接且预计连接数大于已配置的连接数,则更新远端连接配置
|
|
3. 为新增连接分配可用端口,并更新网关端口配置 |