《Kafka》中的关键和价值都应该用阿夫罗来解释吗?

woobm2wo  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(407)

我们正在建立一个kafka集群并探索avro的使用,但是我还没有找到avro是否应该同时用于kafka消息的键和值的指导。我已经研究了这两个用例,但我并没有真正看到在关键级别应用avro的好处。有什么好的理由这么做吗?而后续如果不使用avro上的键,首选的转换器是什么(字符串、json等)?

j0pj023g

j0pj023g1#

如果avro应该同时用于kafka消息的键和值
那就看你怎么用钥匙了。键通常(不总是)是单个字段,可能是字符串或数字,但不是复杂的对象。在这种情况下,没有理由对它们使用avro格式。
我已经研究了这两个用例,但我并没有真正看到在关键级别应用avro的好处
您可以通过考虑将要输入的内容作为密钥来评估使用情况。如果您最关心的是值,并且一个简单的字符串或数字就足以区分(或)分类您的kafka消息,那么您不需要avro格式。
有时,可能有多个字段组成一个键的用例,就像我们在rdbms中用多列创建主键一样。如果您假设您的应用程序有(或可能有)这样的用例,那么使用avro来支持模式演化。
如果不使用avro,那么后续的关键是什么是首选的转换器(字符串、json等)
json和avro用于复杂的对象,比如定制的pojo,而string、long等用于单字段值。
如果我想流式传输一个可以由用户id标识的用户信息,那么 user_id 将是我的Kafka信息钥匙。在这种情况下,我们可以使用 String 或者 Long .
avro有一个紧凑的二进制格式。关于为什么要为Kafka使用avro的更多信息,请参阅本文。

相关问题