zoukankan      html  css  js  c++  java
  • 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中保留了偏移量,因此即使在服务器出现故障时,消费者也可以正确读取下一条消息。

  • 相关阅读:
    php 解析json
    TP学习笔记一(tp的目录结构 , tp的输出方式)
    linux android真机测试
    SharedPreferences保存数据
    Volley用法
    android获得图片
    android 一条线
    android 获取时间
    Android_Spinner_Listener
    Android_Spinner_SimpleAdapter
  • 原文地址:https://www.cnblogs.com/jaychan/p/13269918.html
Copyright © 2011-2022 走看看