说到Ignite,算了,不想说了,都是泪。
有些问题当时遇到解决之后没时间记录,现在只能想起个大概。。。但还是记录一下吧。全是自己在开发中遇到的。
1.首先是最主要,maven中引用的Ignite版本,与服务器上Ignite版本不一致产生的问题,这个问题很好解决,只需要查看服务器上版本,并将maven依赖中的版本号修改一下即可。(此处无报错截图,大概就是error信息里会写:localVersion:xxx,remoteVersion:xxx)如果版本不一致,那调试基本就是个梦。
2.(在使用到Ignite SQL时可能会用到)使用Ignite写入对象类型(平时可能value就是简单字符串或者数字,对象类型就是value是一个对象。。。。)的数据时,必须确保程序和Ignite服务在一个网络环境下!!(之前单测里一顿写入就是不好使,也不报错,后来程序打包放到服务器上才能写入成功。)
3.Ignite的XML配置文件中,在解析的时候会去spring-beans里找对应xsd文件(当时好像是因为我本地打包中的spring版本过低,还是包冲突了,总之没有找到xsd),找对应的xsd文件,本地找不到会去网络上下载,可实际的环境上是无法连接外网的,导致XML解析失败连接不上Ignite,程序崩掉。于是先保证本地有xsd,然后将配置里的路径换成xsd的全路径即可。
默认的XML配置:
修改后的XML配置:
4.吐了,想起这个问题就想吐。Ignite客户端连接不上,但有时候又可以连接成功,后来发现是自己VPN开着(因为公司的开发环境本身需要使用VPN,我自己又开了一个别的VPN)。关了就愉快的各种连接上了。真的吐了。
5.使用Zookeeper的方式去连接Ignite集群时,一定要保证程序里的配置类型和服务器上的一致。例如下方的配置文件中这样配置:
那么代码里的类型必须跟配置里的完全保持一致:
否则,使用Zookeeper连接Ignite就是在做梦。(别问我为啥知道,枯了。)
6.上面好不容易解决了Zookeeper连接的问题,以为能开心的提交代码了,一运行:
网上大概查了一下,发现Ignite集群环境上的guava版本较低16.0,而代码里引用的guava版本较高26.0,上面错误里的方法在18.0版本以后就变成下面这个了,所以连接服务器时16.0版本中找不到上述方法:
所以将代码里引用的guava版本调成跟服务器上一致就可以了(还有些是因为jar包冲突,不同模块可能引用了不同的guava版本的jar包,这时候只保留一个版本的就可以了,其他的exclusion掉)。