程序通常使用两种不同的数据表示形式:内存中,数据保存在对象、结构体、数组等结构;将数据写入文件或通过网络发送时,必须编码为某种字节序列;
    文本格式:JSON/XML/CSV,可读性好
    二进制编码,Thrift与Protocol Buffers,大小占用低

    特别地,许多服务需要支持滚动升级,即每次需要把新版本服务逐步部署到几个节点,不同的节点可能正在运行不同版本的应用代码,因此在系统内流动的所有数据都以提供向后兼容(新代码可以读旧数据)和向前兼容(旧代码可以读新数据)的方式进行编码显得非常重要。