Avro——数据序列化系统

应用场景

  • 数据序列化和反序列化
  • 支持RPC通信

1.为什么要进行序列化

可以通过Java的原生序列化来理解,我们经常用到Java的Serializable接口,主要是因为

  • 网络传输数据需要做序列化
  • 将数据做持久化需要做序列化

2.序列化的关注点/衡量标准

  • 序列化后的数据大小
序列化后的字节流(二进制数据)通常是通过网络进行传输的,
因此序列化后的内容越少,传输耗时也就越短,这个很好理解。
  • 序列化和反序列化的耗时及占用的CPU
  • 是否支持跨平台、跨语言

3.Java原生序列化的问题

不能跨语言,只能通过Java语言来处理。
性能比较低,Java原生序列化不能做到对象结构的复用。

4.Avro官网简介

Avro是一个数据序列化框架(系统),提供了:

  • 丰富的数据结构类型,8种基本数据类型以及6种复杂类型
  • 快速可压缩的二进制形式
  • 提供容器文件用于持久化数据
  • 远程过程调用RPC框架
  • 简单的动态语言结合功能,Avro和动态语言结合后,读写数据文件和使用RPC协议都不需要生成代码,而代码生成作为一种可选的优化只值得在静态类型语言中实现。通过Avro,每次进行序列化,根据模式(Schema)文件来序列化,可以提高性能。

同类产品

Google的Protobuffer、Facebook的Thrift

你可能感兴趣的:(大数据学习,avro,大数据,网络通信)