我在分发模式下使用Infinispan 7.2.5集群来缓存大量数据,我无法在一台机器中缓存 . 平均缓存条目 size is around 1Mb .
我有一个REST应用程序,它从Infinispan集群获取一个缓存条目并过滤它并发送 small parts of the cache entry (几Kbs)作为响应 . 由于从Infinispan集群中检索1Mb数据会影响REST应用程序性能,因此我正在寻找一种方法来过滤掉相应Infinispan节点内的缓存条目,以减少网络延迟 .
如果我可以获取缓存条目所在节点的IP地址,我可以在每个Infinispan服务器上安装另一个REST应用程序来处理缓存条目并返回所需的响应 .
我尝试过使用HotRod Java客户端,但找不到获取IP地址的方法 .
先感谢您! :)
1 回答
在群集中查找密钥并不复杂,您可以使用
之后发生了肮脏的事情;你必须把它强制转换为
JGroupsAddress
并调用getJGroupsAddress()
. 但是,由于JGroups非常通用,因此需要分配IP;如果您IpAddress
是IpAddress
的实例,您可以在其上调用getIpAddress()
.更好的方法是使用distributed executors和过滤器作为任务,让Infinispan为你做路由 - 另见
DistributedExecutorService.submit(Callable<T> task, K... input);
: