近期我司(Funplus Kingsgroup)开源了一个项目:archivist,可大幅简化配置系统的维护,尤其适用于游戏行业,我司多个项目都在用。
这个项目由两部分组成:1)代码生成器,根据配置数据(JSON)自动生成数据结构,可以为各种编程语言服务;2)Golang 运行库,用以简化配置加载、热更。
## 代码生成器支持:
* 自动推测 JSON 字段的数据类型
* 通过 .meta 文件自定义 JSON 字段的数据类型,比如,把 struct 替换成 map[string]...
* 通过 .meta 文件支持扩展类型,包括引用 reference,日期时间 datetime,时间长度 duration 和国际化字符串 i18n
* 除了 .json,额外支持 .js 文件(方便手工编辑)
* paths 子命令:显式所有字段的路径和数据类型
* orphan 子命令:找出并删除『孤儿』文件,让数据文件、代码文件保持一致
* 自定义代码模板,以便生成各种编程语言的代码
## Golang 运行库支持:
* 把加载配置简化至几行代码
* 在启动时选择配置 group 和 subgroup
* 支持各种配置覆盖,包括文件级的和内容级的
* 支持扩展类型,包括引用 reference,日期时间 datetime,时间长度 duration 和国际化字符串 i18n
* 支持热更(通过原子操作切换到全套新配置)
* 支持补丁形式的热更
* 支持向后兼容检查
* 支持加载白名单、黑名单
* 支持配置扩展,方便运行时整理配置
* 线程安全
## 开源地址:https://github.com/kingsgroupos/archivist
有疑问加站长微信联系(非本文作者)