ServiceStack.Redis v3和多主机-推荐的体系结构



我们遇到一个问题,RedisMqServer的多个实例相互绊倒-停止一个服务器会停止其他服务器。很明显,我们实现这一点的方式是错误的,但我无法确定在这种情况下应该如何使用RedisMqServer

我们的基础设施包括:

  • 主/从配置中的两个Redis服务器
  • 两个负载平衡的API实例(以下称为"API A")
  • 两个负载平衡的API实例(以下称为"API B")

API A和B是两个独立的应用程序,它们使用ServiceStack.Redis的RedisMqServer相互发送同步和异步消息。我们使用的是ServiceStack的开源v3版本。

两个API都配置了RedisMqServer,因为异步通信在两个方向上都发生。

RedisMqServer被释放时,它在mq:topic:in信道上发送STOP消息,这导致服务器取消订阅所有信道,从而停止为请求提供服务。

然而,由于API A和API B都在使用此通道,因此停止其中一个通道最终会停止另一个通道。

是否应该为RedisMqServer的每个实例使用一个Redis服务器实例?

值得注意的是,每个API在任何时间点都只连接到一个Redis服务器。只有当主服务器不可用时,从属服务器才会连接到。

这是v3中Redis MQ的行为,但v4中最新的RedisMqServer按预期工作,仅停止已释放的RedisMqServer实例。

最新更新