美文网首页
Kafka核心技术与实战 - 一篇文章带你快速搞定Kafka术语

Kafka核心技术与实战 - 一篇文章带你快速搞定Kafka术语

作者: 陈德华 | 来源:发表于2020-10-04 11:41 被阅读0次

一、kafka消息架构

第一层是主题层,每个主题可以配置 M 个分区,而每个分区又可以配置 N 个副本。

第二层是分区层,每个分区的 N 个副本中只能有一个充当领导者角色,对外提供服务;其他 N-1 个副本是追随者副本,只是提供数据冗余之用。

第三层是消息层,分区中包含若干条消息,每条消息的位移从 0 开始,依次递增。

最后,客户端程序只能与分区的领导者副本进行交互。

二、

1、客户端

生产者(Producer)

向主题发布消息的客户端称为生产者,生产者程序通常持续不断地向一个或多个主题发送消息,

消费者(Consumer)

而订阅这些主题消息的客户端就被称为消费者)。和生产者类似,消费者也能够同时订阅多个主题的消息。

我们把生产者和消费者统称为客户端(Clients)。

2、服务端(高可用)

有客户端自然也就有服务器端。Kafka 的服务器端由被称为 Broker 的服务进程构成,即一个 Kafka 集群由多个 Broker 组成,Broker 负责接收和处理客户端发送过来的请求,以及对消息进行持久化。来实现高可用

3、备份机制(容错性)

实现高可用的另一个手段就是备份机制(Replication)。在Kafka 中被称为副本(Replica),Kafka 定义了两类副本:领导者副本(Leader Replica)和追随者副本(Follower Replica)。追随者副本不对外提供服务

4、分区

Kafka中的分区机制指的是将每个主题划分成多个分区(Partition),每个分区是一组有序的消息日志。生产者生产的每条消息只会被发送到一个分区中

5、持久化(持久性、可靠性)

Kafka使用消息日志(Log)来保存数据,一个日志就是磁盘上一个只能追加写(Append-only)消息的物理文件。

因为只能追加写入,故避免了缓慢的随机 I/O 操作,改为性能较好的顺序 I/O 写操作,这也是实现 Kafka 高吞吐量特性的一个重要手段。

不过如果你不停地向一个日志写入消息,最终也会耗尽所有的磁盘空间,因此 Kafka 必然要定期地删除消息以回收磁盘。

怎么删除呢?简单来说就是通过日志段(Log Segment)机制。在 Kafka 底层,一个日志又进一步细分成多个日志段,消息被追加写到当前最新的日志段中,

当写满了一个日志段后,Kafka 会自动切分出一个新的日志段,并将老的日志段封存起来。Kafka 在后台还有定时任务会定期地检查老的日志段是否能够被删除,从而实现回收磁盘空间的目的。

6、 高并发

Kafka 中实现这种 P2P 模型的方法就是引入了消费者组(Consumer Group)。所谓的消费者组,指的是多个消费者实例共同组成一个组来消费一组主题。这组主题中的每个分区都只会被组内的一个消费者实例消费,其他消费者实例不能消费它。为什么要引入消费者组呢?主要是为了提升消费者端的吞吐量

四、术语

消息:Record。Kafka 是消息引擎嘛,这里的消息就是指 Kafka 处理的主要对象。

主题:Topic。主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。

分区:Partition。一个有序不变的消息序列。每个主题下可以有多个分区。

消息位移:Offset。表示分区中每条消息的位置信息,是一个单调递增且不变的值。

副本:Replica。Kafka 中同一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。副本还分为领导者副本和追随者副本,各自有不同的角色划分。副本是在分区层级下的,即每个分区可配置多个副本实现高可用。

生产者:Producer。向主题发布新消息的应用程序。

消费者:Consumer。从主题订阅新消息的应用程序。

消费者位移:Consumer Offset。表征消费者消费进度,每个消费者都有自己的消费者位移。

消费者组:Consumer Group。多个消费者实例共同组成的一个组,同时消费多个分区以实现高吞吐。

重平衡:Rebalance。消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。Rebalance 是 Kafka 消费者端实现高可用的重要手段。

相关文章

网友评论

      本文标题:Kafka核心技术与实战 - 一篇文章带你快速搞定Kafka术语

      本文链接:https://www.haomeiwen.com/subject/dshnuktx.html