avro与protobuf的性能指标

xqnpmsa8  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(457)

我们使用kafka存储消息并推送大量消息(一分钟内超过30k)。我不确定它是否相关,但是Kafka消息的生成代码在jruby中。
序列化和反序列化消息也会对系统的性能产生影响。
有人能帮我比较一下avro和protocolbuffer的序列化和反序列化速度吗。

owfi6suc

owfi6suc1#

我不想告诉你这些,但你的问题没有简单的答案。
序列化格式的性能取决于许多因素。首先,性能是实现的特性,而不是格式本身的特性。您真正想知道的是每种格式的特定jruby实现的性能(或者java实现,如果您只是 Package 它们的话)。答案可能与其他语言(如c++)的答案有很大不同。
此外,性能将因您使用库的方式而异。许多库的api在“简单、缓慢”和“快速、困难”之间进行了权衡。在优化时,您需要仔细研究文档并查找库作者提供的示例代码,以了解如何获得最佳性能。
最后,也是最重要的一点,性能因使用的数据而异。不同的格式和实现针对不同类型的数据进行优化。例如,字符串密集型数据将使用与数字密集型数据截然不同的代码路径。对于每种格式——甚至是json和xml*——总是有可能找到一种比其他格式性能更好的用例。小心来自图书馆作者的基准,因为这些基准往往强调对他们有利的用例。
不幸的是,如果您真的想知道哪种格式对您的性能更好,唯一的方法就是编写两个版本的代码,每个版本使用一个库,并对它们进行比较。没有任何外部基准能够给你真正的答案。
(我是protobufv2和cap'nproto的作者,所以我花了很多时间研究序列化基准并考虑性能。)

  • 只是在开xml玩笑。

相关问题