我在Apache Ignite群集中的群集组中部署了某项服务。 群集组大小为3。 服务实例总数= 3。 每个节点的实例= 1。
不管我什么时候想要执行服务,我只能获得一个节点上的服务实例的句柄。
但我想在所有节点上执行服务。 即。在所有三个节点上。
这样做的正确方法是什么?
答案 0 :(得分:2)
根据the documentation,您可以使用节点单例来实现服务的分发级别:
Node Singleton
您可以部署每个节点的单一服务。 Ignite将保证每个节点上始终存在一个服务实例。每当在群集组中启动新节点时,Ignite将在每个新节点上自动部署一个服务实例。
评论涉及以下代码段:
IgniteServices svcs = ignite.services();
//The .services() method has an overload, to which you can pass a cluster group
svcs.deployNodeSingleton("myNodeSingleton", new MyService());
其替代方案:
svcs.deployMultiple("myNodeSingleton", new MyService(), 0, 1);
我认为通过“服务实例”,您的意思是“运行相同服务实现的实例”。
答案 1 :(得分:2)
听起来你正在寻找远程服务调用。如果是这种情况,您可以使用服务代理:https://apacheignite.readme.io/docs/service-example#service-proxy