Kafka文档阅读笔记 1 入门

一  Kafka介绍

Kafka是一个分布式消息系统,用于构建实时数据通道和流应用程序。Kafka具有横向扩展和容错等优点,具有很高的吞吐量,可以处理更大规模的消息。可以应用在网站行为追踪、用户行为追踪、日志聚合等场景。

 

二 核心API

Kafka具有4个核心API,生产者API、消费者API、流处理API、连接器API,生产者API:发布消息到Topic,消费者API:从Topic消费消息,流处理器API:从Topic读取流数据,分析处理后,写入到Topic,连接器API:可以使用连接器API,把数据从一个应用程序或者消息系统导入到Kafka,再从Kafka导入到另外一个应用程序或者消息系统。

 

三 名词解释

Broker:Kafka集群中的每一个节点就是一个Broker。

Topic:消息的类别,主题。它是一个逻辑上的概念,并不物理存在,每个Topic对应于一个或者多个分区,一个分区就是一个消息队列,用来存储消息,消息在分区的位置由偏移量来定位。使用分区,有诸多好处,首先不受单台服务器的制约,可以通过扩展分区处理更大规模的消息,其次分区上的消息可以由多个消费者并行处理,提升并行处理的能力。

 

四 分布式

分区分布在集群的Broker上,每个Broker单独处理自己负责的分区。每个分区都有一个Leader,0或者多个Follower,Leader处理消息的读写请求,Folower仅仅被动的复制数据。当Leader宕机后,会选择其他的Folower充当Leader,来负责处理消息的读写请求。为了均衡负载,通常一个Broker是一个分区的Leader,也是其他分区的Follower,避免大量的读写请求落在某一小部分Broker上。

 

五 生产者

生产者发布消息的时候,需要指定发布的分区,可以获取分区列表轮流选择分区来发布消息,也可以使用开发者提供的分区算法来选择分区发布。消息发布时,先写入分区的Leader所在节点的磁盘,再复制到集群,来保证容错。

 

六 消费者

消费者的消费模型通常有两种模式:队列模式和发布订阅模式,队列模式:消息只能由一个消费者消费,发布订阅模式:消息由所有的订阅者消费。为了支持这两种模式,Kafka抽象出一个消费者组的概念,在不同的消费者组间,消息是发布订阅模式,在同一个消费者组里,消息是队列模式。如果所有的消费者均在不同的消费者组里,那么就是一种发布订阅模式,如果在同一个消费者组里,那么就是队列模式。消费者组里的消费者,均摊分区,当一个消费者组里消费者的数量小于分区的数量时候,那么有的消费者需要消费多个分区,当一个消费者组里消费者的数量等于分区的数量时候,每个消费者消费一个分区,当消费者组中消费者的数量大于分区数量时候,就会有的消费者处于空等待情况,我们要避免最后一种情况。在一个非消费者组里,在分区的角度上消息是并行,一个分区虽然只有一个消费者,但是一个Topic对应多个分区,还是有多个消费者在消费同一个Topic。Kafka消费者组还解决了一个传统消息系统的一个问题,那就是消息消费的无序问题,因为消息中间件发送给一个消费者消息后会把下一个消息发送给另外一个消费者,无法保证先发送出去的消息被先消费掉,这就产生消费无序问题,在Kafka同一个消费者组中不存在该问题,因为一个分区在一个组里只能有一个消费者处理,但是Kafka不能保证跨越分区的顺序。

 

七 Kafka的保证

发送到Kafka的同一个Topic的同一个分区的消息是有序的,消息到的越早,偏移量越小。在消费的时候也是按这种顺序消费。当一个Topic有N个复制因子时候(最大为Broker数量),最多允许N-1个节点宕机,而不丢失消息。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值