0

我有以下情况。

我们在 K8s 上的 Cloud 中对我们的应用程序进行负载测试。我们的入站消息来自 Kafka,我们正在回信给 Kafka。我们的架构是这样的,Kafka 线程将消息推送到中断器(阻塞等待策略,512 大小),业务线程将消息从中断器中取出进行处理。为了模拟负载,我们在应用程序未运行时为 Kafka 主题(4 个分区)准备了接近 500K 的消息。然后我们启动我们的应用程序来测量负载。

我们看到的是中断器完全填满,剩余容量为 0,然后开始耗尽,这种情况一遍又一遍地继续。

这是正确的行为还是我们以错误的方式使用破坏者?请分享你的想法?

4

1 回答 1

0

您应该在将消息排入队列之前启动中断程序。一旦事件发布到环形缓冲区,事件处理程序就会对其进行处理。

任何时候在环形缓冲区中等待的事件数量将取决于生产者和消费者处理时间之间的不平衡。

请注意,当环形缓冲区已满时,您将在使用该方法在环形缓冲区中声明序列时遇到背压,next()并且您的生产者线程将被阻塞。

于 2021-02-03T23:08:13.783 回答