我们目前正在将 Apache Ignite 集成到我们的应用程序中以在集群中共享会话。
此时,我们可以成功地在两个本地 tomcat 实例之间共享会话,但是有一个用例,目前还不能正常工作。
当使用完全相同的代码运行两个本地实例时,一切都很好。但是当 Ignite 逻辑集成到我们的生产集群中时,我们会遇到以下用例:
- 节点 1和节点 2,运行应用程序的版本 1
- 此时我们要部署应用程序的第 2 版
- Tomcat 在节点 1停止,部署版本 2,并在部署结束时再次启动节点 1的 Tomcat。
- 我们现在有Node 1和版本 2的代码和Node 2,仍然是版本 1
- Tomcat 在节点 2停止,部署版本 2,并在部署结束时再次启动节点 2的 Tomcat。
- 我们现在有Node 1和版本 2的代码和Node 2和版本 2
- 部署完成
当在同一网格中使用两个 tomcat 实例在本地重现此用例时,Ignite Web 会话集群会失败。我测试的是删除驻留在用户会话中的类(配置文件)的一个“字符串属性”。使用此更改的类启动节点 1时,出现以下异常:
Caused by: java.lang.ClassNotFoundException:
Optimized stream class checksum mismatch
(is same version of marshalled class present on all nodes?) [expected=4981, actual=-27920, cls=class nl.package.profile.Profile]
这将是我们部署的常见/常规用例。我的问题是:如何处理这个用例?Ignite 中是否有解决/解决此类问题的方法?