ServiceStack.Redis v3和多个主机 - 推荐的架构

时间:2017-02-08 04:18:01

标签: redis servicestack.redis servicestack-bsd

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

我们的基础设施包括:

  • 主/从配置中的两台Redis服务器
  • 两个负载均衡的API实例(以下简称' API A'
  • 两个负载均衡的API实例(以下简称' API B'

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

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

当处置RedisMqServer时,它会在STOP频道上发送mq:topic:in消息,这会导致服务器取消订阅所有频道,从而停止服务请求。

但是,由于API A和API B都在使用此通道,因此停止其中任何一个都会停止另一个。

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

值得注意的是,每个API仅在任何时间点连接到单个Redis服务器。仅当主服务器不可用时,才连接从服务器。

1 个答案:

答案 0 :(得分:1)

这是Red3在v3中的行为,但v4中的最新RedisMqServer按预期工作,只会停止已处置的RedisMqServer实例。