kafka

初识kafka

kafka概念

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据,是用于构建实时数据管道和流应用程序。

四个术语

  • Topic
    Kafka将消息种子(Feed)分门别类,每一类的消息称之为一个主题(Topic)。
  • Producer
    发布消息的对象称之为主题生产者(Kafka topic producer)。生产者发布消息时要选定Topic上的分区。
  • Consumer
    订阅消息并处理发布的消息的种子的对象称之为主题消费者(consumers)。一般消费者模型可以分为两类:队列和发布-订阅式。队列的处理方式就是一条消息只有一个消费者知道并处理,发布-订阅的处理方式则是消息被所有人都知道,所有人都可以来处理该消息,kafka为这两种模型提供了单一抽象模型:消费者组(cosumer group)。每个消费者都有一个组名,当所有人的组名都不一样的时候,这个时候就是发布-订阅模式,因为消息要按照消费者组为单位发出的,这意味着此时每个消费者都会收到消息并可以进行处理;当所有人的消费者组名字都一样时,意味着只会有一个消费者收到消息并可以进行处理,此时就是队列模式了。
  • Broker
    已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker). 消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息。

三个关键能力

  • 发布和订阅消息流,在这方面,它类似于一个消息队列或企业消息系统
  • 容错的方式存储消息(流)
  • 在消息流发生时处理他们

四个核心API

  • 应用程序使用 Producer API 发布消息到1个或多个topic(主题)。
  • 应用程序使用 Consumer API 来订阅一个或多个topic,并处理产生的消息
  • 应用程序使用 Streams API 充当一个流处理器,从1个或多个topic消费输入流,并生产一个输出流到1个或多个输出topic,有效地将输入流转换到输出流。
  • Connector API允许构建或运行可重复使用的生产者或消费者,将topic连接到现有的应用程序或数据系统。例如,一个关系数据库的连接器可捕获每一个变化。

kafka安装过程

  • kafka的安装

    1
    brew install kafka

    安装会依赖zookeeper
    注意:安装目录:/usr/local/Cellar/kafka/0.10.2.0

  • 安装的配置文件位置
    /usr/local/etc/kafka/server.properties
    /usr/local/etc/kafka/zookeeper.properties
  • 启动zookeeper

    1
    zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties &
  • 启动kafka

    1
    kafka-server-start /usr/local/etc/kafka/server.properties &
  • 创建topic
    让我们使用单个分区和只有一个副本创建一个名为“test”的主题

    1
    kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
  • 查看创建的topic
    我们现在可以看到该主题,如果我们运行list topic命令:

    1
    kafka-topics --list --zookeeper localhost:2181
  • 发送消息
    Kafka提供了一个命令行客户端,它将从文件或标准输入接收输入,并将其作为消息发送到Kafka集群。默认情况下,每行都将作为单独的消息发送。
    运行生产者,然后在控制台中键入一些消息发送到服务器。

    1
    kafka-console-producer --broker-list localhost:9092 --topic test
  • 消费消息
    Kafka还有一个命令行消费者,将消息转储到标准输出。

    1
    kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning
  • Tip
    Q:安装kafka出现错误:

    1
    2
    3
    4
    kafka: Java 1.8 is required to install this formula.
    Install AdoptOpenJDK 8 with Homebrew Cask:
    brew cask install homebrew/cask-versions/adoptopenjdk8
    Error: An unsatisfied requirement failed this build.

    A:

    1
    brew cask install homebrew/cask-versions/adoptopenjdk8

bilibili学习kafka

https://www.bilibili.com/video/av36607048?p=2

  • zookeeper 默认是前台启动(关闭了控制台停止),可以在最前面加上 nohup,这样就可以后台启动了。

  • 三个目录

    • bin目录
      1
      cd usr/local/Cellar/kafka/2.2.1/bin

image.png

* config文件
1
/usr/local/etc/kafka/server.properties

image.png

* 日志
1
2
3
4
############################# Log Basics #############################

# A comma separated list of directories under which to store log files
log.dirs=/usr/local/var/lib/kafka-logs
  • 删除topic
    1
    kafka-topics --delete --zookeeper localhost:2181 --topic test
Thank you for your accept. mua!
-------------本文结束感谢您的阅读-------------