第九天 Kafka的一些总结
Kafka中的基本概念
1:Topic 这个是kafka中的一个抽象概念,kafka按照topic来维护消息
2:Producer生产者,把我们的消息发送到kafka
3:Consumer消费者,消费我们发送到kafka的消息
4:Broker:kafka是以集群的方式运行的,每一个机器可以称为一个broker【每一个kafkfa节点,有可能一个机器部署了多个kafka实例】
5:Zookeeper kafka对zk是强依赖,每个消费组【consumer group】消费的offset和集群状态,消费者状态,broket状态,都在zk中注册,包括partition 副本leader的选举【其实这个选举很简单就是在zk中写一个临时节点,那个写成功了,那个就是leader,当成为leader的partition挂掉了,那临时节点也就消失了,所以其他follwer有可以竞争来写这个临时节点】
从高的层面来说 ,producer吧消息发送到kafka集群,然后consumer来消费,大致如图
Partition:前面我们提到Topic是kafka抽象的一个概念,可以理解为 kafka就是一个类别的名称,而且对于每一个 topic数据是保存到topic下面的partition里面的
其实每个 partition相当于一个 Queue,因为一个 Topic可能有多个Partition所以 Topic相当于一个 Queue的集合,partition是一个有序的message队列,这些消息会按照顺序添加到一个commit log的文件中,而且每个 partition中的消息都有一个唯一的标号,那就是offset
注意:每个partiton都对应一个 commit log 所有 一个topic有多个 commit log,而且每个partition中的message的offset是唯一的不重复的,但是不同的partition的offset是可以重复的,
kafka消息保存的时间:这个是在kafka中配置的,比如我们设置的message保存时间是3天 ,那么三天以内的数据都不会被清除掉,所以可以被多次消费
consumer:
每个consumer都是基于commit log中的消费度 offset来进行工作的 ,在 kafka中 offset是有 consumer来维护的,一般情况下 我们是按照顺序消费commit log中的消息,但是我们可以通过指定offset来重复消费或者跳过一些去消费,所以在kafka中 consumer对kafka集群的音响很小,多一个 consumer和少一个其实没有什么区别,
Consumer group :消费组
传统的队列一般有两种模式 ·1:Queuing 队列,2:publish-subscribe 广播,
在Queuing 模式下,多个consumer从服务器获取消息,消息只能到达一个 consumer,但是publish-subscribe广播模式下消息会被广播给所有consumer,所有kafka基于这两种模式提供了consumer的抽象概念 Consumer group 消费组
consumer消费组,Consumer group包含了一个或者多个 consumer【注意consumer的个数不能大于partition的个数,kafka中 一个partition只能同时为一个 consumer提供服务】,
每个consumer都有属于自己的 consumer group,发送到kafka的topic的信息会被送到consumer group中的一个 consumer来消费, 而且每个consumer group 自己维护自己的offset消费度【每个consumer group在启动的时候都会在zk下面注册一个节点来存放自己的信息,比如offset,这也是kafka能有广播模式的原因】
消费顺序
kafka有着比传统消费队列更严格的消费顺序,比如我们以前经常使用的mq,可以有多个consumer同时消费,虽然在mq上看是按照顺序的 ,但是因为 consumer是不同的,所以消息发送到每个consumer是有先后的,有可能mq先发送的消息,后到达了consumer,但是kafka不一样,kafka中 partition同时只能有一个consumer来消费【这也是为什么 kafka中 consumer不能大于partition的原因】,所以不会出现上面说的那种先发送消息后到达的情况【因为只有consumer提交了offset kafka才会在发送数据,】但是我们要特别注意:kafka的消费顺序不是topic级别的,是partiton级别的【因为 一个partition只能有一个 consumer】,多个partition的消费其实是没有顺序的 ,这个要特别注意
下面是一张个人话的 kafka图,包含来 produce,consumer,zk他们是怎么运行的
上面图太大如果看不清 可以看这个原图

浙公网安备 33010602011771号