午夜咖啡午夜咖啡

jolestar 的文章与笔记。

Post

Jackson Smile 的跨语言支持问题

2014-08-18 16:20:09Post

很多二进制格式在单语言里都能跑得很好,但一旦进入多端、多语言协作场景,真正卡住落地的往往不是性能,而是生态是否完整、兼容边界是否清楚。

我一直用的是 jackson 2.x。后来看到它的 Smile 二进制方案,觉得有一点很有意思:它和 JSON 在数据模型上几乎是等价的,所以从抽象上看,比很多“重新定义一套专用二进制协议”的方案更自然。

但真到工程实践里,性能往往不是唯一门槛。

一个格式到底能不能用起来,尤其是在服务端、客户端、脚本工具、多语言系统一起协作的时候,更关键的问题反而是:

  • 其他语言有没有成熟实现
  • 各端能不能稳定互通
  • 升级和兼容成本高不高

这也是为什么很多看起来性能不错的二进制格式,最后并没有真正流行起来。它们在单一栈里可能很好用,但一旦进入跨平台场景,生态缺口就会立刻放大。

所以如果只是 Java 内部系统,选择空间其实很多;但如果目标是多语言协作,我会更看重“模型是否通用”和“实现是否完整”,而不只是某个 benchmark 上快了多少。