我的应用程序需要向具有高吞吐量要求的数千个客户端(每秒数百个,可能1000多个消息)发布消息,以使本地客户端数据库与服务器数据库保持同步。每个服务器数据库操作都可能需要将消息发布到20个或更少客户端的位置。客户端仅具有其特定位置的数据库信息。存在数千个地点。
我的想法是为此使用Azure Service Bus主题/订阅模型。每个客户端都会建立对数据库同步主题的订阅(和连接),并接收其位置的过滤消息。
但是,根据Azure Service Bus Quota page,我仅限于以下内容:
现在考虑到这些限制,我的解决方案似乎无法使用。使用Azure Service Bus解决此问题的最佳方法是什么?为了解决每个主题限制的订阅,我可以为每个位置创建一个主题。但是,杀手实际上是主题/命名空间上的并发连接数(我认为)。所有客户端都将被订阅并进行长轮询,以便从每个主题下载同步消息,这将是数千个。我是否需要为每个位置创建一个新的命名空间和主题?这似乎有问题,因为每次我想从服务器发布时都要打开一个新的连接,这是非常频繁的。
Azure Service Bus不是解决此问题的正确方法吗?
答案 0 :(得分:1)
不是专家,而是几点。
Azure服务总线支持长轮询: Azure Documentation 。 "作为解决方案架构师/开发人员,您应该考虑在以下情况下使用Service Bus队列: 您的解决方案必须能够接收消息而无需轮询队列。使用Service Bus,可以通过使用Service Bus支持的基于TCP的协议使用长轮询接收操作来实现。"
此外,您是对的:事件中心与您的问题相反。
最后, Azure通知中心实际上是与您的用例最接近的模拟(它专为移动推送到数千个端点而设计,这是一个非常类似的场景)。我不确定是否可以用于非移动应用程序,但我还没有找到原因。当我有时间研究和POC通知中心时,我正在考虑从主题转换。
答案 1 :(得分:0)
您是否考虑过使用事件中心? https://msdn.microsoft.com/en-us/library/dn789973.aspx