坑:8080 端口冲突 kill 相应进程反复重启问题

文章讲述了作者通过排查发现Zookeeper反复重启的问题,进而分析了Zookeeper在Kafka中的重要角色,如集群管理、元数据存储、领导者选举等。作者通过卸载Kafka和Zookeeper解决了问题,同时提到Kafka新版本对Zookeeper依赖的减少趋势。
摘要由CSDN通过智能技术生成

解决方案

通过以下命令可以发现是哪个进程占用了端口,并查看该进程的存储位置,我这里的问题发现是 Zookeeper 在不断地重启,之前并没有自己安装过,想到 Kafka 之前的版本是依赖于 Zookeeper 的,便猜测是 Kafka 的问题,通过 brew list 命令查看了安装的目录发现了 Zookeeper,于是 brew install 命令卸载发现卸载失败 Kafka 有功能依赖,于是先卸载 Kafka,再卸载 Zookeeper 显示成功,问题解决。

lsof -i :8080

  • lsof:这是一个工具的名称,代表“list open files”,即列出打开的文件。
  • -i:这是lsof命令的一个选项,用于选择仅显示符合条件的网络连接信息。

ps -f -p 4444 是一个用于显示进程信息的命令。其中:

  • -f 选项表示以全格式显示进程信息,包括 UID、PID 等详细信息。
  • -p 4444 选项表示只显示进程号为 4444 的进程信息。

原因分析

ZooKeeper在Kafka集群中扮演着重要的角色,它主要用于协调Kafka集群中的各个Broker(服务器),以及保存Kafka集群的元数据信息。以下是ZooKeeper在Kafka中的主要作用:

  1. 集群管理:ZooKeeper帮助Kafka管理集群中的Broker,包括Broker的加入和退出。当有新的Broker加入或现有的Broker退出时,ZooKeeper能够感知到这些变化,并通知集群中的其他Broker。
  2. 领导者选举:在Kafka中,每个主题的分区都有一个领导者(Leader)Broker,负责处理该分区的所有读写请求。当领导者的Broker失效时,ZooKeeper会负责进行新的领导者选举,确保分区的可用性。
  3. 元数据存储:ZooKeeper用于存储Kafka集群的元数据信息,如主题、分区信息、分区副本位置等。这些信息对于Kafka的运行至关重要,例如,生产者和消费者需要通过这些信息来找到对应分区的领导者Broker。
  4. 分布式锁和同步:ZooKeeper提供了分布式锁机制,可以帮助Kafka在分布式环境中实现各种同步操作,如确保配置信息的准确更新,避免数据不一致等问题。
  5. 配置管理:Kafka的配置信息可以通过ZooKeeper进行管理和同步,确保集群中所有Broker使用相同的配置。
  6. 控制器选举:在Kafka集群中,有一个Broker会被选举为控制器(Controller),负责管理分区和副本的状态变化。ZooKeeper负责协调这一选举过程。
  7. 故障转移:当Broker发生故障时,ZooKeeper能够帮助Kafka快速地转移故障,通过重新选举领导者来恢复服务的可用性。

综上所述,ZooKeeper在Kafka中起到了协调管理、元数据存储、选举和同步等关键作用,是Kafka高可用性和分布式特性的重要支撑。随着Kafka的版本迭代,新版本中逐渐引入了KRaft模式,旨在减少对ZooKeeper的依赖,实现元数据管理的内聚化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值