具有NServiceBus或MassTransit的服务总线的故障切换场景
我需要像微软一样构建Identity server 要处理故障转移,我将有多个web服务器节点。计划是通过向数据库服务器发送消息来完成所有数据库写入操作。数据库将被镜像或复制。其思想是,数据库订阅写操作,但其他节点也订阅。这样其他节点就不需要从数据库中读取数据,并且可以更新它们的缓存 我刚刚开始学习服务总线体系结构,我不清楚的是如何处理服务总线的故障切换场景 问题:具有NServiceBus或MassTransit的服务总线的故障切换场景,nservicebus,failover,masstransit,Nservicebus,Failover,Masstransit,我需要像微软一样构建Identity server 要处理故障转移,我将有多个web服务器节点。计划是通过向数据库服务器发送消息来完成所有数据库写入操作。数据库将被镜像或复制。其思想是,数据库订阅写操作,但其他节点也订阅。这样其他节点就不需要从数据库中读取数据,并且可以更新它们的缓存 我刚刚开始学习服务总线体系结构,我不清楚的是如何处理服务总线的故障切换场景 问题: 如果数据库服务器不可用,发布的消息会发生什么情况 它们会储存在什么地方 我是否需要额外的机器或群集来处理服务总线的故障切换 我听说
如果您想在其中一个回复中了解更多详细信息,或者对MT有其他问题,请加入我们的邮件列表: 在实现这种体系结构时,您应该考虑应用CQRS的原则-查询(此用户/pwd组合是否有效)不应通过总线完成;命令(更改pwd、忘记pwd)通过总线发送,而不是作为事件发布。虽然在内部您可能会使用事件来保持命令和查询端的同步,但这并不涉及客户端 可以使用简单的ado.net对数据库的复制读取从机进行查询,这就是CQRS中的持久视图模型。如果你愿意,你也可以在前面放一些简单的WCF 使用MSMQ时,所有消息都通过存储转发传递。这意味着在将消息传递到服务器之前,它们首先存储在客户机上,因此,如果服务器停机,消息将在客户机上等待。对于容错,您希望您的消息可以恢复(写入磁盘)-这是NServiceBus中的默认值,但不是标准MSMQ的默认值(不知道MassTransit)。这不需要数据库 在NServiceBus中,总线没有安装在单独的机器上,因此您不需要独立于系统的其余部分来处理其可用性。只有当您将我们的命令处理扩展到更多节点时,您可能会考虑使用基于消息的负载均衡器(NoSeriBUS)(称为分发服务器),为了高可用性,应该安装在集群或容错硬件上。