gpt4 book ai didi

Java:如何构建可扩展的Job处理机制

转载 作者:行者123 更新时间:2023-12-01 18:36:36 26 4
gpt4 key购买 nike

我需要构建一个作业处理模块,其中作业的传入率约为数百万量级。我有一台多处理器机器来运行这些作业。在我当前的解决方案中 Java ,我用Java的ThreadPoolExecutor框架来创建作业队列、LinkedListBlockingQueue,并且线程数等于系统上的可用处理器。此设计无法维持传入速率,因为作业队列不断增长,并且在几秒钟内它会报告溢出,即使 CPU 利用率未达到最大。 CPU 利用率保持在 30-40% 的范围内。

这意味着大部分时间都在线程争用中消失,而其他 CPU 仍然空闲。有没有更好的方法来处理作业,以便更好地利用 CPU,从而作业队列不会溢出?

最佳答案

我建议你看看Disruptor第一的。这提供了内存环形缓冲区的高性能。如果消费者跟不上生产者的速度,那么这种方法效果最好。

如果您需要持久或无界队列,我建议使用 Chronicle (我写的)这样做的优点是生产者不会因生产者而减慢速度(并且队列完全脱离堆)

这两者都旨在每秒处理数百万条消息。

关于Java:如何构建可扩展的Job处理机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21728406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com