您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

超简单的Kafka架构入门指南,看这一篇就够了

时间:2023-05-08 14:19:15  来源:  作者:一灯架构

1. Kafka简介

Apache Kafka 是一种高吞吐、分布式的流处理平台,由 LinkedIn 开发并于 2011 年开源。它具有高伸缩性、高可靠性和低延迟等特点,因此在大型数据处理场景中备受青睐。Kafka 可以处理多种类型的数据,如事件、日志、指标等,广泛应用于实时数据流处理、日志收集、监控和分析等领域。

通常用作消息队列和流处理,作为消息队列的时候,竞品有RabbitMQ、ActiveMQ、RocketMQ、Apache Pulsar等。

2. Kafka架构

下面介绍一下Kafka架构中最重要的三个参与者:

  1. Producer(生产者):生产者负责将消息发送到 Kafka 集群。
  2. Consumer(消费者):消费者负责从 Kafka 集群中拉取并消费消息。
  3. Broker(代理节点):Broker 是 Kafka 集群中的一个服务代理节点,可以看作是一台服务器。Kafka 集群通常由多个 Broker 组成,以实现负载均衡和容错。

图片

3. 分区与副本

Kafka为了对消息进行分类,引入了Topic(主题)的概念。生产者在发送消息的时候,需要指定发送到某个Topic,然后消息者订阅这个Topic并进行消费消息。

Kafka为了提升性能,又在Topic的基础上,引入了Partition(分区)的概念。Topic是逻辑概念,而Partition是物理分组。一个Topic可以包含多个Partition,生产者在发送消息的时候,需要指定发送到某个Topic的某个Partition,然后消息者订阅这个Topic并消费这个Partition中的消息。

Kafka为了提高系统的吞吐量和可扩展性,把一个Topic的不同Partition放到多个Broker节点上,充分利用机器资源,也便于扩展Partition。

Kafka为了保证数据的安全性和服务的高可用,又在Partition的基础上,引入Replica(副本)的概念。一个Partition包含多个Replica,Replica之间是一主多从的关系,有两种类型Leader Replica(领导者副本)Follower Replica(跟随者副本),Replica分布在不同的Broker节点上。

Leader Replica负责读写请求,Follower Replica只负责同步Leader Replica数据,不对外提供服务。当Leader Replica发生故障,就从Follower Replica选举出一个新的Leader Replica继续对外提供服务,实现了故障自动转移。

下图展示的是,同一个Topic的不同Partition在Broker节点的分布情况:

图片

Kafka为了提升Replica的同步效率和数据写入效率,又对Replica进行分类。针对一个Partition的所有Replica集合统称为AR(Assigned Replicas,已分配的副本),包含Leader Replica和Follower Replica。与Leader Replica保持同步的Replica集合称为ISR(In-Sync Replicas,同步副本),与Leader Replica保持失去同步的Replica集合称为OSR(Out-of-Sync Replicas,失去同步的副本)AR = ISR + OSR

Leader Replica将消息写入磁盘前,需要等ISR中的所有副本同步完成。如果ISR中某个Follower Replica同步数据落后Leader Replica过多,会被转移到OSR中。如果OSR中的某个Follower Replica同步数据追上了Leader Replica,会被转移到ISR中。当Leader Replica发生故障的时候,只会从ISR中选举出新的Leader Replica。

4. 偏移量

Kafka为了记录副本的同步状态,以及控制消费者消费消息的范围,于是引入了LEO(Log End Offset,日志结束偏移量)HW(High Watermark,高水位)。

LEO表示分区中的下一个被写入消息的偏移量,也是分区中的最大偏移量。LEO用于记录Leader Replica和Follower Replica之间的数据同步进度,每个副本中各有一份。

HW表示所有副本(Leader和Follower)都已成功复制的最小偏移量,是所有副本共享的数据值。换句话说,HW之前的消息都被视为已提交,消费者可以消费这些消息。用于确保消息的一致性和只读一次。

下面演示一下LEO和HW的更新流程:

  1. 初始状态,三个副本中各有0和1两条消息,LEO都是2,位置2是空的,表示是即将被写入消息的位置。HW也都是2,表示Leader Replica中的所有消息已经全部同步到Follower Replica中,消费者可以消费0和1两条消息。

