我是Ignite的新手,正在尝试测试Ignite群集的数据质量和可用性。
我使用下面的xml配置来设置集群,
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="socketTimeout" value="50000" />
<property name="networkTimeout" value="50000" />
<property name="reconnectCount" value="5" />
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value>x.x.x.1:47500..47509</value>
<value>x.x.x.2:47500..47509</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
同样,CacheConfiguration是
<bean id="cache-template-bean" class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="CACHE_TEMPLATE*"/>
<property name="cacheMode" value="PARTITIONED" />
<property name="backups" value="1" />
<!-- <property name="backups" value="2" />
<property name="backups" value="3" /> -->
<property name="atomicityMode" value="TRANSACTIONAL" />
<property name="writeSynchronizationMode" value="PRIMARY_SYNC" />
<property name="rebalanceBatchSize" value="#{4 * 1024 * 1024}" />
<property name="rebalanceMode" value="ASYNC" />
<property name="statisticsEnabled" value="true" />
<property name="rebalanceBatchesPrefetchCount" value="4" />
<property name="defaultLockTimeout" value="5000" />
<property name="readFromBackup" value="true" />
<property name="queryParallelism" value="6" />
<property name="nodeFilter">
<bean class="org.apache.ignite.util.AttributeNodeFilter">
<constructor-arg>
<map>
<entry key="ROLE" value="data.compute"/>
</map>
</constructor-arg>
</bean>
</property>
</bean>
我的情况是
我尝试备份1,2,3均导致相同的数据丢失。根据Ignite文档,似乎不会发生数据丢失。如果此问题解决,我可以尝试在节点关闭时添加数据并检查其行为。
有什么建议吗?
灰
答案 0 :(得分:0)
基线拓扑和持久性的主要思想是防止不必要的重新平衡,并且仅在指定的服务器节点中存储数据。当基准节点停止时,预计将很快恢复,并且不会触发重新平衡过程。您可以使用api或control.sh实用工具从基线中排除该节点。
IgniteCache.size()返回主条目的数量。因此,当基准节点停止时, size()会显示一个较小的数字,表示无法访问许多主要条目。
在您的情况下,数据不会由于两个原因而丢失:
1.数据保留在活动基准节点上的备份条目中。
2.节点启动后,位于已停止节点上的主条目和备份条目将返回到群集。