Concurrency 分布式优先级队列,一次且仅一次
TL;DR 我有生产者、任务和消费者。我需要一个可扩展的排队系统,它可以确保一个任务可以被使用一次,而且只能使用一次,并且可以根据任务的优先级对任务进行排序 上下文: 我们有一个原型正在工作,但它还没有“准备好缩放”,今天我们需要缩放 以下是原型“流程”: 1°)部分客户在数据库中上传数据集(PostgreSQL) 每秒,应用程序获取数据库中的新数据集并将其转换为任务。 一个客户的数据集可以生成数千个任务(~500K个任务/天,~30K个任务/客户) 3°)应用程序“调度器”Concurrency 分布式优先级队列,一次且仅一次,concurrency,queue,Concurrency,Queue,TL;DR 我有生产者、任务和消费者。我需要一个可扩展的排队系统,它可以确保一个任务可以被使用一次,而且只能使用一次,并且可以根据任务的优先级对任务进行排序 上下文: 我们有一个原型正在工作,但它还没有“准备好缩放”,今天我们需要缩放 以下是原型“流程”: 1°)部分客户在数据库中上传数据集(PostgreSQL) 每秒,应用程序获取数据库中的新数据集并将其转换为任务。 一个客户的数据集可以生成数千个任务(~500K个任务/天,~30K个任务/客户) 3°)应用程序“调度器” 从数据库中获取已
- 从数据库中获取已排序的任务(具有最小数据集的任务将首先执行,即使它们已在稍后提交+一些随机值以进行无序排列)
- 执行一些验证(检查任务是否已取消)
- 将任务分派给相应的工人。 每个工作者只能处理一种任务,但它可以同时处理数千种任务