【大数据】Kafka 入门指南

Kafka 入门指南

  • 1.Kafka 简介
  • 2.Kafka 架构
  • 3.分区与副本
  • 4.偏移量
  • 5.消费者组
  • 6.总结

1.Kafka 简介

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

通常用作消息队列和流处理,作为消息队列的时候,竞品有 RabbitMQActiveMQRocketMQApache Pulsar 等。

2.Kafka 架构

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

  • Producer生产者):生产者负责将消息发送到 Kafka 集群。
  • Consumer消费者):消费者负责从 Kafka 集群中拉取并消费消息。
  • 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 集合统称为 ARAssigned Replicas已分配的副本),包含 Leader Replica 和 Follower Replica。与 Leader Replica 保持同步的 Replica 集合称为 ISRIn-Sync Replicas同步副本),与 Leader Replica 保持失去同步的 Replica 集合称为 OSROut-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 为了记录副本的同步状态,以及控制消费者消费消息的范围,于是引入了 LEOLog End Offset日志结束偏移量)和 HWHigh 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 两条消息。

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

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

在这里插入图片描述
所有消息都同步完成,三个副本的 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(跟随者副本)、LEOLog End Offset,日志结束偏移量)、HWHigh Watermark,高水位)、Consumer Group(消费者组)等。下篇文章再接着介绍 Kafka 如何解决消息丢失、重复消费、顺序消息、持久化消息、Leader 选举过程等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/129572.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python类的概念

类 类的技术名词解释 ● 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 ● 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用…

CSP 201312-1 出现次数最多的数

答题 用两个map&#xff0c;一个map记录每个数出现的次数并降序排序&#xff0c;另一个map将次数作为键&#xff0c;数本身作为值&#xff0c;降序排序&#xff0c;搞定 #include<iostream> #include<map> using namespace std; int main(){map<int,int,great…

git 合并分支某次(commit)提交

需求&#xff1a;将develop分支某次提交合并到master上面&#xff0c;其他修改不同步&#xff1b; //切换到master分支 git checkout master //查看develop分支提交记录&#xff0c;获取对应记录哈希值&#xff1b; git log develop // 按上下按钮可以上下查询对应记录&#xf…

获取该虚拟机的所有权失败,主机上的某个应用程序正在使用该虚拟机

点击“openstack-controller”虚机 打开出现如下错误&#xff0c;点击“获取所有权” 点击“取消” 这时候不要删除虚拟机&#xff0c;这种错误一般是由于虚拟机没有正常关闭引起的。 找到openstack-controller的虚拟磁盘文件及配置文件存放的位置&#xff0c;删除openstack-…

SpringBoot学习笔记(项目创建,yaml,多环境开发,整合mybatis SMM)

一、SpringBoot入门 1.1 SpringBoot概述 SpringBoot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化Spring应用的初始搭建以及开发过程。 Spring程序缺点&#xff1a;配置繁琐&#xff0c;依赖设置繁琐。SpringBoot程序优点&#xff1a;自动装配&#xff0c…

linux安装postgresql13

linux安装postgresql13 1. 安装postgresql131.1 安装1.2. 数据库初始化1.3.配置远程访问1.3.1 修改配置文件1.3.2 重启服务1.3.3 测试连接 1.4 卸载 2. 安装Postgis2.1 安装2.2 为数据库添加postgis2.2.1 查看文件2.2.2 为数据库添加postgis2.2.3 创建操作系统用户 3. 安装pgAd…

文件上传漏洞案例

目录 1.案例一 1&#xff09;案例源码 2&#xff09;创建web.php文件 3&#xff09;使用抓包软件 2.案例二 1&#xff09;案例代码 2&#xff09; 案例分析 3&#xff09;copy命令生成图片马 4&#xff09;上传图片马到服务器 5&#xff09;解析 文件图片 3.案例三 …

阿里云2核4G服务器5M带宽5年费用价格明细表

阿里云2核4G服务器5M带宽可以选择轻量应用服务器或云服务器ECS&#xff0c;轻量2核4G4M带宽服务器297元一年&#xff0c;2核4G云服务器ECS可以选择计算型c7、c6或通用算力型u1实例等&#xff0c;买5年可以享受3折优惠&#xff0c;阿腾云分享阿里云服务器2核4G5M带宽五年费用表&…

分布式AKF拆分原则

