Ignite 更新独立集群中的Clusternodes

Ignite 更新独立集群中的Clusternodes,ignite,Ignite,我们希望在应用程序中集成ApacheIgnite。我们的应用程序部署在客户网络上的多个服务器上,并且能够自我更新 问题是,当应用程序更新时,我们的服务器同时运行不同的版本。因此,更新后的服务器重新加入集群,并基于旧类获取数据副本。当所有服务器都被更新时,数据会被传递出去,我们最终会得到一组更新的服务器和旧数据 我的目标是用更新的服务器形成一个新的空集群。我已经了解到有多种方法可以做到这一点,比如更改多播组或本地端口。但我需要一个解决方案,该解决方案适用于多播和直接IP连接,并且不改变端口。由于防

我们希望在应用程序中集成ApacheIgnite。我们的应用程序部署在客户网络上的多个服务器上,并且能够自我更新

问题是,当应用程序更新时,我们的服务器同时运行不同的版本。因此,更新后的服务器重新加入集群,并基于旧类获取数据副本。当所有服务器都被更新时,数据会被传递出去,我们最终会得到一组更新的服务器和旧数据

我的目标是用更新的服务器形成一个新的空集群。我已经了解到有多种方法可以做到这一点,比如更改多播组或本地端口。但我需要一个解决方案,该解决方案适用于多播和直接IP连接,并且不改变端口。由于防火墙限制,更改端口可能是一个问题


我想知道是否有可能过滤ipFinder提供的节点,并检查它们是否是相同的版本。

我认为您有几个选项:

  • 您可以在更新之前停用群集,并仅在更新最后一个应用程序实例时激活此群集()
  • 销毁缓存,并在更新最后一个应用程序实例时再次创建缓存
  • 您可以设置节点属性(例如设置应用程序版本)和缓存过滤器,因此新版本将使用新缓存,该缓存仅在属性为“版本4”的节点上存储数据,而上一版本仅在属性为“版本3”的节点上存储数据,因此当更新所有实例时,将不会有属性为“版本3”的节点并且只有新版本的缓存将继续存在,并将数据存储在节点“版本4”上。 ( ) 但是,在这种情况下,您需要为每个新的应用程序版本使用新的缓存名称

  • 我认为你有几个选择:

  • 您可以在更新之前停用群集,并仅在更新最后一个应用程序实例时激活此群集()
  • 销毁缓存,并在更新最后一个应用程序实例时再次创建缓存
  • 您可以设置节点属性(例如设置应用程序版本)和缓存过滤器,因此新版本将使用新缓存,该缓存仅在属性为“版本4”的节点上存储数据,而上一版本仅在属性为“版本3”的节点上存储数据,因此当更新所有实例时,将不会有属性为“版本3”的节点并且只有新版本的缓存将继续存在,并将数据存储在节点“版本4”上。 ( ) 但是,在这种情况下,您需要为每个新的应用程序版本使用新的缓存名称

  • 谢谢你的建议。1.)我正在嵌入ignite,所以我认为bat/sh脚本不起作用。此外,我在代码中找不到“停用”。2.)定期检查集群是否有混合版本,如果是这种情况,在解决问题时销毁所有缓存似乎是可能的。但我担心这种方法会在服务和对等类加载方面遇到问题。好主意。我认为它也适用于其他想法,如服务或消息传递,但如果您忘记将版本附加到名称,则会出现问题。我希望有一个更透明的解决方案,不需要版本名称。谢谢您的想法。1.)我正在嵌入ignite,所以我认为bat/sh脚本不起作用。此外,我在代码中找不到“停用”。2.)定期检查集群是否有混合版本,如果是这种情况,在解决问题时销毁所有缓存似乎是可能的。但我担心这种方法会在服务和对等类加载方面遇到问题。好主意。我认为它也适用于服务或消息传递等其他想法,但如果您忘记将版本附加到名称,则会出现问题。我希望有一个更透明的解决方案,不需要版本化名称。