图片

  1. 生产者往Leader Replica中发送两条消息,此时Leader Replica的LEO的值增加2,变成4。由于还没有开始往Follower Replica同步消息,所以HW值和Follower Replica中LEO值都没有变。由于消费者只能消费HW之前的消息,也就是0和1两条消息。

图片

  1. Leader Replica开始向Follower Replica同步消息,同步速率不同,Follower1的两条消息2和3已经同步完成,而Follower2只同步了一条消息2。此时,Leader和Follower1的LEO都是4,而Follower2的LEO是3,HW表示已成功同步的最小偏移量,值是3,表示此时消费者只能读到0、1、2,三条消息。

图片

  1. 所有消息都同步完成,三个副本的LEO都是4,HW也是4,消费者可以读到0、1、2、3,四条消息。

图片

5. 消费者组

Kafka为了提高消息的处理效率,引入了消费者组的概念。一个消费者组(Consumer Group)包含多个消费者,一个消费者组可以同时订阅多个Topic,一个Topic也可以同时被多个消费者组订阅。

为了保证同一个Partition的消息被顺序处理,针对一个消费者组,一个Partition的消息只会交给这个消息者组的一个消费者处理。

图片

6. 总结

本文简单介绍了Kafka架构,以及架构中涉及到底的一些名词概念,包括Producer(生产者)、Consumer(消费者)、Broker(代理节点)、Topic(主题)、Partition(分区)、Leader Replica(领导者副本)、Follower Replica(跟随者副本)、LEO(Log End Offset,日志结束偏移量)、HW(High Watermark,高水位)、Consumer Group(消费者组)等。

 



