处理数百万个定时(预定)消息的解决方案?

ent*_*nto 8 message-queue scheduled-tasks

我正在评估处理大量排队消息的可能解决方案,这些消息必须在特定日期和时间发送给工作人员.执行它们的结果主要是对存储数据的更新,并且它们最初可能或可能不是由用户动作触发的.

例如,想想你在假想的大型星际争霸游戏服务器中实现的内容,用于存储和执行用户的操作,例如升级建筑物,孵化士兵,所有这些都需要在几秒钟后应用于游戏状态玩家启动后几分钟.

问题是我似乎无法找到正确的术语来命名这个问题区域.有几个看起来相似但不同:

cron /任务/作业调度程序

  • 队列的内容不是动态的,而是预定义的.
  • 每项任务都已安排.

消息队列

  • 队列的内容是动态的.
  • 每项任务都是为了立即交付.

???

  • 队列的内容是动态的.
  • 每项任务都已安排.

如果有消息队列允许有条件地传递消息,那可能就是这样.

摘要:

  1. 这些技术被称为什么?
  2. 有哪些解决方案?

Ron*_*erg 0

在我看来,基于队列的解决方案在这种情况下是最好的,原因有很多:

  • 管理。大多数排队解决方案都支持检查队列的内容,这使得调试更容易,在超过特定阈值时更容易采取行动,...
  • 表现。您可以通过多个入队/出队进程来划分工作负载(使您能够横向扩展)。
  • 优先考虑。大多数队列支持消息优先级(可能并非所有消息都同样重要)。
  • ...

剩下的问题是队列中消息的立即传递。有两种方法可以解决此问题:延迟消息入队或延迟执行出队消息。我会采用第一种方法,延迟排队。

消息有两个属性:(内容、延迟)。您将消息提供给系统中的组件,该组件会在适当的时间对消息进行排队。

我不确定您使用的是什么编程语言,但 MS .NET 4 框架支持这种情况(任务的延迟执行)。