java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot项目整合Zookeeper

SpringBoot项目整合Zookeeper常见错误总结

作者:程序员1970

本文总结了在使用Zookeeper和Dubbo进行服务注册与发现过程中遇到的常见问题及其解决方案,包括依赖配置错误、配置文件错误、启动失败、运行时常见错误以及Zookeeper启动问题,并提供了一些最佳实践建议,感兴趣的朋友跟随小编一起看看吧

一、依赖配置问题

1. 依赖缺失或版本不匹配

报错内容

java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy
java.lang.NoClassDefFoundError: org/apache/zookeeper/Watcher
java.lang.NoClassDefFoundError: org/apache/curator/utils/DefaultZookeeperFactory
java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory

原因

解决方案

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>4.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>4.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.6.1</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>

2. Dubbo与Zookeeper整合依赖错误

报错内容

@DubboReference dependencies is failed

原因

解决方案

@SpringBootApplication
@EnableDubbo
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

二、配置问题

1. Zookeeper连接地址配置错误

报错内容

Caused by: java.lang.IllegalStateException: failed to connect to zookeeper server

原因

解决方案

spring:
  cloud:
    zookeeper:
      connect-string: 192.168.1.100:2181

2. Zookeeper配置文件错误

报错内容

Invalid arguments, exiting abnormally
java.lang.NumberFormatException: For input string: "D:\MyDevPrograms\Zookeeper\apache-zookeeper-3.8.4-bin\bin\..\conf\zoo.cfg"

原因

解决方案

  1. 确保zoo.cfg中dataDir路径存在
  2. 创建数据目录并设置权限:
mkdir -p /data/zookeeper
chmod +w /data/zookeeper

3. Zookeeper端口冲突

报错内容

Error contacting service. It is probably not running.

原因

解决方案

  1. 检查端口占用:
netstat -tuln | grep :2181
  1. 修改zoo.cfg中的clientPort:
clientPort=2182

三、启动失败问题

1. Zookeeper服务未启动

报错内容

Connection refused: no further information

原因

解决方案

  1. 启动Zookeeper服务:
bin/zkServer.sh start

2. 连接超时问题

报错内容

Caused by: java.lang.IllegalStateException: failed to connect to zookeeper server

原因

解决方案

spring:
  cloud:
    zookeeper:
      connect-string: 192.168.1.100:2181
      connection-timeout: 10000

3. 数据目录权限问题

报错内容

Error: Cannot create data directory /data/zookeeper

原因

解决方案

chmod -R 755 /data/zookeeper

四、运行时常见错误

1. 服务注册失败

报错内容

Error contacting service. It is probably not running.

原因

解决方案

  1. 确认Zookeeper服务已启动
  2. 检查服务名与注册名一致

2. Dubbo服务注册失败

报错内容

Caused by: org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.buildCuratorFramework

原因

解决方案

dubbo:
  registry:
    address: zookeeper://192.168.1.100:2181
    timeout: 60000

3. 循环依赖问题

报错内容

Error contacting service. It is probably not running.

原因

解决方案

  1. 调整服务间的依赖关系
  2. 使用接口抽象降低耦合度
  3. 考虑使用延迟加载

4. Zookeeper客户端连接失败

报错内容

org.apache.zookeeper.KeeperException$ConnectionLossException: 
KeeperErrorCode = ConnectionLoss for /path

原因

解决方案

  1. 增加连接超时时间
  2. 检查网络稳定性
  3. 优化Zookeeper服务器性能

五、Zookeeper启动问题

1. Zookeeper启动失败

报错内容

Starting Zookeeper ...............FAILED TO START

原因

解决方案

  1. 检查zoo.cfg配置
  2. 创建数据目录
  3. 检查端口占用

2. Zookeeper端口配置错误

报错内容

ZooKeeper server is not running on port 2181

原因

解决方案
修改zoo.cfg文件中的clientPort:

clientPort=2181

解决方案总结

问题类型报错内容解决方案
依赖缺失NoClassDefFoundError添加正确的Zookeeper和Curator依赖
配置错误failed to connect to zookeeper server检查连接地址和配置文件
端口冲突Error contacting service. It is probably not running检查端口占用,修改clientPort
服务注册失败Connection refused确认Zookeeper服务已启动
连接超时failed to connect to zookeeper server增加连接超时时间
数据目录权限Cannot create data directory创建目录并设置权限
Dubbo整合问题@DubboReference dependencies is failed添加@EnableDubbo注解和正确依赖
循环依赖Error contacting service. It is probably not running调整服务依赖关系

最佳实践建议

spring:
  cloud:
    zookeeper:
      connect-string: 192.168.1.100:2181
      connection-timeout: 10000
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>4.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>4.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.6.1</version>
</dependency>

到此这篇关于SpringBoot项目整合Zookeeper常见错误总结的文章就介绍到这了,更多相关SpringBoot项目整合Zookeeper内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文