开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情
Kafka中有很多术语,这篇文章会介绍基本术语,为之后学习Kafka打基础。
Procucer 和 Consumer
Producer 即生产者,负责创建消息,Consumer 即消费者,负责接收消息。
Broker
Broker 是 Kafka 的服务器端,将 Kafka 服务进程称为 Broker,Producer 和 Consumer 是客户端,支持多种客户端语言。Broker 负责接收和处理来自客户端的请求,以及对消息作持久化。
一个或多个 Broker 组成了一个 Kafka 集群。在实验的时候,我们可以在一台服务器启动多个 Broker 服务进程,但在生产上,都是一台服务器一个 Broker 进程,这样即使一台服务器挂了,也只是一个 Broker 进程受到影响,其他的 Broker 进程不会有影响。所以一般可以将一个 Broker 看作一台服务器。
Topic
Producer 发送消息存储到Broker,Consumer如何知道自己要消费哪些消息?这就是 Topic 的作用,消息的主题。
同一类别的消息设置为某一主题。Producer 发送消息到 Broker 时需要设定消息的主题,Consumer 通过订阅主题来消费特定类别的消息。
分区
上面我们说到了 Kafka 多个 Broker 进程组成一个 Kafka集群,一个 Broker 进程可以看作一台服务器。一个 Topic 的消息可以划分成多个分区,不同分区放置到不同的服务器上。
生产者发送消息到 Kafka 服务器上,如果没有分区的概念,一个主题的消息只能发送到一台服务器上,这台服务器的机器 I/O 将会成为这个主题的性能瓶颈。
消息被发送到 Kafka 服务器上之前,会根据分区规则规则存储到哪个具体的分区。合理的分区规则会将消息均衡的分到不同的分区中。还可以通过增加新的 Broker 来增加整体系统的吞吐量。
副本
将数据备份是实现高可用的方法之一。Kafka 引入了多副本机制,一个分区有多个副本,不同副本保存的是相同的消息。副本之间是“一主多从”关系,其中 leader 副本负责处理读写请求, follower 副本只负责与 leader 副本的消息同步。
参考
- 《深入理解Kafka核心设计和实践原理》
- 极客时间《Kafka核心技术与实战》