繁体   English   中英

具有混合持久/非持久缓存节点的Ignite群集

[英]Ignite cluster with mixed persistent/non-persistent cache nodes

在我的Apache Ignite 2.3集群中,我想运行一个节点(以后可能会在两个节点上进行备份),该节点的复制缓存将永久保存在磁盘上。 我需要确保该节点始终处于运行状态,而其他缓存节点没有持久性配置,因此只能访问内存中的缓存。 这些非持久节点可以按需频繁出现和出现,因为它们用于计算但不用于存储数据。

如果连接了非持久节点,那么当持久节点发生故障时会发生什么? 理想情况下,整个集群的缓存应该消失,但事实并非如此。 似乎所有节点都继续使用内存中的缓存。 但是,这意味着新数据将永远不会在磁盘上并且在群集重启后消失。 带有混合持久性/非持久性节点的配置是否不常见? 如何保持这种类型的群集一致性?

任何背景帮助表示赞赏。

您可以将缓存配置为仅存储在单个节点上。 因此,当它出现故障时,缓存将停止运行。 可以通过使用节点属性节点过滤器来完成。

但是在这种配置中,每个请求都将发送到单个节点,这会使其他节点的工作变慢。 如果要避免这种情况,请考虑使用Near缓存

您可以为缓存配置设置节点过滤器,并排除计算节点:

https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/configuration/CacheConfiguration.html#setNodeFilter(org.apache.ignite.lang.IgnitePredicate)

因此,缓存将仅存储在您定义的特定节点集上。

要区分不同的点火实例,可以在点火配置中使用用户属性: https : //apacheignite.readme.io/docs/cluster#section-cluster-node-attributes

这是不可能的; 在缓存级别启用了持久性,因此部署此缓存的所有节点都将数据持久化到磁盘。

而且,我认为您不会从这种部署中受益。 如果它是复制的缓存,并且您启动了一个新节点,则需要先将数据复制到此新节点,然后再将其在内存中可用。 在重新平衡尚未完成之前,您将对此数据进行远程调用。 从磁盘加载它不会变慢,可能会快得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM