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