kafka简介和术语

Posted gudanaimei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka简介和术语相关的知识,希望对你有一定的参考价值。

1 kafka介绍

Kafka是一款性能非常好的并且支持分布式的消息队列中间件
由于它的高吞吐特性,Kafka通常使用在大数据领域,如日志收集平台
Kafka是一个流处理平台,因为它在工作中就像是一个可以支撑高吞吐量的管道,数据像水一样流进去,然后另外一端再去读取这些数据
我们就可以把Kafka看作是一种特殊的消息队列中间件

kafka优点:

它被设计为一个分布式系统,易于向外扩展;
它同时为发布和订阅提供高吞吐量;
它支持多订阅者,当失败时能自动平衡消费者;
它将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序

 

2 术语

Broker            
Kafka集群包含一个或多个服务器,每个服务器被称为broker,保存在zookeeper临时节点/brokers/ids下

Topic 每条发布到Kafka集群的消息都有一个分类,这个类别被称为Topic(主题),保存在zookeeper临时节点
/brokers/topics下
Producer 消息的生产者,负责生产消息并发送到kafka broker
Consumer 消息的消费者,负责从kafka broker拉取数据,并消费已发布的消息,保存在zookeeper临时节点
/consumers下
Partition 每个Topic包含一个或多个Partition,每个partition都是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)
Consumer Group 消费者组,可以给每个Consumer指定消费组,若不指定消费者组,则属于默认的group
Message 消息,通信的基本单位,每个producer可以向一个topic发布一些消息

 

topic和partition

Kafka中的topic是以partition的形式存放,每个topic包含一个或多个partition
partition的数量一定要大于同时运行的consumer的数量,但要小于等于集群broker的数量,这样消息数据就可以均匀的分布在各个broker中
每个partition在物理上对应一个文件夹,该文件夹下存储这个partition的所有消息和索引文件
每个partition(文件夹)中有多个大小相等的segment(段)数据文件,每个segment的大小是相同的,但是每条消息的大小可能不相同,因此segment<br/>数据文件中消息数量不一定相等
segment数据文件有两个部分组成,分别为index file和data file,此两个文件是一一对应,成对出现,后缀”.index“和“.log”分别表示为segment索引文件和数据文件

 

3 produce生产写入

Producer采用推(push)模式将消息发送到broker,每条消息都被追加(append)到分区(partition)中,属于顺序写磁盘(顺序写磁盘效率比随机写要高,保障kafka吞吐率,在读取使用的时候读取速度也会更快)
发送消息到broker时,会根据Paritition机制选择将其存储到哪一个Partition
如果Partition机制设置的合理,所有消息都可以均匀分布到不同的Partition里,这样就实现了数据的负载均衡
如果一个Topic对应一个文件,那这个文件所在的机器I/O将会成为这个Topic的性能瓶颈,而有了Partition后,不同的消息可以并行写入不同broker的不同Partition里,极大的提高了吞吐率


流程: producer先从zookeeper的“
/brokers/topics/../partitions/../state”节点找到该partition的leader producer将消息发送给该leader leader将消息写入本地log followers从leader pull消息,写入本地log后向leader发送ACK leader收到所有ISR中的replication的ACK后,增加HW(high watermark,最后commit的offset)并向producer发送ACK

 

4 consume消费

Kafka发布消息通常有两种模式:队列模式(queuing)和发布/订阅模式(publish-subscribe)
队列模式:只有一个消费组,而这个消费组有多个消费者,一条消息只能被这个消费组中的一个消费者所消费
发布/订阅模式:可有多个消费组,每个消费组只有一个消费者,同一条消息可被多个消费组消费

 

以上是关于kafka简介和术语的主要内容,如果未能解决你的问题,请参考以下文章

顶级Apache Kafka术语和概念

SpringCloud系列十一:SpringCloudStream(SpringCloudStream 简介创建消息生产者创建消息消费者自定义消息通道分组与持久化设置 RoutingKey)(代码片段

kafka术语和配置介绍

Kafka 术语

kafka术语

Kafka的原理和一些关键术语概念