我有以下场景。
我们在K8s的云中对我们的应用程序进行了负载测试。我们的入站消息是通过Kafka发送的,我们正在给Kafka回信。我们的架构是这样的: Kafka线程将消息推送到disruptor (阻塞等待策略,512大小),业务线程将消息从disruptor中取出进行处理。为了模拟负载,我们在Kafka主题(4个分区)中设置了应用程序未运行时的关闭500K消息。然后,我们启动应用程序来测量负载。
我们看到的是,disruptor完全填满了剩余的0容量,然后开始耗尽,这种情况一次又一次地继续下去。
这是正确的行为,还是我们以错误的方式使用颠覆者?请分享你的想法?
发布于 2021-02-04 07:08:14
在将消息排入队列之前,您应该启动中断器。将事件发布到环形缓冲区后,事件处理程序将立即对其进行处理。
在任意时刻在环形缓冲区中等待的事件的数量将取决于生产者和消费者处理时间之间的不平衡。
请注意,当环形缓冲区已满时,在使用next()方法声明环形缓冲区中的序列时,您将遇到背压,并且您的生产者线程将被阻塞。
https://stackoverflow.com/questions/63014910
复制相似问题