【发布时间】:2020-10-08 17:18:28
【问题描述】:
需要一些架构指导。我有一组执行各种功能的 stateless 服务。我的架构允许每个服务的多个副本同时运行(因为它们是无状态的),因此我可以:
- 根据需要扩展以处理更大的工作负载
- 具有容错能力(如果服务的一个实例失败,没有问题,因为会有其他人来承担这项工作)。
但是,我不希望重复工作。
如果 Service A, Instance 1 已经接受了 Job ABC,我不希望 Service A, Instance 2 接受同样的工作。因此,我可以通过使用 Azure 服务总线队列来避免这个问题。只有单个工作人员会从队列中获取特定项目,并且只会重新分配给另一个工作人员,如果工作人员没有在设定的时间内将其标记为完成。
那么,什么是主题(Pub/Sub)的合适用例? 似乎如果我曾经拥有同一服务的多个副本,我必须依赖队列。对吗?
问另一种方式,有没有办法在 Azure 服务总线或类似产品/服务中使用主题,但避免重复工作?另外,如果有办法锁定消息(对于短时间)当使用主题时,是否可以将该消息锁定到服务 A 的一个实例(因此服务 A 的其他实例将无法访问它)但该消息将被广播到服务 B、服务、C等?
【问题讨论】:
标签: azure microservices azureservicebus azure-servicebus-queues azure-servicebus-topics