客户端无法连接kafka问题

docker-compose.yaml 文件中

  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    restart: always
    ports:
      - 9092:9092
    environment:
      TZ: Asia/Shanghai
      KAFKA_BROKER_ID: 0
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092
      KAFKA_LISTENERS: PLAINTEXT://:9092
    #network_mode: "host"
    depends_on:
      - zookeeper

当没有设置 KAFKA_LISTENERS 和 KAFKA_ADVERTISED_LISTENERS 这两个配置时, 由于客户端连接kafka的首先是与zookeeper连接,然后通过zookeeper获取kafka的ip和端口, 如果不设置 KAFKA_LISTENERS 和 KAFKA_ADVERTISED_LISTENERS 这两个配置,那么zookeeper就用默认的 docker 容器名代替kafka的ip, 然而我们在远程连接kafka的时候肯定不能够使用容器名去连接,所以需要通过 KAFKA_ADVERTISED_LISTENERS 设置对应的ip去连接。

1 kafka 可以脱离 zookeeper 单独使用吗?为什么? kafka 不能脱离 zookeeper 单独使用,

因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。 2 kafka 有几种数据保留的策略 kafka 有两种数据保存策略:

按照过期时间保留 按照存储的消息大小保留。 3 kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理? 这个时候 kafka 会执行数据清除工作,时间和大小不论那个满足条件,都会清空数据。 4 什么情况会导致 kafka 运行变慢 cpu 性能瓶颈

磁盘读写瓶颈

网络瓶颈

5 使用 kafka 集群需要注意什么? 集群的数量不是越多越好,最好不要超过 7 个,

因为节点越多,消息复制需要的时间就越长,整个群组的吞吐量就越低。