初识kafka

初识kafka,第1张

初识kafka

kafka与传统的中间件区别:
1.消息消费完不会删除,默认保存在磁盘一周。(kafka每个消费者会维护自己的一个消息列表偏移量)

一、基本术语 1.Broker
消息中间件处理节点,一个kafka节点就是一个Broker,一个或多个Broker可以组成一个kafka集群。
一个Broker包含多个topic。
2.Topic
Kafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个topic。
3.Product
消息生产者,向Broker发送消息的客户端。
4.Consumer
消息消费者,从Broker读取消息的客户端。
5.ConsumerGroup
每个consumer属于一个特定的ConsumerGroup,一条消息可以被不同的ConsumerGroup消费,但是
一个ConsumerGroup只能有一个Consumer能够消费该消息。
6.Partition
物理上的概念,一个topic可以分为多个partition,每个partition内部消息是有序的。
二、安装&环境配置
	kafka是依赖zookeeper和jvm的。
	所以需要自行安装jdk和zookeeper
	安装完成后。
1.下载安装包
wget https://mirror.bit.edu.cn/apache/kafka/2.4.1/kafka_2.11-2.4.1.tgz   # 2.11是scala的版本,2.4.1是kafka的版本
tar -vxzf kafka_2.11-2.4.1.tgz
cd kafka_2.11-2.4.1
2.修改配置

修改配置文件config/server.propertities

#broker.id 属性在集群中必须唯一
broker.id=0
#kafka部署的机器IP和对外服务的端口号
listeners=PLAINTEXT://102.23.35.36:9092
#kafka的消息存储文件
log.dir=/usr/local/data/kafka-logs
#kafka连接zookeeper的地址
zookeeper.connect=102.23.35.36:2180
3.启动kafka
# 启动kafka,运行日志在logs目录的server.log文件里
bin/kafka-server-start.sh -deamon config/server.properties
#可以通过客户端查看目录树
bin/zkCli.sh
ls /    #查看zk根目录kafka相关节点
ls /brokers/ids #查看kafka节点

# 停止kafka
bin/kafka-server-stop.sh
4.创建主题topic
# 创建一个名为test的topic,备份因子为1,只有一个partition(Product发送一个消息到topic,topic不存在也会自己自动创建一个)
bin/kafka-topics.sh --create --zookeeper 102.23.35.36:2180 --replication-factor 1 --partitions 1 --topic test
# 查看kafka目前存在的topic
bin/kafka-topics.sh --list --zookeeper 102.23.35.36:2180
#删除kafka主题
bin/kafka-topics.sh --delete --topic test --zookeeper 102.23.35.36:2180
5.发送消息

kafka自带了一个producer命令客户端,可以从本地文件中读取内容,或者可以用命令行的方式直接输入内容,并将这些内容以消息的形式发送到kafka集群中。每一行会被独立成一个消息发送。

bin/kafka-console-producer.sh --broker-list 102.23.35.36:9092 --topic test
>this a msg
6.消费消息

对于consumer来说,也有一个命令客户端,会将消费到的消息打印到命令行,默认是消费的最新消息。

bin/kafka-console-consumer.sh --bootstrap-server 102.23.35.36:9092 --topic test

如果想要消费之前的消息可以通过-from-beginning参数指定:

bin/kafka-console-consumer.sh --bootstrap-server 102.23.35.36:9092 --from-beginning --topic test
消费多主题
bin/kafka-console-consumer.sh --bootstrap-server 102.23.35.36:9092 --whitelist "test|test1"
单播消息
一条消息只能被某一个消费者消费的模式。只需要让所有消费者在同一个消费组即可。分别在俩个客户端执行如下
消费命令,然后往主题里面发送消息,结果只有一个客户端可以收到消息。
bin/kafka-console-consumer.sh --bootstrap-server 102.23.35.36:9092 --consumer-property group.id=testGroup --topic test
多播消费
一条消息可以被多个消费者消费的模式。类似publish-subscribw模式消费,针对kafka消息只能被
同一个消费组下的某一个消费者消费的特性,要实现多播只要保证这些消费者在不同的消费组就可以了。再增加一个
testGroup-1消费者。结果俩个客户端都可以消费到消息。
bin/kafka-console-consumer.sh --bootstrap-server 102.23.35.36:9092 --consumer-property group.id=testGroup-1 --topic test
三、集群配置 1.kafka集群概念、
每个topic可以分配多个partition分区。为了让一个topic存储海量的数据,每个分区将会存储来不同的机器上
因此准确的说是partition的集群。
2.配置
config/server-1.properties
#broker.id 属性在集群中必须唯一
broker.id=1
#kafka部署的机器IP和对外服务的端口号
listeners=PLAINTEXT://102.23.35.36:9093
#kafka的消息存储文件
log.dir=/usr/local/data/kafka-logs
#kafka连接zookeeper的地址
zookeeper.connect=102.23.35.36:2180
config/server-2.properties
#broker.id 属性在集群中必须唯一
broker.id=2
#kafka部署的机器IP和对外服务的端口号
listeners=PLAINTEXT://102.23.35.36:9094
#kafka的消息存储文件
log.dir=/usr/local/data/kafka-logs
#kafka连接zookeeper的地址
zookeeper.connect=102.23.35.36:2180

已经有一个zookeeper实例和一个broker实例在运行了,现在再启动2个broker实例

bin/kafka-server-start.sh -deamon config/server-1.properties
bin/kafka-server-start.sh -deamon config/server-2.properties

再次创建topic的时候指定副本个数和分区个数,就会发现分区会存储在不同的broker机器上。多个副本之间,当前只有一个副本可以读写,当前的这个副本称之为主分区(主节点)。

只能一个分区在一个消费者组里面被某一个消费者消费。
消息发送要指定toptic和分区。
如果不指定分区,会按照key,有一个算法往指定的分区里面发。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5698827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存