• Kafka入门


    概念

    • Broker 中间人 单独一个Kafka节点是一个Broker,Kafka集群由多个Broker组成
    • Topic 主题 一个主题由一个或多个消息构成
    • Producer 生产者 向Broker发送消息
    • Consumer 消费者 从Broker拉取消息消费
    • ConsumerGroup 消费组 由一类有相似行为的消费者构成,同一个消息只能被消费组中的一个消费者消费
    • Partition 分区,实际存储消息的地方,每个Topic都由一个或多个Partition构成

    架构

    用Doker部署一个Kafka集群

    1. 拉取Zookeeper 镜像
    docker pull wurstmeister/zookeeper
    
    1. 拉取Kafka 镜像
    docker pull wurstmeister/kafka
    
    1. 运行Zookeeper 容器
    docker run -d --name zookeeperct -p 2181:2181  wurstmeister/zookeeper
    // -d 后台运行  --name指定名字为zookeeperct -p用宿主机的2181端口映射容器2181 
    
    1. 运行Kafka容器
    docker run -d --name kafkact -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.17.0.1:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.17.0.1:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092   wurstmeister/kafka
    // -e 设置环境变量
    //-e KAFKA_BROKER_ID=0  配置BROKER_ID,集群中唯一
    //-e KAFKA_ZOOKEEPER_CONNECT=172.17.0.1:2181//kafka 配置ZOOKEEPER IP,用docker inspect zookeeperct 命令查看
    //-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT//172.17.0.1:9092  //把kafka的地址端口注册给zookeeper
    //-e KAFKA_LISTENERS=PLAINTEXT//0.0.0.0:9092 配置kafka的监听端口
    
    • 如果启动失败,查看容器日志
    docker logs -f -t --tail 50 kafkact
    
    1. 测试发送和接收消息
    //进入容器
    docker exec -it kafka bash
    
    //运行生产者脚本
    /opt/kafka_2.12-2.5.0/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic furit
    > apple
    > origin
    
    //运行消费者脚本
    /opt/kafka_2.12-2.5.0/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic furit
    
    

    运行流程

    1. 生产者定期向主题发送消息。

    2. Kafka broker将所有消息存储在为该特定主题配置的分区中。它确保消息在分区之间平等共享。如果生产者发送两个消息,并且有两个分区,则Kafka将在第一个分区中存储一个消息,在第二个分区中存储第二个消息。

    3. 消费者订阅一个特定的主题。

    4. 一旦消费者订阅了一个主题,Kafka将向消费者提供该主题的当前偏移量,并将偏移量保存在ZooKeeper中。

    5. 消费者将定期请求Kafka新消息。

    6. 一旦Kafka收到来自生产者的消息,它会将这些消息转发给消费者。

    7. 消费者将收到消息并处理它。

    8. 一旦消息被处理,消费者将向Kafka broker发送确认。

    9. 一旦Kafka收到确认,它会将偏移量更改为新值,并在ZooKeeper中进行更新。由于ZooKeeper中保留了偏移量,因此即使在服务器出现故障时,消费者也可以正确读取下一条消息。

  • 相关阅读:
    distributed caching for .net applications
    Linux_18/ mysql
    找到一本不错的Linux电子书,附《Linux就该这么学》章节目录。
    LinuxProbe/ 疑问ABC
    Linux_15/ autofs, DNS
    Linux_14/ SAMBA, NFS
    Linux_13/ 虚拟网站主机功能,Vsftpd
    Linux_12/ Apache, SELinux
    Linux_11/ firewalld-config, SSH, bounding
    Linux_10/ iptables & firewalld
  • 原文地址:https://www.cnblogs.com/jaychan/p/13269918.html
Copyright © 2020-2023  润新知