将一个复制服务器转换为观察服务器



我使用的是 2.7.6 Ignite.NET。我使用多个服务器,我想将其中一个服务器变成观察器,该服务器不处理任何查询,它只是与其他服务器同步数据。所有缓存都处于复制模式。

我认为可以通过 AffinityFunction 来完成,当其他人属于分区 0 时将此观察者分配给分区 1,并为 IAffinityFunction 的 GetPartition(对象键(中的所有请求键返回分区 0。

但这对我不起作用:尽管它属于分区 1,但查询还是在这个观察器服务器中完成的。

可以以某种方式在 Ignite 中做到这一点吗?

我不知道有什么方法可以为 Ignite 中的单个服务器禁用这样的查询。

相反,对于所描述的"定期备份"方案,我建议使用客户机节点:

  • 唤醒,启动点燃客户端节点 (IgniteConfiguration.ClientMode = true(
  • 循环访问缓存数据,并以您选择的格式将其写入磁盘:
var cache = ignite.GetCache<K, V>(cacheName);
using (var file = File.OpenWrite(...))
{
foreach (ICacheEntry<K, V> entry in cache)
{
file.Write(Serialize(entry));  
}
}

与服务器节点解决方案相比的优势:

  • 不会导致 Ignite 重新平衡和新加入的服务器节点在群集内产生的其他开销
  • 更紧凑的备份:工作文件夹包含 WAL、元数据和其他不需要备份的系统内容

最新更新