目录 1 前言2 什么是AKF3 如何基于 AKF X 轴扩展系统&#xff1f;4 如何基于 AKF Y 轴扩展系统&#xff1f;5 如何基于 AKF Z 轴扩展系统&#xff1f;6 小结 1 前言 当我们需要分布式系统提供更强的性能时&#xff0c;该怎样扩展系统呢&#xff1f;什么时候该加机器&#xff1…

驱动开发--day2(内核不同模块的相互访问、字符设备驱动、led控制实验代码及现象)

实现三盏灯的控制&#xff0c;编写应用程序测试 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define LED1_MODER 0X50006000 #define LED1_ODR 0X50006014 #define LED1_RCC 0X50000A28#define LED2_MODER 0X50007000 #define LED2_ODR 0X50007014#endif mychrdev.c #inc…

YOLOv5算法改进(16)— 增加小目标检测层

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。小目标检测层是指在目标检测任务中用于检测小尺寸目标的特定网络层。由于小目标具有较小的尺寸和低分辨率&#xff0c;它们往往更加难以检测和定位。YOLOv5算法的检测速度与精度较为平衡&#xff0c;但是对于小目标的检测效…

电容笔值不值得买?开学季比较好用的电容笔

眼看着新学期即将到来&#xff0c;到底应该选择什么样的电容笔&#xff1f;一款原装的苹果Pencil&#xff0c;就卖到了将近一千块&#xff0c;这对于很多人来说&#xff0c;都是一个十分昂贵的价格。事实上&#xff0c;由于平替电容笔的价格非常便宜&#xff0c;只要一二百元就…

Shell命令管理进程

Shell命令管理进程 列出进程 ps命令 top命令 管理后台进程 启动后台进程 查看后台进程 jobs和ps的区别 停止进程 Linux除了是一种多用户操作系统之外&#xff0c;还是一种多任务系统。多任务意味着可以同时运行多个程序。Linux 提供了相关的工具来列出运行中的进程,监视…

库的相关操作

目录 一、创建数据库 1&#xff0c;创建数据库规则 2、创建案例 二、字符集和校验规则 1、查看系统默认字符集以及校验规则 2、查看数据库支持的字符集以及校验规则 3、校验规则对数据库的影响 三、操纵数据库 1、查看数据库和目前所在数据库 2、显示创建语句 3、修改数据库 4、…

windows环境下node安装教程(超详细)

安装node.js 1、下载node: 下载地址&#xff1a;下载 | Node.js 中文网 node.js的zip包安装时是直接解压缩后就可以了, node.js的msi包是傻瓜式一路next就可以了 选择一中方式就可以 2、解压后的目录,或者mis安装后的目录如下: 3、安装完后&#xff0c;可以在命令行中输入…

c高级day4(9.11)shell脚本(case ....in语句,循环语句,select ...in和case...In结合,辅助控制关键字,函数)

1.实现一个对数组就和的函数&#xff0c;数组通过实参传递给函数 2.写一个函数&#xff0c;输出当前用户的uid和gid&#xff0c;并使用变量接收结果 #!/bin/bash read -a arr sum0 function add() { …

【易盾点选】

拿官网的点选做个例子吧&#xff0c;比较省事&#xff0c;水一篇~ ​ 官网的接口目前都改成V3了&#xff0c;多了个dt参数&#xff0c;以及加密的一个函数也变动了下 点选坐标在这&#xff0c;加密函数未变&#xff0c;用逗号拼接 整个加密里的函数变了&#xff0c;直接重新…

RedisJava基础代码实现

Jedis快速入门 <!--jedis--> <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version> </dependency> <!--单元测试--> <dependency><groupId>org.ju…

人工智能AI 全栈体系(一)

第一章 神经网络是如何实现的 这些年人工智能蓬勃发展&#xff0c;在语音识别、图像识别、自然语言处理等多个领域得到了很好的应用。推动这波人工智能浪潮的无疑是深度学习。所谓的深度学习实际上就是多层神经网络&#xff0c;至少到目前为止&#xff0c;深度学习基本上是用神…

华为云云耀云服务器L实例评测|有关华为云云耀云服务器L实例你可能不知道的事情

前言 最近华为云推出了华为云云耀云服务器L实例。主打一个轻量级云服务器&#xff0c;即开即用&#xff0c;轻松运维&#xff0c;开启简单上云第一步。具有智能不卡顿&#xff0c;价优随心用&#xff0c;上手更简单&#xff0c;管理特省心。 在推出的第一时间我就买了一台来耍…