跨多个数据中心的异地复制
NCache 通过桥接功能为您提供异地复制作为灾难恢复计划。在多个集群缓存之间创建一个桥,并通过该桥将数据从源复制到另一个站点,而不会中断客户端的操作。
有关桥梁的更多概念和行为细节,您可以参考 桥梁架构 在管理员指南中。
在桥中,可以有多个活动站点缓存,并且缓存操作可以同时进行。 有可能与一个活动站点缓存连接的客户端添加了一些密钥,并且另一活动节点执行相同的密钥操作。 在这种情况下,桥梁冲突解决程序就发挥了作用。 它解决冲突并根据定义的规则决定在缓存上应用哪个密钥。
如果用户没有配置任何冲突解决器规则,那么 NCache 使用默认的解析器规则。 在默认规则中,对缓存执行的每个操作都会添加一个时间跨度,并保留最新的操作。 对桥接项目的版本进行检查。 如果它有一个较新的时间戳,或者版本是最新的或相同的,它会用新条目替换它,如果是旧的,它会保留旧条目。
数据中心异地复制的先决条件
在使用异地复制之前 NCache 确保满足以下要求:
- 了解与所有人员合作所需的标准先决条件 NCache 服务器端功能请参考给定页面 服务器端 API 先决条件.
- 有关 API 详细信息,请参阅: 缓存, 缓存项, IBridge冲突解决器, 桥项版本.
- 这应该是一个使用 Microsoft Visual Studio 的类库项目。
- 确保 配置网桥 使用 NCache 管理中心实施本班后。
IBridgeConflictResolver 接口的示例实现
以下冲突解决程序的示例实现包含解决在从桥复制对缓存中已存在的密钥的操作时可能发生的任何冲突的逻辑。 每当发生冲突时,缓存都会调用 BridgeConflictResolution
根据其中定义的规则来决定对缓存应用哪个操作。 它需要两个参数/条目,两者都是 ProviderBridgeItem
类型。 ProviderBridgeItem
包含以下参数:
public class Resolver : IBridgeConflictResolver
{
public void Init(System.Collections.IDictionary parameters)
{
// Initialize parameters
}
public ConflictResolution Resolve(ProviderBridgeItem oldEntry, ProviderBridgeItem newEntry)
{
var conflictResolution = new ConflictResolution();
switch (oldEntry.BridgeItemVersion)
{
case BridgeItemVersion.OLD:
{
conflictResolution.ResolutionAction = ResolutionAction.ReplaceWithNewEntry;
}
break;
case BridgeItemVersion.LATEST:
{
conflictResolution.ResolutionAction = ResolutionAction.KeepOldEntry;
}
break;
case BridgeItemVersion.SAME:
{
if (oldEntry.OpCode == BridgeItemOpCodes.Remove)
{
conflictResolution.ResolutionAction = ResolutionAction.ReplaceWithNewEntry;
}
else
{
conflictResolution.ResolutionAction = ResolutionAction.KeepOldEntry;
}
}
break;
}
return conflictResolution;
// Configure this implementation on cache
}
public void Dispose()
{
// Dispose resources
}
}