赞
踩
在Kafka中,创建一个生产者对象必须指定序列化器。我们有2种选择:
1、使用自定义序列化器。
2、使用已有的序列化器和反序列化器,比如JSON、 Avro、 Thri仇或 Protobuf。
通常不建议使用自定义序列化器,因为使用不同版本的序列化器和反序列化器会出现新旧消息的兼容性问题,特别是当消息记录中有修改字段的情况。
Apache Avro 是一种与编程语言无关的序列化格式,推荐在Kafka上使用Avro序列化器。
Avro数据通过与语言无关的 schema来定义。 schema通过 JSON来描述,数据被序列化成二进制文件或 JSON 文件,不过一般会使用二进制文件。Avro在读写文件时需要用到 schema, schema一般会被内嵌在数据文件里。
Avro有个很好的特性,就是当负责写消息的应用程序使用了新的 schema,负责读消息的应用程序可以继续处理消息而无需做任何改动。
我们看到,更新到新版的 schema 后,旧记录仍然包含faxNumber 字段,而新记录则包含email字段 。
对于旧程序,可以用getFaxNumber()方法获取旧值,对于新程序,可以用getEmail()方法获取新值,这样也就避免了异常或者阻断性错误,也不需要对现有数据进行大幅更新。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。