Kafka
- 消息系统
- 点对点消息系统
- 消息只能被一个消费者消费
- 发布-订阅系统
- 消费者可以订阅一个或多个主题并使用该主题中的所有消息
- Kafka
Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端点传递到另一个端点 ,Kafka消息保留在磁盘上,并在群集内复制以防止数据丢失。
- kafka优点:
- 可靠性 - Kafka是分布式,分区,复制和容错的。
- 可扩展性 - Kafka消息传递系统轻松缩放,无需停机。
- 耐用性 - Kafka使用分布式提交日志,这意味着消息会尽可能快地保留在磁盘上,因此它是持久的。
- 性能 - Kafka对于发布和订阅消息都具有高吞吐量。 即使存储了许多TB的消息,它也保持稳定的性能。
- 基础概念:
- topics: 特定类别的消息流统称为主题,数据存储在主题中。
- partition:主题可能有很多分区,因此可以处理认以数量的数据。
- partition offset: 每个分区消息具有称为 offset 的唯一序列标识。
- Replicas of partition: 分区备份,备份从不写入或读取数据,只是为了防止数据丢失;
- Brokers(经纪人):暂时不了解
- Kafka Cluster(Kafka集群):Kafka有多个代理被称为Kafka集群。
- Producers(生产者): 生产者是发送给一个或多个Kafka主题的消息的发布者。
- Consumers(消费者): Consumers从经纪人处读取数据。 消费者订阅一个或多个主题,并通过从代理中提取数据来使用已发布的消息。
- Leader(领导者): Leader 是负责给定分区的所有读取和写入的节点。 每个分区都有一个服务器充当Leader。
- Follower(追随者): 跟随领导者指令的节点被称为Follower。
- 工作流程:
- Kafka只是分为一个或多个分区的主题的集合
Kafka只是分为一个或多个分区的主题的集合。 Kafka分区是消息的线性有序序列,其中每个消息由它们的索引(称为偏移)来标识。 Kafka集群中的所有数据都是不相连的分区联合。 传入消息写在分区的末尾,消息由消费者顺序读取。 通过将消息复制到不同的代理提供持久性。
- Kafka只是分为一个或多个分区的主题的集合
- 队列消息/用户组的工作流
- 订阅具有相同 Group ID 的主题的消费者被认为是单个组,并且消息在它们之间共享。 让我们检查这个系统的实际工作流程。
- ZooKeeper的作用:
- Zookeeper是Kafka代理和消费者之间的协调接口。 Kafka服务器通过Zookeeper集群共享信息。 Kafka在Zookeeper中存储基本元数据,例如关于主题,代理,消费者偏移(队列读取器)等的信息。