Java 如何获取特定缓存项所在的infinispan节点的ip地址
我在分发模式下使用Infinispan 7.2.5 cluster来缓存大量数据,而我无法在一台机器中进行缓存。平均缓存项大小约为1Mb 我有一个REST应用程序,它从Infinispan集群获取一个缓存项,并对其进行过滤,然后将缓存项的一小部分作为响应发送出去。由于从Infinispan群集检索1Mb的数据会影响REST应用程序的性能,因此我正在寻找一种方法来过滤相应Infinispan节点本身内的缓存项,以减少网络延迟 如果我可以获得缓存项所在节点的IP地址,那么我可以在每个Infinispan服务器上使用另一个REST应用程序来处理缓存项并返回所需的响应 我已经尝试使用HotRod Java客户端,但找不到获取IP地址的方法Java 如何获取特定缓存项所在的infinispan节点的ip地址,java,infinispan,Java,Infinispan,我在分发模式下使用Infinispan 7.2.5 cluster来缓存大量数据,而我无法在一台机器中进行缓存。平均缓存项大小约为1Mb 我有一个REST应用程序,它从Infinispan集群获取一个缓存项,并对其进行过滤,然后将缓存项的一小部分作为响应发送出去。由于从Infinispan群集检索1Mb的数据会影响REST应用程序的性能,因此我正在寻找一种方法来过滤相应Infinispan节点本身内的缓存项,以减少网络延迟 如果我可以获得缓存项所在节点的IP地址,那么我可以在每个Infinisp
先谢谢你!:) 在集群中定位密钥并不复杂,您可以使用
Address address = cache.getAdvancedCache()
.getDistributionManager().getPrimaryLocation(key)
肮脏的事情随后发生;您必须将其转换为JGroupsAddress
并调用getJGroupsAddress()
。但是,由于JGroups非常通用,因此也需要分配IP;如果幸运的话,它是IpAddress
的一个实例,您可以对其调用getIpAddress()
更好的方法是将过滤器作为任务使用,并让Infinispan为您执行路由-另请参见DistributedExecutorService.submit(可调用任务,K…输入)代码>:
执行环境将选择一个任意节点N,该节点承载指定为input
的部分或全部键
在集群中定位密钥并不复杂,您可以使用
Address address = cache.getAdvancedCache()
.getDistributionManager().getPrimaryLocation(key)
肮脏的事情随后发生;您必须将其转换为JGroupsAddress
并调用getJGroupsAddress()
。但是,由于JGroups非常通用,因此也需要分配IP;如果幸运的话,它是IpAddress
的一个实例,您可以对其调用getIpAddress()
更好的方法是将过滤器作为任务使用,并让Infinispan为您执行路由-另请参见DistributedExecutorService.submit(可调用任务,K…输入)代码>:
执行环境将选择一个任意节点N,该节点承载指定为input
的部分或全部键
谢谢弗拉维乌斯。这就是我要找的。谢谢弗拉维乌斯。这就是我要找的。