每个客户的分布式作业队列

时间:2019-04-25 22:35:12

标签: architecture rabbitmq queue quartz-scheduler job-scheduling

要求: - 分散式 -一个客户最多只能处理一项工作 -在客户之间并行工作 -支持超过1万名客户 -客户端库需要可用于JVM

我的公司当前使用Quartz作为分布式作业存储。不错的之一 它的功能是“ DisallowConcurrentExecution”的功能,其中 每个客户都可以拥有自己的工作,其触发因素是订单中的流程 收到。效果很好,但是,随着我们继续增加更多客户, 工作数量没有按我们期望的那样扩展(Postgres支持),并且 我们正在读取/写入/为postgres石英表抽真空的表增长过快。

我们正在做一些研究,并试图找到一种我们可以 每个客户都有一个工作队列,每个客户最多要处理一个工作 一次客户(可以在客户之间并行工作)。

我们在RabbitMQ / SQS / Kafka /分布式锁等中探索了不同的方法 而且似乎没有一个人能很好地满足“每个客户一次完成一项工作”和可扩展的需求 需求。一种可以解决我们需求的架构是Akka,但我们的 由于存在许多部署/维护问题,公司已避开它 我们曾经遇到过它。

不仅仅是处理FIFO中的所有作业的一个问题是某些作业可能需要 需要30多个时间才能完成,我们不希望其他客户等待另一个 客户的工作要完成。

0 个答案:

没有答案