【问题标题】:Ignite cluster with mixed persistent/non-persistent cache nodes使用混合持久/非持久缓存节点点燃集群
【发布时间】:2017-12-02 22:58:11
【问题描述】:

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

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

感谢任何背景帮助。

【问题讨论】:

    标签: java ignite


    【解决方案1】:

    您可以将缓存配置为仅存储在单个节点上。因此,当它发生故障时,缓存将停止运行。可以使用node attributesnode filter 来完成。

    但在此配置中,每个请求都将发送到单个节点,从而使其他节点的工作变慢。如果您想避免这种情况,请考虑使用near cache

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-17
        • 1970-01-01
        • 2020-10-23
        • 2018-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多