RavenDB故障转移方案。如何知道实际的服务器?
问题描述:
我正在为RavenDB(服务器和客户端3.0)设置一个复制和故障转移项目,现在我正在使用副本数据库进行测试。RavenDB故障转移方案。如何知道实际的服务器?
故障转移行为很简单:我有两个服务器,一个8080,一个在8081的配置基本上是这样的:
store.FailoverServers.ForDatabases = new Dictionary<string, ReplicationDestination[]>
{
{
"MyDB",
new[]
{
new ReplicationDestination
{
Url = "http://localhost:8080"
},
new ReplicationDestination
{
Url = "http://localhost:8081"
}
}
}
};
故障切换运作良好,我试图关闭(第一台服务器(即DocumentStore配置中使用的服务器)),第二台服务器按预期响应。
我想知道的是:有没有一种方法可以理解当前故障切换服务器对查询做出的响应?如果在会话中,我尝试导航DocumentSession属性(如session.Advanced.DocumentStore.Identifier),但找不到对第二个服务器的引用,但我只看到第一个引用,即用于配置的引用。
我错过了什么吗?
答
您可以使用ReplicationInformer.FailoverStatusChanged
获得故障转移通知。
可以使用访问复制举报人:DocumentStore.GetReplicationInformerForDatabase()
感谢您的答复Ayende,我想这一点,但我可以从ReplicationInformer看到我没有什么是实际服务器的简单信息(s)在使用中,我只得到失败的服务器failureCounts。那是对的吗?同样在ReplicationDestinations上,我只能看到辅助服务器(即使它处于关闭状态)。 – tanathos 2015-02-23 16:46:10
您将获得复制目标以了解辅助节点,并且主节点是存储上定义的任何节点。然后你可以使用'ShouldExecuteUsing'方法得到我们将要使用这个节点的任何东西。 – 2015-02-24 18:51:03