深入理解kafka核心设计与实践原理_读书笔记 第8章 可靠性探究

GitHub巅峰之作,阿里架构师带你深入理解Kafka:核心设计与实践原理 Kafka是由LinkedIn开发的一个分布式基于发布/订阅的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。自上次遭受了面试官 「Kafka」 的暴击追问后,回来发奋图强,企图“「吊打面试官」”,奈何还是面试官套路深啊,公司内部大佬给小编准备了一份大佬的Kafka内部使用指南,我看了一下,确实是很强,所以也提供给这篇文章的粉丝。 阅读详情

8.1 副本剖析

  • Kafka 0.8 版本开始为分区引入了多副本机制,通过增加副本数量来提升数据容灾能力。同时, Kafka 通过多副本机制实现故障自动转移,在 Kafka 集群中某 broker 节点失效的情况下,仍然保证服务可用。

8.1.1 失效副本

  • 正常情况下,分区的所有副本都处于 ISR 集合中,但是难免会有异常情况发生,从而某些副本被剥离出 ISR 集合中。在 ISR 集合之外, 也就是处于同步失效或功能失效( 比如副本处于非存活状态)的副本统称为失效副本。
  • 怎么判定某个分区是否有副本处于同步失效的状态昵? Kafka 0.9.x 版本开通过唯一broker 端参数replica.lag.time.max.ms 来确定,当 ISR 集合中的 follower副本滞后 leader 本的时间超过参数指定的值时,则判定为同步失败。需要将此 follower 副本剔除出 ISR 集合 具体可以参考图
    在这里插入图片描述

8.1.2 ISR伸缩

  • Kafka 在启动的时候,会开启两个与 ISR有关的定时任务,名称分别为”isr-expiration"和"isr-change-propagation"。"isr-expiration"任务会周期性地检测每个分区是否需要缩减其 ISR集合。

8.1.3 LEO与HW

  • 分析消息中各个副本 LEO与HW的变化情况
    在这里插入图片描述
    在这里插入图片描述

8.2 日志同步机制

  • 日志同步机制的一个基本原则就是:如果告知客户端已成功提交了某条消息,那么即使leader宕机,也要保证新选举出来的 leader 中能够包含这条消息。 这里就有一个需要权衡( tradeoff)的地方,如果leader 在消息被提交前需要等待更多 follower 确认,那么在它宕机之后就可以有更多的follower 替代它,不过这也会造成性能的下降。

8.3 可靠性分析

  • 怎样可以确保 Kafka 完全可靠?[面试重点]

    • 1、副本数。越多的副本数越能够保证数据的可靠性,一般设置为3个,对数据更高要求可以设置更多。

    • 2、acks = -1 配合 min.insync.replicas。 acks = -1:leader 副本在成功写入本地日志之后还要等待 ISR 中的 follower 副本全部同步完成才能够告知生产者已经成功提交。

         ack = -1 存在退化为ack=1的情形
      
        试想一下这样的情形,leader 副本的消息流入速度很快,而follower 副本的同步速度很慢,
        在某个临界点时所有的 follower 副本都被剔除出了 ISR 集合,那ISR 只有一个 leader 副本,
        最终 acks =-1 演变为 acks =1 情形,如此也就加大了消息丢失的风险。 
      
        Kafka 考虑到了这种情况,并为此提供了 min .insync.replicas 参数(默认值1)来
        作为辅助(配合 acks =-1 来使用),**这个参数指定了 ISR 集合中最小的副本数**
      
        在正常的配置下,需要满足副本数> min.sync.replicas 参数的值。
      
        一个典型的配置方为:副本数配置为 3, min.insync.replicas 参数值配置为2
      
    • 3、同步/异步 发送消息。消息发送的3种模式,即发后即忘、同步和异步。

    • 4、enable.auto.commit 设置为false。enable.auto.commit 参数的默认值为 true ,即开启自动位移提交的功能 虽然这种方式非常简便,但它会带来重复消费和消息丢失的问题,对于高可靠性要求的应用来说显然不可取,所以需要将将次参数设置为 false 来执行手动位移提交。

    • 5、回溯消费 对于消费端, Kafka 还提供了 个可以兜底的功能,即回溯消费,通过这个功能可以让我们能够有机会对漏掉的消息相应地进行回补,进而可以进 步提高可靠性。

