2025-08-05 10:51:35 +08:00
|
|
|
## TODO
|
|
|
|
|
|
|
|
|
|
此实现目前并不是完全并发安全的:
|
2026-02-26 16:10:17 +08:00
|
|
|
|
2025-09-10 18:26:59 +08:00
|
|
|
- 目前事务等级没有对 cityhash 表的 offset 字段做防丢失,并发操作可能会出问题
|
|
|
|
|
|
2026-02-26 16:10:17 +08:00
|
|
|
考虑把命令行接口改为 web 接口
|
|
|
|
|
|
2025-09-11 14:40:11 +08:00
|
|
|
### 统一节点调度
|
2025-09-10 18:26:59 +08:00
|
|
|
|
2025-09-11 14:40:11 +08:00
|
|
|
节点上下线:
|
2025-09-10 18:26:59 +08:00
|
|
|
|
2025-09-11 14:40:11 +08:00
|
|
|
提供一个接口用来为节点加解锁
|
2025-09-10 18:26:59 +08:00
|
|
|
|
2025-09-11 14:40:11 +08:00
|
|
|
## 目录结构
|
2025-09-10 18:26:59 +08:00
|
|
|
|
2025-09-11 14:40:11 +08:00
|
|
|
整体是一个 go 项目,编译后在服务器执行
|
2025-09-10 18:26:59 +08:00
|
|
|
|
|
|
|
|
```
|
2025-09-11 14:40:11 +08:00
|
|
|
docs/ 相关文档
|
2025-09-10 18:26:59 +08:00
|
|
|
|
2025-09-11 14:40:11 +08:00
|
|
|
actions/ 程序功能
|
|
|
|
|
clients/ 外部 api 调用
|
|
|
|
|
model/ 数据库模型
|
|
|
|
|
util/ 工具类
|
2025-09-10 18:26:59 +08:00
|
|
|
|
2025-09-11 14:40:11 +08:00
|
|
|
scripts/ shell 脚本
|
2025-09-11 16:06:14 +08:00
|
|
|
```
|
|
|
|
|
|
2026-02-26 16:10:17 +08:00
|
|
|
## 使用方式
|
|
|
|
|
|
|
|
|
|
此项目在本地运行,其编译产物放在服务器运行
|
|
|
|
|
|
|
|
|
|
1. 在项目根目录下运行 `./deploy.ps1`,或直接复制脚本中的命令,编译出执行程序并上传到服务器
|
|
|
|
|
2. (可选)可以把 `update.sh` 和 `rollback.sh` 也上传到服务器,方便更新和回滚
|
|
|
|
|
3. (可选)可以在服务器将编译出的 cli 可执行文件链接到 /bin 下以实现全局执行
|
|
|
|
|
|
|
|
|
|
cli 有三个命令:
|
|
|
|
|
- `cli sync` 是同步城市节点
|
|
|
|
|
- `cli update` 是更新网关配置
|
|
|
|
|
- `cli clear` 是清空网关配置
|
|
|
|
|
|
|
|
|
|
> 三个命令对应于代码中 actions/ 目录下三个同名文件
|
|
|
|
|
|
|
|
|
|
## 逻辑梳理
|
2025-09-11 16:06:14 +08:00
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
每城市更新数量
|
|
|
|
|
|
|
|
|
|
遍历配置[网关][配置]
|
|
|
|
|
如果无需更新直接放入新配置
|
|
|
|
|
如果需要更新,放入城市更新统计
|
2026-02-26 16:10:17 +08:00
|
|
|
|
2025-09-11 16:06:14 +08:00
|
|
|
统计[城市][配置]
|
|
|
|
|
遍历城市
|
|
|
|
|
取到新节点
|
|
|
|
|
遍历需要更新的配置:
|
|
|
|
|
根据配置放入指定槽位[网关][配置]
|
2026-02-26 16:10:17 +08:00
|
|
|
|
2025-09-11 16:06:14 +08:00
|
|
|
新配置[网关][配置]
|
2026-02-26 16:10:17 +08:00
|
|
|
```
|