Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Kafka-serialiser JSON时的使用者速度_C#_Json_Apache Kafka - Fatal编程技术网

C# Kafka-serialiser JSON时的使用者速度

C# Kafka-serialiser JSON时的使用者速度,c#,json,apache-kafka,C#,Json,Apache Kafka,我们正在构建一个microservices环境,它以JSON格式在队列中生成消息。在使用这些消息时,我们使用JSON序列化程序将其转换为C#中的对象,但正因为如此,我们处理的每个消息(包括业务逻辑)都需要200-300毫秒的处理时间 显然,对于消息传递系统来说,这是一个真正的拦截器。关于如何提高吞吐量有什么想法吗?也许我们采取了完全错误的方法。这个问题似乎是关于JSON反序列化所花费的时间,这与kafka消费者没有太大关系 如果在kafka使用者线程上花费大量时间进行反序列化,则需要微调max.

我们正在构建一个microservices环境,它以JSON格式在队列中生成消息。在使用这些消息时,我们使用JSON序列化程序将其转换为C#中的对象,但正因为如此,我们处理的每个消息(包括业务逻辑)都需要200-300毫秒的处理时间


显然,对于消息传递系统来说,这是一个真正的拦截器。关于如何提高吞吐量有什么想法吗?也许我们采取了完全错误的方法。

这个问题似乎是关于JSON反序列化所花费的时间,这与kafka消费者没有太大关系

如果在kafka使用者线程上花费大量时间进行反序列化,则需要微调max.poll.interval.ms和session.timeout.ms。您还可以控制max.poll.records返回的邮件数。你需要微调参数

如果您觉得反序列化的时间很长,那么应该通过将使用的JSON放在另一个内存队列中,并在单独的线程上并行处理它们(注意背压问题),从而将业务处理与使用分开,并且可以关闭使用方自动同步


没有一站式解决方案,在加载时进行分析,相应地对主题进行分区,并通过让多个使用者具有相同的group.instance.id来实现应用程序的可伸缩性,测试以了解其运行情况,然后只开始微调参数。

您需要在代码上运行探查器,以查看大部分时间都花在哪里,然后解决这个问题。除了已经提出的观点之外,假设每个消息由于任何原因都需要很长时间来处理,并且无法加速,那么这就是Kafka的扩展方法的理想之处——每个消费者都在缓慢地处理其分区,但是,只要您有很多分区,您就可以将使用者添加到组中,以获得您想要的总体吞吐量。如果消息顺序很重要,那么这就是关键点的作用——只要相关消息具有相同的密钥,因此它们会进入同一分区,那么它们就可以按顺序使用,而不管并行度有多高消费方面存在问题(尽管如果订购对您很重要,则需要注意一些配置),请提供一个。谢谢。是的,JSON serialiser的行为很慢。我的问题更多的是为了改进这一点,以及避免哪些常见的陷阱