【问题标题】:Horizontal scaling for scheduled task计划任务的水平扩展
【发布时间】:2021-04-18 11:20:48
【问题描述】:

有一个服务(spring-boot中的微服务):

  • 该服务有一个计划任务 (task1),它在数据库 (mongodb) 中搜索状态 = READY 的任务并处理这些任务
  • state = READY 任务根据单独的计划任务 (task2) 中的计划分配

我们需要什么:

  • 为水平扩展重新设计服务(有最佳实践吗?)

【问题讨论】:

    标签: spring-boot architecture microservices


    【解决方案1】:

    您应该使用一个消息队列来保存状态 = 就绪的任务。将任务添加/更新到 DB 中的服务,将事件推送到消息队列(您可以使用 RabbitMQ、SQS、Azure 服务总线 - 这取决于您的云提供商/偏好)

    您甚至可以创建一个专门的服务,定期搜索 state = READY 的任务并将它们添加到队列中。

    然后,您可以拥有一个专用的微服务来侦听该队列并处理传入事件。这个是水平扩展的,每个副本都会从队列中选择一个不同的事件,因此增加了吞吐量。

    【讨论】:

      猜你喜欢
      • 2014-11-10
      • 2013-10-17
      • 1970-01-01
      • 2017-06-24
      • 2011-08-05
      • 1970-01-01
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多