我在多实例 Web 应用程序中需要的一个非常常见的模式是使所有实例上的 MemoryCache 失效 - 并等待确认此操作已完成。 (因为用户可能会在刷新后突然看到另一个实例上的旧数据)
我们可以通过以下组合来实现:
- AzureServicebus,
- 向主题发送消息
- 其他实例将带有 ReplyTo 的消息发送回原始实例
- 有一个等待循环来等待消息返回,
- 首先了解还有多少其他实例。
- 可能会超时,因为如果实例在中间崩溃会发生什么?
我认为解决所有这些小边缘情况可能需要大量工作 - 所以在我们重新发明轮子之前 - 是否已经有一个通用的模式或库?
(当然,一种解决方案是使用像 Redis 这样的共享缓存,但在某些情况下,内存缓存要快得多)
最佳答案
查看 Azure Durable Functions,例如Fan-In/Fan-Out scenario 。它们在底层使用 Azure 存储队列,但提供更高级别的抽象。
请注意,Durable Functions 仍处于早期预览阶段(截至 2017 年 8 月),因此尚不适合生产使用。
关于Azure - 向所有其他角色发送消息并等待响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45837447/