TL; DR
我有生产者,任务和消费者。我需要一个可扩展的排队系统,它可以确保一次只能使用一次任务,并且可以根据优先级对任务进行排序。
上下文:
我们有一个原型工作,但它不是“规模就绪”,今天我们需要扩展......
以下是原型“过程”:
1°)有些客户在数据库中上传数据集(PostgreSQL)
2°)每秒,应用程序在数据库中获取新数据集并将其转换为任务。 一个客户的数据集可以生成数千个任务(约500K任务/天,~30K任务/客户)
3°)应用程序“Dispatcher”
4°)工作人员接收任务,并将结果推送到数据库
5°)“Monitor”应用程序检查所有任务的状态,并重试任何需要(工作人员崩溃)的任务。
今天,瓶颈是SQL服务器,我可以调整它,但我更愿意以正确的方式重新设计它。那么,我想知道这种过程是否有一些最佳实践?
我似乎需要一个分布式排队系统(Kafka?),它可以保证任务只处理一次,但也会管理优先级。