【发布时间】:2021-04-18 11:20:48
【问题描述】:
有一个服务(spring-boot中的微服务):
- 该服务有一个计划任务 (task1),它在数据库 (mongodb) 中搜索状态 = READY 的任务并处理这些任务
- state = READY 任务根据单独的计划任务 (task2) 中的计划分配
我们需要什么:
- 为水平扩展重新设计服务(有最佳实践吗?)
【问题讨论】:
标签: spring-boot architecture microservices
有一个服务(spring-boot中的微服务):
我们需要什么:
【问题讨论】:
标签: spring-boot architecture microservices
您应该使用一个消息队列来保存状态 = 就绪的任务。将任务添加/更新到 DB 中的服务,将事件推送到消息队列(您可以使用 RabbitMQ、SQS、Azure 服务总线 - 这取决于您的云提供商/偏好)
您甚至可以创建一个专门的服务,定期搜索 state = READY 的任务并将它们添加到队列中。
然后,您可以拥有一个专用的微服务来侦听该队列并处理传入事件。这个是水平扩展的,每个副本都会从队列中选择一个不同的事件,因此增加了吞吐量。
【讨论】: