apache 以亲和力点燃 cumpute 服务

apache ignite cumpute service with affinity

我想 运行 service/compute 使用服务启动 jub,但 运行 数据所在的作业。

我将从客户端调用计算或服务代理,但需要服务 运行 靠近缓存数据。

我注意到您可以使用来自计算作业的服务:

compute.run(new IgniteRunnable() {
  @ServiceResource(serviceName = "myCounterService");
  private MyCounterService counterSvc;

如果我在集群中的每个节点上部署该服务,我可以使用具有近缓存的计算来执行此操作吗?

 compute.affinityRun(CACHE_NAME, key, () -> { 
      // call my servie here...

也许有一种方法可以直接调用具有亲和力的服务代理来避免使用 comupte?

p.s。原因是服务会产生更多的缓存数据,我想避免在节点和客户端之间来回传输大数据。

您可以使用Affinity key based deployment

遗憾的是,无法根据被调用方法的参数告诉 Ignite 使用哪个服务实例。

当您需要在其中存储一些状态时,服务很好。否则计算作业同样有效。此外,计算作业在内部用于调用服务的方法。

因此,如果您没有任何状态,则只需使用计算作业即可。否则,您可以尝试将所需资源注入计算作业:https://apacheignite.readme.io/docs/resource-injection