Springboot+dubbo连接zookeeper失败

一、错误信息

在用springboot搭好dubbo框架后(springboot+dubbo搭建简单分布式服务),启动项目发现报错说无法注册服务原因是zookeeper没有连接到,java.lang.IllegalStateException: Zookeeper is not connected yet!
错误信息如下:
Springboot+dubbo连接zookeeper失败

二、原因及解决方案

网上有很多童鞋也遇到过这个问题,有人的是因为配置zookeeper的虚拟机上的防火墙没关,有的人是把项目里的zookeeper版本降低后解决的问题,但是这些都不是根本原因! 根本原因是因为在zookeeper较新的版本中增加了zkClientWrapper,来做连接的控制,如果在设定的时限内没有连通,就会报上文中的错误。所以如果防火墙没关又没有配置安全规则的话,请求被墙当然连不上。同样如果设置的连接超时时间太短,同样会报错。
知道原因后问题就很好解决了,在zookeeper的配置机上的配置文件中修改参数就好了。
Springboot+dubbo连接zookeeper失败
Springboot+dubbo连接zookeeper失败

这里的这个tickTime参数就是client连接server的超时时间,默认是2000也就是两秒,也就是说如果两秒内没连上client就认为这台server挂了,而我在项目中又只配了一个server的地址(有多个server地址的话会去连其他的server,如果所有server都连不上同样就报错),所以就连不上zookeeper报错了。然后我把tickTime改成20000后就连上了。问题解决。