zoukankan      html  css  js  c++  java
  • Kafka:第一章:基本概念以及安装Kafka,单播模式和多播模式

    一、Kafka是什么?

    定义:Kafka是一个基于zookeeper协调的分布式、多副本的(replica)、支持分区的(partition)系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写的项目。


    二、安装kafka

    Kafka是用Scala语言开发的,运行在JVM上,在安装Kafka之前需要先安装JDK。

    yum install java-1.8.0-openjdk* -y
    

    下载zookeeper镜像

    docker pull wurstmeister/zookeeper
    

    开放端口

    firewall-cmd --add-port=2181/tcp --permanent
    firewall-cmd --reload
    firewall-cmd --query-port=2181/tcp
    systemctl restart docker
    

    启动镜像生成容器

    docker run -dit --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2  --name zookeeper \
    -p 2181:2181 \
    -v /etc/localtime:/etc/localtime \
    -t wurstmeister/zookeeper
    

    下载kafka镜像

    docker pull wurstmeister/kafka
    

    开放端口

    firewall-cmd --add-port=9092/tcp --permanent
    firewall-cmd --reload
    firewall-cmd --query-port=9092/tcp
    systemctl restart docker
    

    启动kafka镜像生成容器

    docker run -dit --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka \
    -p 9092:9092 \
    -e KAFKA_BROKER_ID=0 \
    -e KAFKA_ZOOKEEPER_CONNECT=172.21.17.47:2181 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.21.17.47:9092 \
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
    

    参数说明:

    -e KAFKA_BROKER_ID=0 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
    -e KAFKA_ZOOKEEPER_CONNECT=ip:2181/kafka 配置zookeeper管理kafka的路径ip:2181/kafka,ip地址改为内网ip
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://ip:9092 把kafka的地址端口注册给zookeeper,ip地址改成内网ip
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口
    -v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间

    验证kafka是否可以使用

    进入容器

    docker exec -it kafka bash
    

    进入 /opt/kafka_2.13-2.7.1/bin/ 目录下

    cd /opt/kafka_2.13-2.7.1/bin/
    

    运行kafka生产者发送消息

    ./kafka-console-producer.sh --broker-list 106.14.132.94:9092 --topic sun
    

    发送消息

    {"datas[{"channel":"","metric":"temperature","producer":"ijinus","sn":"IJA0101-00002245","time":"1543207156000","value":"80"}],"ver":"1.0"}
    

    运行kafka消费者接收消息

    ./kafka-console-consumer.sh --bootstrap-server 106.14.132.94:9092 --topic sun --from-beginning
    

    停止zookeeper和kafka

    docker stop zookeeper
    docker rm zookeeper
    docker stop kafka
    docker rm kafka
    

    三、基本概念

    • Broker:消息中间件处理节点,一个Kafka节点就是一个broker,一个或者多个Broker可以组成一个Kafka集群。
    • Topic:Kafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个topic。
    • Producer:消息生产者,向Broker发送消息的客户端。
    • Consumer:消息消费者,从Broker读取消息的客户端。
    • ConsumerGroup:每个Consumer属于一个特定的ConsumerGroup,一条消息可以被多个不同的Consumer Group消费,但是一个ConsumerGroup中只能有一个Consumer能够消费该消息。
    • Partition:物理上的概念,一个topic可以分为多个partition,每个partition内部消息是有序的。

    说明:producer通过网络发送消息到Kafka集群,然后consumer来进行消费,服务端(brokers)和客户端(producer、consumer)之间通信通过TCP协议来完成。


    四、单播模式和多播模式

    单播消费
    一条消息只能被某一个消费者消费的模式,类似queue模式,只需让所有消费者在同一个消费组里即可
    分别在两个客户端执行如下消费命令,然后往主题里发送消息,结果只有一个客户端能收到消息。

    多播消费
    一条消息能被多个消费者消费的模式,类似publish-subscribe模式费,针对Kafka同一条消息只能被同一个消费组下的某一个消费者消费的特性,要实现多播只要保证这些消费者属于不同的消费组即可。我们再增加一个消费者,该消费者属于testGroup-2消费组,结果两个客户端都能收到消息。


    # 总结 提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文介绍了kafka的基本概念以及安装流程,单播模式和多播模式
  • 相关阅读:
    文件下载(Servlet/Struts2)
    Spring学习(一)---依赖注入和控制反转
    MyBatis学习(三)---MyBatis和Spring整合
    MyBatis学习(二)---数据表之间关联
    MyBatis学习(一)---配置文件,Mapper接口和动态SQL
    转载:常见端口介绍
    CentOS7 yum提示:another app is currently holding the yum lock;waiting for it to exit
    批量删除文件,只保留目录下最新的几个文件,其他均删除
    转载:SQL Server 如何设置数据库的默认初始大小和自动增长大小
    阿里云ECS使用秘钥或者密码登录
  • 原文地址:https://www.cnblogs.com/javawxid/p/15644370.html
Copyright © 2011-2022 走看看