nservicebus分发服务器模型与msft sql server

nservicebus分发服务器模型与msft sql server,nservicebus,Nservicebus,我们目前正在以分销商/工人模式建立nServiceBus,我想知道这是否真的值得我们这么做 在我们最初的测试实验室中,我有两个集群分销商和一个工人(prod中有更多的工人)。我想知道的是,利用我们的高可用性SQL Server进行存储并重建服务器来处理所有工作,而不是让专门的分销商和工人来处理,是否同样有效。我们所有的消息都通过一个简单的.NETWebAPI服务到达总线上。我可以在每个盒子上安装该服务以及端点DLL,并让它们都与SQL server进行通信,SQL server具有足够的马力来处

我们目前正在以分销商/工人模式建立nServiceBus,我想知道这是否真的值得我们这么做

在我们最初的测试实验室中,我有两个集群分销商和一个工人(prod中有更多的工人)。我想知道的是,利用我们的高可用性SQL Server进行存储并重建服务器来处理所有工作,而不是让专门的分销商和工人来处理,是否同样有效。我们所有的消息都通过一个简单的.NETWebAPI服务到达总线上。我可以在每个盒子上安装该服务以及端点DLL,并让它们都与SQL server进行通信,SQL server具有足够的马力来处理负载。我们有一个可用的负载平衡器来将消息分发给处理程序

与分销商模式相比,采用这种方法会有哪些缺点

让我担心的是大卫·博伊克(David Boike)在《网络服务总线》(nServiceBus)一书中的一句话(顺便说一句)我刚刚读到

“对于小型企业来说,使用SQL Server作为传输工具可能是一个不错的选择 已使用SQL Server的团队上的项目”

小项目部分是我担心的。这绝不是一个小项目,当我们重构更多的系统以实现消息驱动时,它将有大量的消息通过这一层

有没有人在同一条道路上将SQL server与分销商进行比较?您是从哪里出来的


谢谢

我在书中提到的你提到的那句话是,有时你有一个相当小的解决方案,都在一个SQL Server数据库中,你想在边缘引入一些消息。SQL Server传输使这一点变得很容易,而无需添加大量额外的开销和移动部件。如果您将所有内容都保存在一个数据库中,甚至可以放弃分布式事务协调器。它对于与旧式系统集成也非常有用,在旧式系统中,您可以通过数据库触发器监视更改

但是,请记住(如果有下一个版本,我一定会详细介绍一下),SQL Server传输使用代理模式,也就是说,所有通信都必须通过SQL Server,因此它会成为故障的中心点和中心瓶颈。另一方面,默认的MSMQ传输遵循总线体系结构样式,这意味着它是完全分散的。每个端点都可以完全独立运行,至少在引入其他依赖项之前是这样

对新的传输进行了基准测试,发现V4 MSMQ大约有6000个发送/s和2300个接收/ s,SQLServer与此相当,但MSMQ大约是每个服务器(每个服务器都有自己的吞吐量),SQL Server传输将是您的总可实现吞吐量,您添加的任何端点都必须共享它

当然,代理式传输(4.0中的其他新传输也是代理)确实比MSMQ有一些优势。最大的问题是,您不需要使用分销商来扩大规模。在代理中,“队列”是集中的,因此您可以简单地在代理中旋转指向同一输入队列的其他端点


当然,与所有事情一样,您的里程数可能会有所不同,但如果您正在规划一个雄心勃勃的系统,那么SQL Server传输可能不适合您,因为您可能会在某个时候陷入困境,因为您唯一的选择是扩展SQL Server实例。

谢谢David!好消息。