Tags:Kafka   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1. Kafka简介Apache Kafka 是一种高吞吐、分布式的流处理平台,由 LinkedIn 开发并于 2011 年开源。它具有高伸缩性、高可靠性和低延迟等特点,因此在大型数据处理场景中备受青...【详细内容】
2023-05-08  Tags: Kafka  点击:(0)  评论:(0)  加入收藏
Kafka通过使用“long polling”等待模式的方式解决了这个问题。简而言之,如果分区上没有数据,Kafka 不会返回空响应。相反,broker保持连接并等待数据进入,然后再将其返回给消费...【详细内容】
2023-02-10  Tags: Kafka  点击:(73)  评论:(0)  加入收藏
今天我们花了一些时间讨论 Kafka 提供的冷门功能:拦截器。如之前所说,拦截器的出场率极低,以至于我从未看到过国内大厂实际应用 Kafka 拦截器的报道。但冷门不代表没用。事实上...【详细内容】
2023-02-03  Tags: Kafka  点击:(94)  评论:(0)  加入收藏
Apache Kafka 是一个开源的分布式事件流平台,被众多公司用于高性能数据管道、流分析、数据集成等。本章将讨论 kafka 的自动化部署。 什么是事件流: “事件流” 是按时间排序...【详细内容】
2023-01-24  Tags: Kafka  点击:(74)  评论:(0)  加入收藏
Zookeeper 和 KRaft这里有一篇 Kafka 功能改进的 proposal 原文。要了解移除 ZK 的原因,可以仔细看看该文章。以下是对该文章的翻译。动机目前,Kafka 使用 Zookeeper 保存与分...【详细内容】
2022-12-27  Tags: Kafka  点击:(83)  评论:(0)  加入收藏
使用在 Kubernetes 上运行的 Kafka 在 API 端点之间流式传输消息。 Apache Kafka 不仅仅是一个消息传递代理。它有一个由不同组件组成的丰富生态系统。有用于导入和导出数据...【详细内容】
2022-09-28  Tags: Kafka  点击:(101)  评论:(0)  加入收藏
每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。 如何使用 Apache Kafka 实现请求-响应消息交换模式,优缺点,以及与 CQRS 和...【详细内容】
2022-09-25  Tags: Kafka  点击:(143)  评论:(0)  加入收藏
Apache Kafka 中用于错误处理的死信队列:来自 Uber 和 Crowdstrike 的替代方案、最佳实践和案例研究。识别和处理错误对于任何可靠的数据流管道都是必不可少的。这篇博文探讨...【详细内容】
2022-09-04  Tags: Kafka  点击:(147)  评论:(0)  加入收藏
时间轮是一个高性能、低消耗的数据结构,它适合用非准实时,延迟的短平快任务,例如心跳检测。在Netty、Kafka、Zookeeper中都有使用。时间轮可通过时间与任务存储分离的形式,轻松...【详细内容】
2022-08-23  Tags: Kafka  点击:(128)  评论:(0)  加入收藏
虽然两者都提供了各自的优势,而且各自都非常有用,但是实际上您应该使用这两者中的哪一个呢?每天‬分享‬最新‬软件‬开发‬,Devops,敏捷‬,测试‬以及‬项目‬管理‬最新‬,最热门...【详细内容】
2022-07-07  Tags: Kafka  点击:(265)  评论:(0)  加入收藏
▌简易百科推荐
1. Kafka简介Apache Kafka 是一种高吞吐、分布式的流处理平台,由 LinkedIn 开发并于 2011 年开源。它具有高伸缩性、高可靠性和低延迟等特点,因此在大型数据处理场景中备受青...【详细内容】
2023-05-08  一灯架构    Tags:Kafka   点击:(0)  评论:(0)  加入收藏
一、网易云音乐实时数仓架构首先,从四个方面介绍云音乐的实时数仓架构:云音乐的实时场景、实时数仓架构、技术架构以及技术选型。1、云音乐的实时场景目前云音乐的实时场景主...【详细内容】
2023-05-06    DataFunTalk  Tags:数仓架构   点击:(6)  评论:(0)  加入收藏
云数据架构的日益流行表明了一个主题:在未来几年,越来越多的企业将把他们的数据中心业务完全迁移到云平台上,因为内部部署数据中心设施具有一些固有的优势。数字时代的业务已经...【详细内容】
2023-05-04     e-works  Tags:架构   点击:(6)  评论:(0)  加入收藏
今天了不起来说说这个关于 Mybatis ,为什么要说 Mybatis 呢?因为现在面试的时候,除了那些最基础的,比如如何防止 SQL 注入,以及 Mybatis 的一级缓存,二级缓存之后,还有一些其他的...【详细内容】
2023-04-28   Java极客技术  微信公众号  Tags:MyBatis   点击:(21)  评论:(0)  加入收藏
一、前言在现代软件开发中,事务处理是必不可少的一部分。当多个操作需要作为一个整体来执行时,事务可以确保数据的完整性和一致性,并避免出现异常和错误情况。在SpringBoot框架...【详细内容】
2023-04-28  小王博客基地  微信公众号  Tags:Spring   点击:(26)  评论:(0)  加入收藏
中间件的定义其实中间件是属于构件的一种。是一种独立的系统软件或服务程序,可以帮助分布式应用软件在不同技术之间共享资源。我们把它定性为一类系统软件,比如我们常说的消息...【详细内容】
2023-04-28  IT动力  今日头条  Tags:软件架构   点击:(17)  评论:(0)  加入收藏
从 kube-scheduler 的角度来看,它是通过一系列算法计算出最佳节点运行 Pod,当出现新的 Pod 进行调度时,调度程序会根据其当时对 Kubernetes 集群的资源描述做出最佳调度决定,但...【详细内容】
2023-04-21   k8s技术圈  微信公众号  Tags:Kubernetes   点击:(17)  评论:(0)  加入收藏
Hello,大家好,我是人月聊IT。前不久阿里的逍遥子在内部的一次会议上面,提出了阿里最新的”1+6+N“的组织机构改革,具体新构建哪些组织机构不是重点,但是里面提到了一个关键点,就是...【详细内容】
2023-04-21  人月聊IT  微信公众号  Tags:架构   点击:(22)  评论:(0)  加入收藏
译者 | 布加迪审校 | 重楼​这几年,微服务革命席卷整个IT界,71%的组织声称2021年之前采用了这种架构。在讨论微服务时,我们常听到其优势在于可以灵活地向客户交付创新成果。但...【详细内容】
2023-04-21  布加迪  51CTO  Tags:微服务   点击:(25)  评论:(0)  加入收藏
前面的文章中介绍了网关集成Spring Security实现网关层面的统一的认证鉴权。 鉴权放在各个微服务中如何做? feign的调用如何做到的鉴权?今天针对以上两个问题深入聊聊如何通过...【详细内容】
2023-04-17  码猿技术专栏  微信公众号  Tags:微服务   点击:(21)  评论:(0)  加入收藏
站内最新
站内热门
站内头条