在我的Apache Ignite 2.3集群中,我想运行一个节点(将来可能有两个节点用于备份),我的复制缓存在磁盘上是持久的。我需要确保此节点始终处于启动状态,而其他缓存节点不具有持久配置,因此只能在内存中访问缓存。这些非持久性节点可以按需进出,因为它们用于计算,但不能用于存储数据。
当连接非持久性节点时,持久性节点出现故障会发生什么?理想情况下,缓存应该消除整个群集,但它不会。所有节点继续在内存中使用缓存。但这意味着新数据将永远不会在磁盘上,并在群集重启后消失。 我的配置混合持久性/非持久性节点不常见吗?我如何保持这种类型的集群一致?
感谢任何背景帮助。
答案 0 :(得分:2)
您可以将缓存配置为仅存储在单个节点上。因此,当它关闭时,缓存停止运行。可以使用node attributes和node filter来完成。
但是在此配置中,每个请求都将被发送到单个节点,从而减慢了其他节点的工作量。如果您想避免使用,请考虑使用near cache。
答案 1 :(得分:1)
您可以为缓存配置设置节点过滤器并排除计算节点:
因此缓存将仅存储在您定义的特定节点集上。
要明确点燃实例,可以在点燃配置中使用用户属性: https://apacheignite.readme.io/docs/cluster#section-cluster-node-attributes
答案 2 :(得分:0)
这是不可能的;在缓存级别启用了持久性,因此部署此缓存的所有节点都会将数据保留到磁盘。
此外,我认为你不会从这种部署中受益。如果它是复制的缓存并且您启动了一个新节点,则需要先将数据复制到此新节点,然后才能在内存中使用。在重新平衡尚未完成之前,您将对此数据进行远程调用。从磁盘加载它不会慢,可能会快得多。