Kafka知识整理

1、Kafka相关概念

1.1 topic 是消息归纳的基本单位,是一个逻辑概念。 kafka中消息按照topic进行归纳,也就是分类,同一类消息放在同一个topic中,如日志可以有业务A日志,有业务B日志,那么针对业务A和业务B的日志可以建两个topic。

1.2  producer 生产者,负责往topic中写消息

1.3 consumer 消费者,负责从topic中消费消息

1.4 broker 为kafka的服务器,是kafka运行的基本单位,通常集群部署

1.5 partition是topic实际存储的位置,一个topic对应多个partition,也可以只有一个partition。

2、Kafka运行原理

     如下图看出一个topic有多个分区,producer根据topic不断往分区中写入数据,consumer设置一个offset从topic取出消息。consumer可以读取已经读取过的消息,kafka不会将已经读取过的消息删除,为了避免消息过多,kafka根据设置的清理时间去定时清理数据。

     kafka的优势在于存在多个分区,可以并发写入数据,大大提高了写入速度。而是否多分区对于读的速度没有任何影响,因为即便一个分区读的时间复杂度也为O(1)。

     kafka的运行过程:

     1)producer写入数据时候,需要指定topic、broker的ip、分区

     2)kafka根据key值对应的hashcode将topic写入特定的分区

     3)写入完成后通知followers同步消息,followers同步完成后通知consumer消费消息。

3、kafka的存储

      kafka的一个topic存储在多个partition,一个partition由多个文件系统组成,如果一个文件系统超过设置最大值后,数据会新建一个新的文件系统,将数据写入其中。文件系统消息的id跟存储逻辑id密切相关,所以kafka读的速度很快,时间复杂度是一个常量级别。

    kafka存储位置及两个文件的说明,偏移值所在的位置等。

4、kafka的集群

    为了避免一个broker挂掉,影响业务的运行,对kafka进行集群部署(实际部署了几个),集群中一个节点作为leader,其他为followers,任意一个节点充当两个角色,一个是leader,供其他节点负责消息,另外follower,复制其他节点的消息。有消息写入时候,先写入leader,然后同步到followers,同步完成后,再通知consumer消费消息。显然同步的过程影响性能,但是为了系统的可靠性,这点牺牲是必须的。

       为了保证leader平均分在各个broker节点,因此集群数量最好等于分区的数量。

5、consumers组

     消息的传递方式有两种

     1)队列方式

     2)发布订阅方式

     consumer可以进行分组,一个组中的consumer只能消费一个partition,若只有一个consumer组,那么这些consumer是按照队列方式去消费。若有多个组,组内的consumer按照队列方式消费,组之间的consumer按照发布订阅方式消费。由于一个consumer组只能消费一个partition中的消息,为了保证每个consumer组都能消费到消息,consumer组的数量不能大于partition的数量。


6、kafka的存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值