如何在相干节点中查看数据

时间:2012-10-12 11:47:32

标签: oracle-coherence

让我们说我正在使用分布式缓存模式来缓存称为“国家/地区”。我有三个节点。我在缓存中放了一些数据。我想知道此缓存的每个节点上存在的数据。如果有工具或我们如何知道它,请告诉我programaticaaly

1 个答案:

答案 0 :(得分:2)

您可能会问几件事:

  • 如果您想知道数据是否具有冗余副本以用于可用性,您可以在JMX中轻松找到它。 “ServiceMBean”mbean具有“StatusHA”属性,其描述为:
  

此服务的高可用性(HA)状态。的价值   MACHINE-SAFE意味着所有集群成员都在任何给定的上运行   计算机可以停止而不会丢失数据。 NODE-SAFE的价值   意味着可以停止任何集群成员而不会丢失数据。该   ENDANGERED的值表示任何群集的异常终止   运行此服务的成员可能会导致数据丢失。

  • 如果您想知道密钥属于哪个分区,您可以获取缓存的服务(CacheService service = cache.getCacheService())并从中获取KeyPartitioningStrategy(KeyPartitioningStrategy strategy =((PartitionedService)服务) .getKeyPartitioningStrategy()),然后询问密钥所在的策略(int partition = strategy.getKeyPartition(key))。

  • 如果你使用密钥亲和力来控制缓存数据位置,那显然比那更复杂;-) ..有关更多信息,请参阅JavaDoc for KeyPartitioningStrategy.getKeyPartition。

  • 要确定分区所属的集群成员,您只需调用PartitionedService.getKeyOwner(Object oKey)

  • 与上述所有内容相同的服务器端是BackingMapManagerContext.getKeyPartition(),并且还有一个方便的方法BackingMapManagerContext.isKeyOwned()。

现在,Coherence中非常酷的一点是,您通常不会担心数据所在的 ,因为所有操作都保证是一次性操作,并且只有在操作达到HA要求后才能看到结果。

为了充分披露,我在Oracle工作。本文中表达的观点和观点是我自己的,不一定反映我的雇主的意见或观点。