目前我正在自己实现模式注册。但是,也许还有其他一些方法可以对kafka消息(有效负载)进行版本控制?我知道confluent.io schema registry(以及其他类似的东西)。所以我的问题是:schema registry是确保消息向后兼容性的唯一可能的方法吗?顺便问一下,有没有什么好的库可以将java对象从对象和模式json转换成java对象?
mv1qrgav1#
confluent schema registry在ApacheKafka中提供avro模式的版本控制。根据文档,schema registry支持4种兼容性配置,默认为向后兼容性:在主题中注册新架构时,架构注册表服务器可以强制执行某些兼容性规则。目前,我们支持以下兼容性规则。向后兼容(默认):如果一个新模式可以用来读取所有以前模式中写入的数据,那么它就是向后兼容的。向后兼容性对于将数据加载到hadoop这样的系统非常有用,因为人们总是可以使用最新的模式查询所有版本的数据。前向兼容性:如果所有以前的模式都可以读取在此模式中写入的数据,则新模式是前向兼容的。前向兼容性对于只能处理特定版本(可能不总是最新版本)中的数据的使用者应用程序非常有用。完全兼容:一个新的模式是完全兼容的,如果它是向后和向前兼容的。不兼容:新模式可以是任何模式,只要它是有效的avro。您可以将兼容性更改为。 BACKWARD 使用以下调用
BACKWARD
# Update compatibility requirements globally $ curl -X PUT -H "Content-Type: application/vnd.schemaregistry.v1+json" \ --data '{"compatibility": "BACKWARD"}' \ http://localhost:8081/config
答案应该是
{"compatibility":"BACKWARD"}
为了将java对象序列化到avro,可以使用java反射api。例如,可以使用以下方法创建架构:
Schema schema = ReflectData.get().getSchema(T);
1条答案
按热度按时间mv1qrgav1#
confluent schema registry在ApacheKafka中提供avro模式的版本控制。
根据文档,schema registry支持4种兼容性配置,默认为向后兼容性:
在主题中注册新架构时,架构注册表服务器可以强制执行某些兼容性规则。目前,我们支持以下兼容性规则。
向后兼容(默认):如果一个新模式可以用来读取所有以前模式中写入的数据,那么它就是向后兼容的。向后兼容性对于将数据加载到hadoop这样的系统非常有用,因为人们总是可以使用最新的模式查询所有版本的数据。
前向兼容性:如果所有以前的模式都可以读取在此模式中写入的数据,则新模式是前向兼容的。前向兼容性对于只能处理特定版本(可能不总是最新版本)中的数据的使用者应用程序非常有用。
完全兼容:一个新的模式是完全兼容的,如果它是向后和向前兼容的。
不兼容:新模式可以是任何模式,只要它是有效的avro。
您可以将兼容性更改为。
BACKWARD
使用以下调用答案应该是
为了将java对象序列化到avro,可以使用java反射api。例如,可以使用以下方法创建架构: