目录
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
常见的使用场景如下图所示:
1.Kafka的安装
2.Kafka的基本概念
Kafka是一个分布式的,分区的消息服务。它提供一个消息系统应该具备的功能,但是确有着独特的设计。可以这样来说,kafka借鉴了JMS规范的思想,但是确没有完全遵循JMS规范。
首先,让我们来看一下基础的消息相关术语:
服务端和客户端之间的通信通过TCP协议来完成
3.创建topic
执行以下命令,创建名为“test”的topic,这个topic只有一个partition,并且备份因子也设置为1
bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
执行成功:
查看当前kafka内有哪些topic:
bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092
4.发送消息
kafka自带了一个producer命令客户端,可以从本地文件中读取内容,或者我们也可以从命令行中直接输入内容,并将这些内容以消息的形势发送到kafka集群。在默认情况下,每一个行会被当做成一个独立的消息。使用kafka的发送消息的客户端,制定发送到的kafka服务器地址和topic
bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test
5.消费消息
windows下:
方式一:
命令:
bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test
方式二:
命令:
bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic test
几个注意点:
消息会被存储
消息是顺序存储
消息是有偏移量的
消费时可以指明偏移量进行消费
6.关于消息的细节
7.单播消息
在一个kafka的topic中,启动两个消费者,一个生产者,问生产者发送消息,这条消息是否会同时被两个消费者消费。
如果多个消费者在同一个消费组,那么只有一个消费者可以收到订阅的topic中的消息。换言之,同一个消费者组中只能有一个消费者收到一个topic中的消息。
8.多播消息
不同的消费组订阅同一个topic,那么不同的消费组中只能有一个消费者能收到消息,实际上也是多个消费组中的多个消费者收到了同一个消息
下图就是描述单播消息和多播消息的区别