我们正在构建一个microservices环境,它以json格式将消息生成到队列中。在使用这些消息时,我们使用json serialiser将其转换为c中的对象,但正因为如此,我们处理的每个消息(包括业务逻辑)都需要200-300ms的时间。显然,对于消息传递系统来说,这是一个真正的拦截器。关于如何提高吞吐量有什么想法吗?也许我们采取了完全错误的方法。
ercv8c1e1#
这个问题似乎是关于json反序列化所花费的时间,这与kafka消费者没有太大关系。如果在kafka使用者线程上花费大量时间进行反序列化,则需要微调max.poll.interval.ms和session.timeout.ms。您还可以控制max.poll.records返回的消息数。你需要微调参数。如果您觉得反序列化的时间很长,那么应该将使用的json放在另一个内存队列中,并在单独的线程上并行处理它们(注意背压问题),从而将业务处理与使用分离开来,并且可以关闭使用方自动同步。没有一站式解决方案,在加载时进行分析,对主题进行相应的分区,并通过让多个使用者具有相同的group.instance.id使应用程序具有可伸缩性,测试以了解其运行情况,然后只开始微调参数。
1条答案
按热度按时间ercv8c1e1#
这个问题似乎是关于json反序列化所花费的时间,这与kafka消费者没有太大关系。
如果在kafka使用者线程上花费大量时间进行反序列化,则需要微调max.poll.interval.ms和session.timeout.ms。您还可以控制max.poll.records返回的消息数。你需要微调参数。
如果您觉得反序列化的时间很长,那么应该将使用的json放在另一个内存队列中,并在单独的线程上并行处理它们(注意背压问题),从而将业务处理与使用分离开来,并且可以关闭使用方自动同步。
没有一站式解决方案,在加载时进行分析,对主题进行相应的分区,并通过让多个使用者具有相同的group.instance.id使应用程序具有可伸缩性,测试以了解其运行情况,然后只开始微调参数。