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