我在分布式模式下使用Infinispan,拥有者数量为2,群集为8个JBoss服务器。 例如:我有密钥“1”,我把它放在Infinispan缓存中。我想获取持有该密钥的那些服务器的详细信息(IP地址)。
答案 0 :(得分:1)
如果您在远程客户端 - 服务器模式下使用Infinispan并通过Memcached或REST协议访问它,则不能 - 这些协议与关键位置无关。
使用HotRod协议,客户端知道此位置,但未公开曝光。出于调试目的,您可以通过反射从RemoteCacheManager获取TransportFactory,然后从TransportFactory获取ConsistentHash实例并运行.getServer(byte [])方法。 当然,这种反思当然不建议用于生产。你为什么需要钥匙的位置?
答案 1 :(得分:0)
TcpTransportFactory类在跟踪级别上有一个日志,表示该密钥使用的服务器。
因此,例如,如果您将Log4j XML配置更改为:
<Logger name="org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory" level="TRACE"/>
你会得到:
19:32:32,253 TRACE [HotRod-client-async-pool-34] [TcpTransportFactory]使用一致哈希来确定服务器:/10.123.456.1:11222