02.Kafka基本概念详解

it2023-09-07  72

Kafka概念详解——http://kafka.apache.org/24/documentation.html

Kafka的基本概念

Broker:

Kafka集群包含一个或多个服务器,这种服务器被称为broker。broker端不维护数据的消费状态,提升了性能。直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制, 减少耗性能的创建对象和垃圾回收。

Producer:

负责发布消息到Kafka broker

Consumer:

消息消费者,向Kafka broker读取消息的客户端,consumer从broker拉取(注意是拉去不是broker推送)数据并进行处理。

Consumer Group:

每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)所谓的消费者组,指的是多个消费者实例共同组成一个组来消费一组主题。这组主题中的每个分区都只会被组内的一个消费者实例消费,其他消费者实例不能消费它。

Topic:

每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。一个逻辑的概念,由1到多个分区(Partition)组成。Topic类似于文件系统中的文件夹,events是目录中的文件一个Topic可以被多个用户操作每个Topic KafKa集群都会维护一个分区日志

Partition:

实际消息存储单位一个或多个Partition构成Topic与ES的分片类似(Shard)每个分区都是顺序,不可变的队列每个分区是一组有序的消息日志。每个分区都有一个物理日志文件分区的数量在运行期间可以增加,但是不能减少生产者生产的消息,只会发给主题的一个分区一个topic的分区可以分布在不同的broker上Kafka的分区编号是从 0 开始的

offset

属于分区里的一个概念每条消息在分区中的位置信息由一个叫位移(Offset)的数据来标识当消息到达分区时,该消息会有一个标识id就叫offsetoffset是消息在分区中的唯一标识KafKa通过offset来保证分区内消息的顺序性offset不跨分区offset从0开始,依次递增

Consumer Offset

表征消费者消费进度,每个消费者都有自己的消费者位移Consumer Offset自动从最新的开始

Replica

属于分区里的一个概念一个分区内的消息可以有多个副本与ES的副本机制类似副本分为leader和followerleader副本负责处理读写请求follower副本只负责与leader副本的消息同步副本分散在不同的broker中,当leader副本出现故障时,从follower副本中重新选举新的leader副本分区中所有副本统称为AR某Topic比如有三个分区每个分区三个副本如下图:

三层消息架构

第一层是主题层,每个主题可以配置 M 个分区,而每个分区又可以配置 N 个副本。第二层是分区层,每个分区的 N 个副本中只能有一个充当领导者角色,对外提供服务;其他 N-1 个副本是追随者副本,只是提供数据冗余之用。第三层是消息层,分区中包含若干条消息,每条消息的位移从 0 开始,依次递增。最后,客户端程序只能与分区的领导者副本进行交互。

数据持久化

Broker负责数据持久化Kafka使用消息日志(Log)来保存数据一个日志就是磁盘上一个只能追加写(Append-only)消息的物理文件。因为只能追加写入,故避免了缓慢的随机 I/O 操作,改为性能较好的顺序I/O 写操作,这也是实现 Kafka 高吞吐量特性的一个重要手段不过如果你不停地向一个日志写入消息,最终也会耗尽所有的磁盘空间,所以Kafka会定期删除消息,通过日志段(Log Segment)机制来删除在 Kafka 底层,一个日志又近一步细分成多个日志段,消息被追加写到当前最新的日志段中,当写满了一个日志段后,Kafka 会自动切分出一个新的日志段,并将老的日志段封存起来。Kafka 在后台还有定时任务会定期地检查老的日志段是否能够被删除,从而实现回收磁盘空间的目的
最新回复(0)