提问者:小点点

Apache Ignite Cache ClassNotFoundException


我有一个阿帕奇点火集群。

所有节点都拆分为两个逻辑组:平台级节点(PLN)和应用级节点(ALN)。集群中的每个节点都有:

  • xml配置文件(ALN包含PLN配置和应用程序特定的缓存配置)
  • 检测ALN的过滤器类

ALN包含POJO类来使用Ignite缓存,PLN不包含此类并且不适合nodeFilter。

但是PLN在启动时(使用ALN加入集群)尝试应用ALN缓存配置并捕获与应用程序POJO类相关的ClassNotFoundException。

如果不适合nodeFilter,是否可以点燃服务器节点忽略缓存配置?


共2个答案

匿名用户

所有Ignite节点都需要在集群中拥有所有缓存配置。

nodeFilter仅约束保存数据以进行缓存的节点集。集群中的所有节点都可以查询任何缓存,因此它们需要此信息。

如果需要,你可以有两个集群,甚至在单个JVM(每个节点)内。这样它们就不会以任何方式交互。

匿名用户

如果在应该在服务器端执行的用户代码中使用二进制对象概念[1],在大多数情况下,Ignite不需要在服务器端的类路径中包含Key/Value类。

但是,Ignite配置中提到的用户类必须在所有节点的类路径中。如果您需要SQL索引并使用二进制对象,那么您可以在网格启动时通过SQL查询动态创建索引。

请看看BinaryObject概念[1]。希望它有所帮助。

[1] https://apacheignite.readme.io/docs/binary-marshaller#section-basic-concepts