Kafka 消息队列(高清版)深入理解Kafka:核心设计与实践原理.zip Kafka 消息队列(高清版)深入理解Kafka:核心设计与实践原理。 高清版 立即下载

相关推荐

【MBD开发】Simulink中的枚举

01 什么是枚举 按百度百科的词条【枚举】是在编程语言中用来存储一组固定的常量。不同编程语言的枚举语法也不一样,以C语言为例。 typedef enum{ GEAR_P, //0:P挡 GEAR_R, //1:倒挡 GEAR_N, //2:空挡 GEAR_D, //3:前进}_GEAR; 上面枚举了一个_GEAR数据,用GEAR_P表示0,GEAR_R表示1……​​​​​​​ if(current_gear==GEAR..

f6723的博客 3096

1.深入理解kafka:核心设计和实践原理

1.快速入门 使用kafka提供的脚本工具 linux上安装java,zookeeper,kafka,启动zookeeper(zkServer.sh staart),再启动kafka(bin/kafka-server-start.sh config/server.properties) 创建topic (bin/kafka-topics.sh --create --zookeeeper lo...

ashylya的博客 1268

YOLOv8傻瓜式教程

YOLOv8傻瓜式教程,附带详细参数配置。

Father_of_Python的博客 1万+

深入理解kafka:核心设计与实践原理_Kafka-核心设计和实现原理,生产者和消费者详述...

1.体系架构Producer:生产者Consumber:消费者Broker:服务代理节点(kafka实例)2.消息存储主题(Topic):kafka消息以topic为单位进行归类,逻辑概念分区(Partition):Topic-Partition为一对多分区在存储层面可看做是一个可追加的日志文件消息在追加到分区时会分配一个特定的偏移量(offset)作为在此分区的唯一标示kafka通过offset...

weixin_39958100的博客 727

LLMOps的崛起:如何利用Langfuse和Opik构建高效的模型监控与评估体系

本文探讨了LLMOps的崛起,详细介绍了如何利用Langfuse和Opik构建高效的模型监控与评估体系。通过开源工具Langfuse的全景监控方案和Opik的三层评估体系,帮助AI工程团队实现大语言模型的全生命周期管理,提升模型性能和迭代效率。文章还提供了实战技巧和工具链集成方案,助力企业优化AI应用。

ll5678的博客 680

寻迹Arduino智能小车

Arduino巡线寻迹智能小车

Rachael_Wang的博客 1万+

2深入理解kafka:核心设计与实践原理

消费者 消费者与消费组 1.每个消费者都有一个对应的消费组,消息被发布到主题后,只会投递到订阅它的每一个消费组中的一个消费者 如上图所示: 某个主题有4个分区,和两个消费组,A组有四个消费组,b组有2个消费者,,按照kafka的默认规则,最后分配结果是,A组每个消费者分配到一个分区,B组每个消费者分配到两个分区,每个消费者只能消费所分配到的分区中的消息。.换言之,每个分区只能被一个消费组的消费者消费 2.消费组内的消费者个数变化时所对应的分区分配的演变: 消费者与消费组这种模型可以让

ashylya的博客 936

半监督的医学分割数据集(LA, Pancreas, ACDC和PROMISE12)分享

这篇文章提供了四个常用的半监督医学分割数据集,所有数据集都已经被处理成了.h5文件。下载之后就可以直接使用

qq_45691955的博客 4179

《深入理解Kafka:核心设计与实践原理》读书笔记

kafka学习笔记

墨雨的博客 2806

【C语言笔记初级篇】第一章:C语言快速入门及注意事项

(1)第一个C语言程序 A:利用vs2010写C语言程序 1:按以下步骤新建工程 2:添加源文件,“.c”文件 B:第一个C语言代码 1:以下是基本的C语言程序 2:由于没有设置连接器,所以打印结果没有显示,按照如下步骤链接控制台 (2)数据类型 A:基本数据类型及占用字节 B:一些概念的梳理 概念一:关于计算机的单位 位(bit):计算机通过电路的开关和闭合处理信息,电路通...

快乐江湖的博客 3737

装配完整性检查系统:基于YOLOv10的螺丝/零件缺失自动检测(含UI界面与完整代码)

建议自行采集装配场景数据,标注缺失螺丝、错误零件等,模拟真实缺陷。手机/工业相机采集图像;使用LabelImg进行目标标注;转换为 YOLO 格式。本文构建了一个完整的装配完整性检测系统,基于 YOLOv10 实现高精度螺丝缺失检测,并使用 PyQt5 构建了图形界面,实现一键导入与可视化检测流程,适用于工业质检自动化部署。项目可灵活扩展至零件缺失、错装、错位、顺序错误等检测场景,是深度学习在制造业中落地的典型应用案例之一。

YOLO 701

深入理解Kafka:核心设计与实践原理读书笔记

kafka,消息中间件,消息队列,读书笔记

一个有信仰的技术人 1178

汽车标定技术(七)--英飞凌TC3xx_Overlay实现页切换

今天说要开个专栏讲讲XCP标定,但在将标定之前,先把英飞凌专门为标定功能设计overlay功能讲解清楚。

认真搞搞汽车MCU 4017

读书笔记之《深入理解kafka: 核心设计与实践原理》

bootstrap.servers ,分割,这里并非需要所有的broker地址清单,因为生产者会从给定的broker里查找到其他broker信息,不过建议 至少要设置两个以上broker地址信息 broker端接收的消息必须以字节数组( byte[] )形式存在,在发往broker之前需要将消息中对应的 key 和 value 做相应的序列化操作 来转化成字节数据 生产者需要用序列化器把对象转换...

shengjk1的博客 2645

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

《深入理解Kafka核心设计与实践原理》读书笔记

Kafka为什么不支持减少分区 代码逻辑是可以实现,但是比较复杂,而且使用场景很少,完全可以新建一个topic去替代 第一,如果不保留原来分区的消息,可靠性得不到保障。 第二,把消息移到其他分区的话,如果直接存储到尾部则会破坏消息的时间戳排序,如果要做时间排序则会移动队列消息,消息很大的话,内部复制会占用很大资源。同时事务性,分区和副本问题都要考虑。 删除主题方式 第一,使用kafka.topics.sh脚本,会在zk生成一个标记节点,标记主题删除状态,然后kafka去删除。 第二,手动删除

Bballchen的博客 531

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【读书笔记】《深入理解Kafka:核心设计与实践原理》

基本概念 Kafka 最初有Linkedin公司开发,是一个分布式、支持多分区、多副本、多订阅者,基于ZooKeeper 的分布式消息流平台。 Producer 将消息发送到Broker,Broker 负责将收到的消息存储在磁盘中,而Consumer负责从Broker 订阅并消费消息。 Producer生产者,发送消息的一方,负责发布消息到Kafka。 Consumer消费者,消费消息的一方,连接到Kafka上并接收消息,并进行相应的业务逻辑处理。 Broker服务代理节点,可以简单的看做一个独立的Kaf

在路上的德尔菲的博客 1231

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深入理解kafka核心设计与实践原理_读书笔记_第1章 初识Kafka

第一章 初始Kafka1.1 基本概念1.体系架构2.主题Topic 、分区Partition 与 偏移量offset3.生产者分区分配策略4.多副本机制5.AR ISR OSR6. HW 、 LEO8.kafka同步复制 和 异步复制 机制 Kafka“扮演”三大角色 ·消息系统 Kafka 具备系统解耦、冗余存储、流量 峰、缓冲、异步通信、扩展性、 可恢复性等功能。 与此同时, Kafka供了大多数消息系统难以实现的消息顺序性保障 及 回溯消费的功能

lightupworld的博客 893

《深入理解kafka核心设计与实现原理》读书笔记

基础篇 主题: 主题是一个逻辑上的概念,它还可以细分为多个分区,一个分区只属于单个主题,很多时候也会把分区称为主题分区(Topic-Partition)。同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的日志(Log)文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset)。 offset 是消息在分区中的唯一标识,Kafka 通过它来保证消息在分区内的顺序性,不过 offset 并不跨越分区,也就是说,Kafka 保证的是分区有序而不是主题有序。 分区: Ka

weixin_42282999的博客 272

深入理解kafka核心设计与实践原理_读书笔记 第7章 深入客户端

第7章 深入客户端7.1 分区分配策略7.2 消费者协调器和组协调器7 .3 __consumer _offsets 剖析7.4 事务与幂等7.4.1 消息传输保障7.4.2幂等7.4.3 事务 7.1 分区分配策略 详解Kafka中所有的分区分配. 7.2 消费者协调器和组协调器 TODO 7 .3 __consumer _offsets 剖析 位移提交的内容最终会保存到 Kafka 的内部主题 __consumer_offsets 。 7.4 事务与幂等 7.4.1 消息传输保障 一般而言,

lightupworld的博客 318

深入理解kafka核心设计与实践原理_读书笔记_第2章 生产者

第二章 生产者2.1客户端开发生产者客户端示例代码2.1.1 必要的参数配置① bootstrap.servers :② key serializer 和 value serializer:2.1.2 消息的发送发送消息的三种模式1.发后即忘2.同步发送sync3.异步发送async2.1.3 序列化2.1.4 分区器(生产者消息 分区分配策略)1.指定了partition字段2.没有指定partition字段(1)使用Kafka默认分区器DefaultPartitioner源码解读(2)自定义分区器总结:

lightupworld的博客 456

深入理解kafka核心设计与实践原理_读书笔记_第5章 Kafka高吞吐性能分析

Kafka高吞吐性能分析1.顺写日志2.页缓存2.1 页缓存的读取2.2 页缓存的写入3 零拷贝3.1 非零拷贝技术3.2 零拷贝技术4.面试题:"kafka为什么快?" 的正确回答姿势 本节主要讲解kafka的高吞吐,这里的主要指的是Kafka为什么快? 主要因为应用了 顺写日志、页缓存、零拷贝、消息压缩等技术。 1.顺写日志 kafka依赖文件系统(磁盘)来存储消息。kafka在设计时采用文件追加的方式来写入消息。 只能在日志文件的尾部追加新的消息,并且不允许修改已

lightupworld的博客 489

深入理解kafka核心设计与实践原理_读书笔记_第3章 消费者

第三章 消费者3.1 消费者与消费者组3.2 客户端开发消费者客户端代码示例3.2.1 必备的参数配置① bootstrap.servers:②group.id:③key.deserializer 与 value.deserializer3.2.2 订阅主题与分区(1)订阅主题①基于集合②基于正则(2)订阅分区(3)取消订阅3.2.3 反序列化3.2.4 消息消费3.2.5 位移提交(1)位移提交引起的 重复消费 和 数据丢失问题①数据丢失②重复消费(2)手动提交位移①手动提交——同步提交 commitSy

lightupworld的博客 404

深入理解kafka核心设计与实践原理_读书笔记_第4章 主题与分区

第4章 主题与分区4.1主题的管理4.1.1创建主题4.1.2 分区副本的分配4.1.3 查看主题4.1.4修改主题4.1.5 配置管理4.1.6 主题端参数4.1.7 删除主题1.delete命令2.使用zk 删除主题(1) 可以直接通过 ZooKeeper 客户端来删除主题(2) 手动的方式来删除主题4.2 初始化KafkaAdminClient4.3 分区的管理4.3.1 优先副本的选举4.3.2 分区自动平衡4.3.3 分区重分配4.3.4 复制限流4.3.5 修改副本因子4.4 如何选择合适的分区

lightupworld的博客 389

深入理解kafka核心设计与实践原理_读书笔记 第5章 日志存储(上)

第5章 日志存储5.1文件目录5.2 日志格式的演变5.2.1 v0版本5.2.2 v1版本5.2.3 消息压缩5.2.4 变长字段5.2.5 v2版本5.3 日志索引5.3.1 偏移量索引(1) relativeOffset(2) position(3) 查找过程5.3.2 时间戳索引(1) timestamp(2) relativeOffset(3) 查找过程5.4 日志清理5.4.1 日志删除1.基于时间2.基于日志大小3.基于日志起始偏移量5.4.2 日志压缩 5.1文件目录 Kafka引入

lightupworld的博客 399

深入理解 Kafka :核心设计与实践 读书笔记

第1章 初识 Kafka Kafka 架构有什么组件? 一个典型的 Kafka 体系架构包括若干 Producer、若干 Broker 、若干 Consumer,以及一个 ZooKeeper 集群。 ZooKeeper 有什么作用? ZooKeeper 是 Kafka 用来负责集群元数据的管理、控制器的选举等操作的。 Broker 是什么? 服务代理节点。对于 Kafka 而言,Broker 可以简单地看作一个独立的 Kafka 服务节点或 Kafka 服务实例。大多数情况下也可以将 Broker 看作一

Himhim的笔记 666
上一篇: 深入理解kafka核心设计与实践原理_读书笔记 第7章 深入客户端
下一篇: Hadoop权威指南_读书笔记_第1章 初识Hadoop
lightupworld
博客等级 码龄7年 112粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值