分布式系统中序列化框架该如何选择?

写在前面

本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见100个问题搞定大数据理论体系

解答

分布式系统中常用的序列化框架有Apache Thrift,Google Protocol Buffers,Apache Avro,这 3 个都是"Language Of Data”。
它们通过引入 schema,使得数据跨语言序列化变得非常高效,同时提供了代码生成工具,为用户自动生成各种语言的代码。
除了以上 3 种以外,Kryo也是大数据框架中经常使用的序列化框架,不过Kryo是针对Java Object的序列化,对于跨语言方面是不支持的,但是很多场景中比如RPC,Cache,Store场景中一般很少需要对跨语言的支持。因此,Kryo的适用场景也很不错。

在这里插入图片描述

补充

“Language Of Data”具备以下基本特征

  1. 提供IDL(Interface Description language)用以描述数据 schema,能够很容易地描述任意结构化数据和非结构化数据。
  2. 支持跨语言读写,至少支持C++、Java和 Python三种主流语言。
  3. 数据编码存储(整数可采用变长编码,字符串可采用压缩编码等),以尽可能避免不必要的存储浪费。
  4. 支持 schema演化,即允许按照一定规则修改数据的 schema,仍可保证读写模块向前向后的兼容性。

Apache Thrift

详情请参考我的另一篇博客——Apache Thrift是什么?

Google Protocol Buffers(Protobuf)

详情请参考我的另一篇博客——Protobuf是什么?

Apache Avro

详情请参考我的另一篇博客——Apache Avro是什么?

Kryo

详情请参考我的另一篇博客——Kryo是什么?

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值