面试专题:简述Kafka架构设计

Kafka的特性:

  • 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。
  • 可扩展性:kafka集群支持热扩展
  • 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
  • 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
  • 高并发:支持数千个客户端同时读写

Consumer Group:

消费者组,消费者组内每个消费者负责消费不同分区的数据,提高消费能力。逻辑上的一个订阅者。

Topic:

可以理解位一个队列,Topic 将消费分类,生产者和消费者面向的是同一个 Topic。

Partition:

为了实现扩展性,提高并发能力,一个 Topic 以多个 Partition的方式分布到多个 Broker 上,每个 Partition
是一个有序的队列。一个 Topic 的每个 Partition 都有若干个副本(Replica),一个 Leader 和若干个
Follower。生产者发送数据的对象,以及消费者消费数据的对象,都是 Leader。 Follower 负责实时从 Leader
中同步数据,保持和Leader 数据的同步。Leader 发生故障时,某个 Follower 还会成为新的 Leader。

Offset:

消费者消费的位置信息,监控数据消费到什么位置,当消费者挂掉再重新恢复的时候,可以从消费位置继续消费。

Zookeeper:

Kafka 集群能够正常工作,需要依赖于 Zookeeper,Zookeeper帮助 Kafka存储和管理集群信息。Broker
和Topic 注册到 Zookeeper,生成 Znode 的临时节点。Broker 、Topic、Offset
和Partition的关系,包括 Consumer 的关联关系,都是存储到 zk 的。Leader 节点的选举模式也是使用Zookeeper
的选举机制。

猜你喜欢

转载自blog.csdn.net/lxn1023143182/article/details/115022499