kafka要点概括

(一)前言

kafka和普通消息队列的比较:

1、类似点:和消息队列一样可以订阅发布数据

2、不同点:

(1)kafka以集群的方式不是,可以自由伸缩,处理公司所有的应用程序

(2)kafka可以按照要求存储数据,保存多久都可以

(3)流式处理将数据处理的层次提高到了新高度


kafka和Hadoop的比较

    kafka是实时流式数据处理,适用应用于业务系统,Hadoop更擅长数据分析


kafka和其他数据集成工具的比较

    kafka不仅仅是简单地将数据从一个系统塞到另一个系统,还能加强这些触发相同数据流的应用。

(二)kafka基础知识

1、消息和批次

(1)消息:消息即为kafka中的数据单元

(2)批次:为提升吞吐量,减少IO,消息分批写入kafka,这些消息属于同一个主题和分区

2、模式(消息格式)

模式:消息的格式。生产端和消费端可以各自制定消息格式,消除了消息读和写的耦合性。

3、主题和分区

(1)主题:kafka的消息通过主题分类。

(2)分区:一个主题被分为若干个分区,消息以追加的方式写入分区,然后以先入先出的顺序读取,因此可以保证消息在单个分区内的顺序。但是整个主题的消息顺序是不能保证的。

4、生产者和消费者

(1)用户:kafka的客户端就是kafka系统的用户

(2)用户类型之消费者:读取消息,订阅一个或多个主题,并按照消息生成的顺序读取他们(某个

分区内部),通过检查偏移量(offset)来区分已经读过的消息。

a、偏移量:kafka添加消息时会将其添加到消息里,每个分区有一个偏移量,是一个递增的数值。消费者读取消息时将最后读取的偏移量保存在zookeeper或者kafka上,消费者重启或关闭其偏移量不会丢失。

b、消费者组:消费者属于消费者组。一个或多个消费者读取同一个主题,但群组保证每个分区只能被一个消费者消费。如果一个消费者失效,群组中的其他消费者可以接管消费者的工作。

(3)用户类型之生产者:创建消息,将消息发送到特定主题的某个分区(默认是均衡地发布到所有分区)

5、broker和集群

(1)broker:一个独立的kafka服务器被称为broker,broker接收来自生产者的消息,为消息设置偏移量,并提交到磁盘保存。为消费者提供服务,对读取分区的请求做出相应,返回已经提交到磁盘的消息。

(2)集群:broker的集合。每个集群都有一个broker同时充当了集群控制器的角色(选举)。负责管理工作:将分区分配给broker;监控broker。

(3)broker和分区的关系:一般,一个分区从属于一个broker,broker成为这个分区的首领。但是可以将一个分区分配给多个broker,此时会发生分区复制,如果有个broker失效,其他broker可以接管领导权。这时相关的消费者和生产者需要重新连接到新的首领。

(4)保留消息:主题可以配置自己的消息保留多久

(三)为什么选择kafka

1、多个生产者

2、多个消费者:不同消费者可以消费同一份数据,但是同一消费者组共享消息,保证同一份消息对于同一个消费者组只能被消费一次。

3、基于磁盘的数据存储:每个主题设置不同的数据存储规则(按时长,按消息量),消费者出现故障或者业务高峰期不用担心数据丢失

4、伸缩性:用户可以随着数据量的变化变更broker的数量。

5、高性能:以上几点保证了kafka成为一个高性能的发布与订阅消息系统。

你可能感兴趣的:(kafka要点概括)