kafka介绍
根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能:
- 发布和订阅消息流,这个功能类似于消息队列,这也是kafka归类为消息队列框架的原因
- 以容错的方式记录消息流,kafka以文件的方式来存储消息流
- 可以再消息发布的时候进行处理
使用场景
- 在系统或应用程序之间构建可靠的用于传输实时数据的管道,消息队列功能
- 建实时的流数据处理程序来变换或处理数据流,数据处理功能
Kafka目前主要作为一个分布式的发布订阅式的消息系统使用 下图为消息传输流程
- Producer即生产者,向Kafka集群发送消息,在发送消息之前,会对消息进行分类,即Topic,上图展示了两个producer发送了分类为topic1的消息,另外一个发送了topic2的消息。
- Topic即主题,通过对消息指定主题可以将消息分类,消费者可以只关注自己需要的Topic中的消息
- Consumer即消费者,消费者通过与kafka集群建立长连接的方式,不断地从集群中拉取消息,然后可以对这些消息进行处理。
下载
在kafka官网 http://kafka.apache.org/downloads下载到最新的kafka安装包,选择下载二进制版本的tgz文件
安装
首先确保你的机器上安装了jdk,kafka需要java运行环境,以前的kafka还需要zookeeper,新版的kafka已经内置了一个zookeeper环境,所以我们可以直接使用。
如果只需要进行最简单的尝试的话我们只需要解压到任意目录即可,这里我们将kafka压缩包解压到/home目录
kafka解压目录下下有一个config的文件夹,里面放置的是我们的配置文件
consumer.properites 消费者配置
producer.properties 生产者配置
server.properties kafka服务器的配置,此配置文件用来配置kafka服务器 目前仅介绍几个最基础的配置
- broker.id 申明当前kafka服务器在集群中的唯一ID,需配置为integer,并且集群中的每一个kafka服务器的id都应是唯一的,我们这里采用默认配置即可
- listeners 申明此kafka服务器需要监听的端口号,如果是在本机上跑虚拟机运行可以不用配置本项,默认会使用localhost的地址,如果是在远程服务器上运行则必须配置,例如:
listeners=PLAINTEXT:// 192.168.180.128:9092
。并确保服务器的9092端口能够访问 - zookeeper.connect 申明kafka所连接的zookeeper的地址 ,需配置为zookeeper的地址,由于本次使用的是kafka高版本中自带zookeeper,使用默认配置即可
zookeeper.connect=localhost:2181
运行
启动zookeeper
1 | #前台启动 |
启动kafka
1 | [root@CentOS124 kafka2.11]# bin/kafka-server-start.sh config/server.properties |
配置kafka集群
- 条件有限,在同一个机器上启动三个broker来模拟kafka集群,三个broker使用另外安装的同一个zookeeper服务(实际集群中,每个broker通常在不同的机器上,也会使用不同host的zookeeper)
1 | #复制server.properties配置文件为三份,分别起名为server.properties,server-2.properties,server-3.properties |
springBoot中如何使用kafka
首先创建一个springBoot项目 引入spring-kafka
application.properties 配置
1 | server.port=8080 |
创建Producer生产者
1 | package com.example.modules; |
创建消费者
1 |
|
运行后就可以看到控制台输出了
1 | (SpringRunner.class) |
kafka 配置文件参数详解
https://www.cnblogs.com/alan319/p/8651434.html
kafka的配置分为 broker、producter、consumer三个不同的配置