【发布时间】:2015-08-06 15:17:57
【问题描述】:
我试图了解 NServiceBus 如何在各种场景中横向扩展,但我未能找到足够的信息。
通常,在发布/订阅场景中横向扩展 NServiceBus(和底层传输)似乎与在发送/接收场景中不同。此外,消息发送系统是横向扩展还是“吸收”系统横向扩展似乎会有所不同。
考虑一个设置,MSMQ 作为传输层,NServiceBus 在顶部,并假设我们将使用队列MyQueue 作为从发射系统到吸收系统的通信通道(通过发送/接收或发布/订阅)。在以下场景中,横向扩展设置的外观如何?我已经尝试在下面提出一些答案,但不确定。
-
发射系统未缩放;吸收系统未缩放: 这是一个简单的设置,两端有一个端点,接收端有一个队列。
两个系统的订阅存储:MSMQ
-
发射系统未缩放;吸收系统扩展:吸收系统中的单个节点(端点)被“提升”为Distributor,并且许多工作节点从该单个分发器节点获取消息。
吸收系统订阅还是接收有区别吗?
分销商也可以横向扩展吗?
documentation 建议使用单独的队列名称,但如果发送/发布系统应该关心接收系统是否横向扩展,这不是很麻烦吗?我认为,从发送方的角度来看,接收方的横向扩展应该是透明的。
两个系统的订阅存储:MSMQ?订阅存储在哪里?在经销商那里?
-
发射系统按比例缩放;吸收系统未缩放: 发射系统的多个节点可以发送到未缩放的吸收系统,就像上面的未缩放/未缩放场景一样。但是发射系统的多个节点不能(或不应该)发布到同一个吸收系统?要不然是啥?如何处理来自多个节点的发布?
两个系统的订阅存储:MSMQ?
-
发射系统按比例缩放;吸收系统扩展:这只是发送/接收和发布/订阅模式的上述两种情况的组合吗?
两个系统的订阅存储:MSMQ?
简而言之,对于上述四种情况下推荐的 NServiceBus 设置的概述可能会很好。
【问题讨论】:
-
您是否仅限于 MSMQ? NServiceBus 也支持其他传输方式吗?
-
不,我们不限于 MSMQ,但我喜欢 MSMQ 的分布式(即无代理)性质。此外,由于 MSMQ 带有 windows,它符合我们客户优先考虑标准 Microsoft 组件的愿望。不过,你会推荐其他东西吗?
-
如果您想要基于标准 Microsoft 软件的另一个选项,可以使用 SQL Server 传输。这通过使用竞争消费者模式进行扩展,完全避免了对明确分发者的需求。
-
@UdiDahan - 我认为 NServiceBus 中的传输支持很差。令人惊讶的是,您不支持开箱即用的 MQ。在企业环境中,这是一个主要问题。
-
@Sean 我不确定在这里发表评论是否是我们进行此讨论的最佳场所,因此我创建了一个 GitHub 问题以使其更加可见和易于访问:github.com/Particular/NServiceBus/issues/2815
标签: .net msmq nservicebus