Kafka是一个分布式的消息引擎系统和流式处理系统。
关于消息引擎系统,它主要提供一套完备的消息发布和订阅的解决方案。
基本概念
基本术语 | 描述 |
---|---|
Broker | 一个Kafka进程,一般每台机器上部署一个实例 |
Record | 指Kafka中的消息记录 |
Topic | 消息的发布和订阅是以Topic(主题)的形式进行的,可以为每一个业务或应用或一类数据创建专属的Topic |
Producer | 生产者,指生产并发布消息到Topic的客户端,可以向一个或多个Topic发布消息 |
Consumer | 消息者,指订阅并消费指定Topic的客户端,可同时订阅几个Topic的消息 |
Partition | 分区,一个Topic可以分成多个分区,类似MD,ES中的shard,Hbase中的Region。分区号从0开始,每个分区是一组有序的消息日志 |
Replication | 备份机制,每个分区可以备份到多台机器上 |
Replica | 副本,分区的数据备份。分为Leader Replica(领导者副本),对外提供服务,与客户端交互;Follower Replica(副本),被追随领导者,更新数据,不提供服务 |
Offset | 分区中每条消息的位置信息,是一个单调递增且不变的值 |
Consumer Offset | 消费者消费的进度,每个消费者有自己的消费位移 |
Consumer Group | 消费者组,由多个消费者组成共同消费一个Topic中的数据,每个分区一般对应一个消费者,多个消费者同时消费多个分区实现高吞吐 |
Rebalance | 重平衡,消费者组中某个消费实例挂了,其它活着的实例重新分配订阅主题分区的过程,kafka实现高可用的重要手段 |
kafka三层消息架构
第一层是主题层,每个主题可以配置 M 个分区,而每个分区又可以配置 N 个副本。
第二层是分区层,每分区的N个副本只能有一个充当领导者副本,提供对外服务;其它N-1个是追随者副本,只能是数据冗余之用。
第三层是消息层,每个分区包括若干条消息,每条消息的位移从0开始,依次递增。
客户端只能和分区中的领导者副本进行交互。
网友评论