网站建设公司哪家好 地址磐石网络,免费 建网站,百度扫一扫网页版,江苏建设厅官方网站1、Kafka是什么#xff1f;
Kafka是由Scala语言开发的一个多分区、多副本#xff0c;基于Zookeeper集群协调的系统。 那这个所谓的系统又是什么系统呢#xff1f; 回答这个问题要从发展的角度来看#xff1a;起初Kafka的定位是分布式消息系统。但是目前它的定位是一个分布…1、Kafka是什么
Kafka是由Scala语言开发的一个多分区、多副本基于Zookeeper集群协调的系统。 那这个所谓的系统又是什么系统呢 回答这个问题要从发展的角度来看起初Kafka的定位是分布式消息系统。但是目前它的定位是一个分布式流式处理平台用于实时数据集成和流数据处理。
2、Kafka都可以扮演哪些“角色”
基于Kafka的发展和特性它可以在我们的实际工作当中扮演以下几个“角色”
消息系统存储系统将消息持久化到磁盘上。流式处理平台可以集成多种流式处理框架例如SparkStream、Flink等不但可以作为可靠的数据源同时提供了一套完整的流处理类库例如窗口、连接、交换和聚合等操作。
3、Kafka的体系架构
Kafka体系架构包括生产者Producer、消费者Consumer、服务代理节点Broker、一个Zookeeper集群。 生产者Producer 作为消息的发送方。负责创建消息并将消息发送给Broker。 消费者Consumer 作为消息的接收方。负责连接Kafka并接收消息进而进行相应的逻辑处理。 代理服务节点Broker 可以看做一个Kafka实例多个Broker组成一个Kafka集群。 Zookeeper集群 Zookeeper用来负责Kafka集群的元数据管理和控制器的选举等操作。
让我们进一步来描述Producer、Consumer、Broker之间的关系以及作用 Producer创建消息并将消息发送给BorkerBroker将接收到的消息存储到本地的磁盘上Consumer负责在Broker上订阅并消费消息。 4、主题、分区、副本
Kafka中有三个重要的概念主题、分区和副本。它们之间的关系如下图 通过上图我们可以得知 1个主题对应多个分区一个分区对应多个副本副本又分为一个leader副本和多个follower副本。 4.1、主题
主题是一个逻辑概念我们可以把它当做消息的分类。Producer发送消息的时候会指明该消息所属的主题即可以理解为Producer是将消息发送给了主题一个消息只属于一个主题。
4.2、分区
一个主题下会细分为多个分区每个分区对应一个主题。消息在分区中的以offset偏移量作为唯一标识。Kafka通过offset来保证消息在分区中的顺序。offset不能跨区所以我们说分区是有序的而主题是无序。分区可以分布在不同的broker上。
4.3、副本 一个分区会有多个副本副本中的消息都是一致的同一时刻可能会有不一致的情况。 副本之间的关系是“一主多从”即一个leader副本和多个follower副本。 leader副本负责消息的读写。follower副本负责同步leader副本。 副本被分布到不同的broker上leader副本挂掉了会从follower副本中重新选举出一个新的leader副本。 我们将分区中所有副本统称为ARAssigned Replicas。其中一些与leader副本保持一定程度同步的副本包括leader副本本身统称为ISRIn-Sync Replicas。而另外一些相较于leader副本滞后很多的副本统称为OSROut-of-Sync Replicas。 由此可见AR ISR OSR。正常情况下所有follower副本都要与leader版本保持一定程度的同步即AR ISR而OSR集合为空。 默认情况下leader副本只能从ISR中的副本中选举出来。但是我们可以通过参数配置使得OSR中的副本也有机会被选举为leader副本。 leader副本还负责所有follower副本滞后状态的维护和跟踪即当follower副本滞后较多的时候会将它从ISR中移动到OSR中也会将OSR中追上leader副本的follower副本移动到ISR中。 特定偏移量HW和LEO。 针对分区有一个概念为高水位High Watermark缩写HW它是一个特定的消息偏移量offset消费者只能接收到offset之前的消息ISR中的每个follower副本都维护一个自己的LEOLog End Offset它也是一个特定的消息偏移量offset即待写入消息的偏移量。 HW与LEO之间的关系如下图 通过上图我们可以得知分区的HW是通过ISR中最小的LEO得出的。
4.4、如何避免Consumer宕机重启后的消息丢失
Consumer是通过拉Pull模式从服务端拉取消息的同时会在Consumer端记录下消费的具体位置当Consumer宕机重启后会根据之前记录的消费位置重新拉取需要的信息进行消费。
下一篇Kafka之生产者