为什么我更喜欢纯文本配置

这几年接触过不少配置格式,从 ini、yaml、json 到某些自定义的二进制结构。用得越久,越觉得纯文本的配置在大多数场景下是更划算的选择。

可读性就是可维护性

纯文本最大的好处是,任何人拿到它,不需要额外的工具就能看懂。出问题的时候,不需要先装一个解析器才能查看当前配置。

这一点在排查故障时特别重要。半夜被告警叫醒的时候,你希望看到的是一个可以直接打开的文件,而不是一段需要解码的字节流。

diff 和版本控制

纯文本天然适合 diff。一次改动到底动了哪几行,在 git diff 里一目了然。而二进制格式即使只改了一个字段,也往往会显示成整个文件都变了。

更进一步,纯文本还方便把配置和代码放在同一个仓库里,跟着版本一起走。回滚的时候,配置也能一起回滚。

紧凑真的那么重要吗

二进制格式的主要优势是体积小、解析快。但对于配置文件这种几 KB 到几百 KB 的东西,这点差异在实际使用中几乎感知不到。

真正需要在意体积的,是网络传输和存储的批量数据,而不是启动时读一次的那点配置。

什么时候该用二进制

当然也不是说二进制一无是处。当配置需要携带大量结构化数据、需要做校验、或者需要防止被随意修改时,二进制或者带签名的格式就更合适。

但如果只是记录一些参数,纯文本几乎没有理由被淘汰。

← 返回首页