【发布时间】:2012-11-07 14:55:45
【问题描述】:
我正在评估在我们的产品中使用 NServiceBus 作为 SOA 机制。我正在研究使用发布/订阅模式,我的理解是订阅服务将存储所有订阅。
这是否意味着如果我的 RavenDB 服务器出现故障,那么我的发布者将失去发送给订阅者的能力?或者发布者有没有办法缓存它拥有的订阅者,如果 RavenDB 出现故障,它会交付给它的已知订阅者?
【问题讨论】:
标签: ravendb nservicebus
我正在评估在我们的产品中使用 NServiceBus 作为 SOA 机制。我正在研究使用发布/订阅模式,我的理解是订阅服务将存储所有订阅。
这是否意味着如果我的 RavenDB 服务器出现故障,那么我的发布者将失去发送给订阅者的能力?或者发布者有没有办法缓存它拥有的订阅者,如果 RavenDB 出现故障,它会交付给它的已知订阅者?
【问题讨论】:
标签: ravendb nservicebus
您可以将 RavenDB 服务器作为复制节点运行,以避免出现单点故障。
【讨论】:
一般模式是端点有一个主节点充当工作器和分发器,然后主节点使用同一台服务器上的 Raven 安装来存储其订阅和 saga 存储。
因此,对于一个端点来说,这是一个故障点,但分布式系统中的其他端点将使用在他们自己的服务器上安装的 Raven。因此,系统保持分布式,整个系统没有单点故障。 RavenDB 支持这一点,因为它可以很容易地安装在任何服务器上。
与 SQL Server 相比,SQL Server 经常集中化、扩展至最大,甚至集群化以提供高可用性。 (阅读:昂贵!)
【讨论】:
您还可以在 Windows 故障转移集群中运行 RavenDB,其中节点使用共享 SAN 存储 RavenDB 数据文件。如果活动节点死亡,另一个接管。由于数据存储在 SAN 上,除了在新节点上启动 RavenDB windows 服务所需的时间之外,您甚至不应该注意到它。查看http://ravendb.net/docs/server/administration/fmc_configuration
这也是与 Distributors 一起运行时推荐的高可用性设置。 http://docs.particular.net/nservicebus/scalability-and-ha/distributor/
【讨论】: