我在 Azure 中有多个服务,我想使用某种发布/订阅服务来同步它们之间的更改。
我正在研究 Redis 和 Azure 服务总线。
要同步的数据非常简单 - 大部分是最多 100 个字符的字符串
我想知道我的首选是什么 - 或者我的方向是否正确..
我的要求很简单:
不要为此使用 Redis。 Redis PubSub 并不可靠(它是“即发即忘”)。如果 Redis 发布消息时没有人监听会发生什么?它会永远丢失,这意味着您的服务将不会同步... 也许您没有听说过
Azure Pack。它不是完整的 Azure 本地部署,但它包括 Service Bus。如果您从公共云或私有云使用它应该没有问题。 请注意,您也许能够使用 Redis 实现可靠的消息传递,但不能在默认的
pubsub之上。 Redis 和服务总线的可能替代方案应该是
RabbitMQ我们同时使用发布/订阅功能和通过流的可靠消息传递。因为我们使用的实时数据的生命周期有限,所以如果我们错过了通过发布/订阅的消息,那么这并不重要。我们使用带有 ack 的流来处理更关键的数据,例如处理警报等。
我们考虑了许多替代方案,包括服务总线(对于大容量而言价格昂贵且不易在本地实施)和 RabbitMQ。后者很棒,但除了 Redis(对我们而言)之外没有提供任何其他功能,而 Azure 将 Redis 作为托管服务提供,因此需要 2 分钟才能完成设置。