kafka系列(二)

kafka --- 系列二(kafka最全面试题) 目录 1、请说明什么是Apache Kafka? 2、说说Kafka的使用场景? 3、使用Kafka有什么优点和缺点? 4、为什么说Kafka性能很好,体现在哪里? 5、请说明什么是传统的消息传递方法? 6、请说明Kafka相对传统技术有什么优势? 7、解释Kafka的Zookeeper是什么?我们可以在没有Zookeeper的情况下使用Kafka吗? 8、解释Kafka的用... 阅读详情

本章承接kafka一内容,文章在本人博客主页都有,可以自行点击浏览。

幂等性

请求执行多次,但执行的结果是一致的。

如果,某个系统是不具备幂等性的,如果用户重复提交了某个表格,就可能会造成不良影响。例如:用户在浏览器上点击了多次提交订单按钮,会在后台生成多个一模一样的订单。

kafka幂等性

在生产者生产消息时,如果出现retry时,有可能会一条消息被发送了多次,如果Kafka不具备幂等性的,就有可能会在partition中保存多条一模一样的消息。

配置

props.put("enable.idempotence",true);

原理

为了实现生产者的幂等性,Kafka引入了 Producer ID(PID)和 Sequence Number的概念。

 PID:每个Producer在初始化时,都会分配一个唯一的PID,这个PID对用户来说,是透明的。

 Sequence Number:针对每个生产者(对应PID)发送到指定主题分区的消息都对应一个从0开始递增的Sequence Number。

如果同一个生产者,发送的消息序列号一致了,那么消息就已经存在了。

消费者组Rebalance机制

Rebalance再均衡

Kafka中的Rebalance称之为再均衡,是Kafka中确保Consumer group下所有的consumer如何达成一致,分配订阅的topic的每个分区的机制。

Rebalance触发的时机有:

  1. 消费者组中consumer的个数发生变化。例如:有新的consumer加入到消费者组,或者是某个consumer停止了。
  2. 订阅的topic个数发生变化。消费者可以订阅多个主题,假设当前的消费者组订阅了三个主题,但有一个主题突然被删除了,此时也需要发生再均衡。
  3. 订阅的topic分区数发生变化

坏处

  1. 发生Rebalance时,consumer group下的所有consumer都会协调在一起共同参与,Kafka使用分配策略尽可能达到最公平的分配
  2. Rebalance过程会对consumer group产生非常严重的影响,Rebalance的过程中所有的消费者都将停止工作,直到Rebalance完成

消费者分区分配策略

range范围分配

Range范围分配策略是Kafka默认的分配策略,它可以确保每个消费者消费的分区数量是均衡的。

注意:Rangle范围分配策略是针对每个Topic的。

轮询分配

RoundRobinAssignor轮询策略是将消费组内所有消费者以及消费者所订阅的所有topic的partition按照字典序排序(topic和分区的hashcode进行排序),然后通过轮询方式逐个将分区以此分配给每个消费者。

粘性分配

没有重新分配的时候和轮询一样,当消费者挂掉的时候,发生重新分配,尽可能保留之前的分配不变,将挂点的消费者上绑定的分区平均分配到没挂掉的消费者上面。由于rebalance发生,导致消费者需要重新消费之前正在处理的分区,导致不必要的系统开销。(例如:某个事务正在进行就必须要取消了)

副本机制

副本的目的就是冗余备份,当某个Broker上的分区数据丢失时,依然可以保障数据可用。因为在其他的Broker上的副本是可用的。

producer的ACKs参数

对副本关系较大的就是,producer配置的acks参数了,acks参数表示当生产者生产消息的时候,写入到副本的要求严格程度。它决定了生产者如何在性能和可靠性之间做取舍。

确认机制说明
acks=0生产者在成功写入消息之前不会等待任何来自服务器的响应,消息有丢失的风险,但是速度最快
acks=1(默认值)只要集群首领节点收到消息,生产者就会收到一个来自服务器的成功响应
acks=all只有当所有参与赋值的节点全部收到消息时,生产者才会收到一个来自服务器的成功响应

Kafka的数据存储形式

  1.  一个topic由多个分区组成
  2.  一个分区(partition)由多个segment(段)组成
  3.  一个segment(段)由多个文件组成(log、index、timeindex)

​​​​​​​Kafka配额限速机制(Quotas)

生产者和消费者以极高的速度生产/消费大量数据或产生请求,从而占用broker上的全部资源,造成网络IO饱和。有了配额(Quotas)就可以避免这些问题。Kafka支持配额管理,从而可以对Producer和Consumer的produce&fetch操作进行流量限制,防止个别业务压爆服务器。

​​​​​​​限制producer端速率

为所有client id设置默认值,以下为所有producer程序设置其TPS不超过1MB/s,即1048576‬/s,命令如下:

bin/kafka-configs.sh --zookeeper node1.itcast.cn:2181 --alter --add-config 'producer_byte_rate=1048576' --entity-type clients --entity-default

运行基准测试,观察生产消息的速率

bin/kafka-producer-perf-test.sh --topic test --num-records 500000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 acks=1

结果:

50000 records sent, 1108.156028 records/sec (1.06 MB/sec)

​​​​​​​限制consumer端速率

对consumer限速与producer类似,只不过参数名不一样。

为指定的topic进行限速,以下为所有consumer程序设置topic速率不超过1MB/s,即1048576/s。命令如下:

bin/kafka-configs.sh --zookeeper node1.itcast.cn:2181 --alter --add-config 'consumer_byte_rate=1048576' --entity-type clients --entity-default

运行基准测试:

bin/kafka-consumer-perf-test.sh --broker-list node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 --topic test --fetch-size 1048576 --messages 500000

结果为:

MB.sec:1.0743

​​​​​​​取消Kafka的Quota配置

使用以下命令,删除Kafka的Quota配置

bin/kafka-configs.sh --zookeeper node1.itcast.cn:2181 --alter --delete-config 'producer_byte_rate' --entity-type clients --entity-default

bin/kafka-configs.sh --zookeeper node1.itcast.cn:2181 --alter --delete-config 'consumer_byte_rate' --entity-type clients --entity-default

CISSP背书三次失败后的终极解决方案 本文分享了作者CISSP认证三次线上背书审核失败的经历与终极解决方案。针对(ISC)²官方审核的严格性,文章详细剖析了使用公积金证明、工作证明盖章签字等常见材料的误区,并最终提出了通过构建“官方邮件往来”证据链的核心策略,以动态、可验证的方式成功通过审核,为后来者提供了详实的避坑指南和实操清单。 阅读详情

相关推荐

终端里藏了个AI大神!DeepSeek‑TUI让你的命令行直接起飞

DeepSeek-TUI:终端AI编程神器 DeepSeek-TUI是一款专为开发者设计的终端AI编程工具,基于DeepSeek V4模型,提供100万Token超大上下文支持,适合处理复杂项目。其核心优势包括: 轻量高效:单二进制文件,无需依赖环境,支持SSH远程操作 智能交互:实时流式输出推理过程,支持三档模式(Plan/Agent/YOLO)灵活切换 强大功能:集成文件读写、Git管理、Shell执行等工具,支持一键回滚和持久会话 节省成本:智能压缩与缓存优化,显著降低Token消耗 适用于服务器开发

959

【Kafka系列二-生产者】

Kafka系列第二篇章,生产者详解。我们先从生产者从创建到发送消息到Kafka服务端整体流程为引入,然后详细介绍了生产者的创建,同步发送,异步发送,异步发送之后如何处理成功或者失败的消息,Kafka生产者的各参数含义及序列化器,分区器,并给出了相应的示例代码。读者要理解客户端的消息的发送是按批次发送的,并懂得如何根据自己的业务场景设置合理的参数和实现自定义的序列化器和分区器。

qq_41705360的博客 1779

LLM and Embedding区别

LLM(大语言模型)和 Embedding(嵌入)是自然语言处理(NLP)中的两个核心概念,它们的核心区别在于。Embedding 计算向量。

u010674101的专栏 1873

kafka知识整理系列二

kafka知识整理系列二kafka分区策略什么情况下会分区分区方式有哪些Range Strategy(也是默认的使用策略)RoundRobin Strategykafka的RebalanceCoordinatorRebalance的步骤:kafka的日志清除策略kafka的TCP链接管理生产者创建TCP的3种情况生产者/消费者关闭TCP的2种情况消费者创建TCP的3种情况kafka控制器组件ControllerController 的作用 kafka分区策略 什么情况下会分区 同一个Consumer Gr

Zong_0915的博客 498

【WB32库开发】第9章 TIM1高级定时器——输出多路PWM

PWM(Pulse Width Modulation)意为脉冲宽度调制,简称脉宽调制 。在工控行业,PWM信号可以用来调节电机转速、调节变频器以及BLDC电机驱动等;在LED照明行业,可以通过PWM来控制LED的亮暗变化;还可以通过PWM信号来控制无源蜂鸣器发出简单的声音等。 WB32也可输出PWM,需配置WB32上的定时器。 在WB32中有4个定时器,其中TIM1为高级定时器,TIMx(2-4)为通用定时器,这四个定时器均挂载在APB1总线上,每个定时器都可以输出4路PWM。 本章需要使用固件库TIM例程

北海村夫的博客 4637

别再只盯着照片了!手把手教你用Python提取大疆照片里的GPS、姿态和RTK数据

本文详细介绍了如何使用Python提取大疆照片中的GPS、姿态和RTK数据,帮助用户解锁无人机拍摄照片中的隐藏元数据。通过实战代码示例,展示了如何解析EXIF格式的定位、姿态和RTK状态信息,并实现批量处理与数据分析,适用于测绘、农业巡检等专业领域。

weixin_30790841的博客 150

kafka系列笔记(二)--

kafka系列笔记(二)--

third_的博客 198

用STM32F407做个USB声卡:从CubeMX配置到播放录音全功能实战(附源码)

本文详细介绍了如何使用STM32F407开发板实现USB音频设备的全功能实战,包括CubeMX配置、硬件连接、音频流处理和性能优化。通过双缓冲DMA机制和音频数据处理流程,开发者可以构建高质量的USB声卡系统,适用于录音和播放场景。附源码,助力快速上手STM32音频开发。

weixin_30301449的博客 516

详解Kafka分区机制原理|Kafka 系列 二

Kafka 系列第二篇,详解分区机制原理。为了不错过更新,请大家将本号“设为星标”。点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达上一篇文章介绍了 Kafka 的基本概念和术语,里面有个概念是 分区(Partition)。kafka 将 一个Topic 中的消息分成多份,分别存储在不同的 Broker 里,这每一段消息被 kafka 称为分区,其中每条消息只会保存在一个分区中。如果...

Daniel的博客 3037

基于YOLOv8的多类别检测模型融合实战:从数据集重构到模型训练

本文详细介绍了如何将多个单一类别的YOLOv8检测模型融合为一个高效的多类别检测模型。通过重构数据集、利用预训练模型生成新标签,并重新训练,解决了多模型并行带来的速度慢、资源占用高和部署复杂等问题。实战流程涵盖数据准备、标签生成、模型训练与评估,旨在帮助开发者构建性能优异的YOLOv8多类别检测模型。

kmeans3miner的博客 227

【python三维深度学习】python三维点云从基础到深度学习

从三维点云基础知识到深度学习,将按照以下目录持续进行更新。更新完成的部分可以在三维点云专栏中查看。含数据与python源码。

叶子的博客 2万+

kafka系列——kafka实用命令(二)

前言:最近用kafka比较多,记录一下命令。 1,查看kafka的topic列表 bin/kafka-topics.sh --list --zookeeper 172.18.215.18:2181 2, 启动一个生产者,并向 dofun-testhaha这个topic发送数据 ./bin/kafka-console-producer.sh --broker-list 172.18...

qq_40384985的博客 289

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Kafka从入门到成神系列 二】Kafka集群参数配置

👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,Java领域新星创作者。 📝个人公众号:爱敲代码的小黄 📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神 📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 🍂博主正在努力完成2022计划中:以梦为马,扬帆起航,2022追梦人 文章目录一、Kafka 线上部署集群1. 操作系统2. 磁盘3. 磁盘容量4. 带宽二、Kafka 集群参数配置..

爱敲代码的小黄 1668

VB摄像头监控

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Kafka系列二之部署与使用

Kafka部署与使用写在前面 从上一篇Kafka的架构介绍和安装中,可能,你还一直很蒙,kafka到底该怎么使用呢?接下来,我们就来介绍Kafka的部署与使用。上篇文章中我们说到,Kafka的几个重要组成是:1.producer 2.consumer 3.broker 4.topic .因此我们就是围绕这几个组件来使用我们的Kafka.如何开始呢?我们查看官网上面是如何说的,http://kaf

留歌__36的博客 1419

Kafka总结系列(二)

Design Persistence:     kafka高度依赖于文件系统来存储和缓存消息。对于磁盘的正确认识:对磁盘的线性读写比随机读写快很多倍,且有研究表明:对磁盘的线性读写在有些情况下可以比内存的随机访问要更快! Efficiency:     在消息队列系统中,如果磁盘的因素被排除之后(线性读写磁盘的速度并不那么慢),还有两个原因会导致inefficiency:太多IO操作(to

anjing900812的博客 770

【Kafka从入门到放弃系列 二】Kafka集群搭建及基本命令

上一篇blog详细了解了kafka的基本概念、生产消费者模型、基本架构,我对kafka有了一个整体的认知,其整体框架其实可以理解为如下架构【一个Partion分区的leader和foller不会存储到一个broker上】: 消息生产出来后依据topic发送到Kafka集群中去,由集群来管理消息,消费集群主动拉取到消息后消费【消费者的消费速度可以由自己来决定,可能会存在长连接轮询的浪费问题】,整体的消息和集群管理由Zookeeper来进行。 Zookeeper启动 Kafka安装 ...

MaoLin Tian's Blog 1227

【Kafka系列】(二)Kafka的基本使用

这种情况下,好的运维应该防止这种情况的发生,特别是对于大公司而言,每个部门被分配的 Topic 应该由运维严格把控,不允许自行创建任何 Topic。一般情况下 Kafka 集群除了消息数据还有其他类型的数据,比如索引数据等,故我们再为这些数据预留出 10% 的磁盘空间,因此总的存储容量就是 220GB。需要注意的是,尽管机械磁盘可以胜任 Kafka 线上环境,但在某些特定场景下,如对延迟要求非常高的应用,或者对存储容量要求非常大的应用,可能需要考虑使用 SSD 等更高性能的存储设备。

程序员朱永胜 489

Kafka系列(二):Kafka概要设计

Kafka概要设计吞吐量/延时消息持久化负载均衡和故障转移伸缩性 吞吐量/延时 对于任何一个消息引擎而言,吞吐量都是至关重要的性能指标。何为吞吐量?***吞吐量是某种处理能力的最大值。***,对于kafka而言,它的吞吐量就是每秒能处理的消息数或者每秒能处理的字节数。很显然,我们希望消息引擎的吞吐量越大越好。 消息引擎还有一个名为延时的性能指标。他衡量的是一段时间间隔,可能是发出某个操作与接受操作响应之间的时间。或者是系统中导致某些物理变更的起始时刻与变更正式生效时刻之间的间隔。对于Kafka而言,延时可以

weixin_42575542的博客 325

kafka入门系列二

kafka集群安装

zeroOneMan的专栏 839

Kafka系列(二)、架构原理及存储机制

本篇是kafka系列的第二篇,介绍kafka的架构原理,工作流程以及存储机制,然后讲解了kafka为什么这么高性能高吞吐的原因及优化的点。

王义凯 的博客 3108

Kafka入门系列(二) Kafka Broker端重要参数详解

Kafka的参数配置主要分为5个部分: broker端配置(包含topic级别的配置) producer端配置 consumer端配置 streams端配置 connect端配置 本文主要关注broker端配置并且详细罗列出笔者认为重要的那些参数。另外本文针对的是Kafka0.10以后的版本。 Broker端主要参数 broker端的配置中有一...

唯心不易 1522

kafka系列(二)——kafka集群部署

这个参考:https://blog.youkuaiyun.com/hancoder/article/details/107446151 或者网上其他的文章,照着文章能很快搭建一套kafka集群,如果有mac电脑,建议直接上docker部署。 后面有什么好的想法再来补充这篇吧!!! ...

大黄_sama 204

kafka 系列(二)安装

      本次安装基于阿里云平台。       系统版本: [root@izbp11qlpa7oecwpwy4cn4z ~]# uname -a  Linux izbp11qlpa7oecwpwy4cn4z 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux...

xun_jing的专栏 2984

kafka系列二、kafka manager的安装和使用

1.Yahoo kafka manager介绍 项目地址:https://github.com/yahoo/kafka-manager Requirements: Kafka 0.8.1.1 or 0.8.2.* sbt 0.13.x Java 8+ Kafka Manager是一个管控台,这款工具主要支持以下几个功能: 管理多个不同的集群; 很容易地检查集群的状态(...

weixin_30699955的博客 199

《吃透 MQ 系列》之打通 Kafka 的任督二脉

大家好,我是武哥。这是《吃透 MQ 系列》的第三篇,有关Kafka 的架构设计。这篇文章将带着大家参透:到底什么是 Kafka 架构设计的任督二脉?把握住了这个关键点,我相信你将能更好地...

武哥漫谈IT 412

软件测试需求分析与控件测试方法论

软件测试需求分析是确保测试覆盖率和质量的关键环节,涉及明确测试范围、识别质量特性权重和建立可追溯的测试链。通过功能-模块-系统映射图和质量特性矩阵,可以有效提升测试的针对性和效率。控件测试作为GUI测试的基础,遵循三层验证原则,包括基础属性验证、交互行为验证和业务规则验证。典型控件如文本框、下拉框和表格控件,各有其特殊的测试场景和陷阱。从需求拆解到用例设计,采用组合测试、状态迁移测试和故障注入测试等方法,可以显著提升测试用例的质量和覆盖率。

weixin_34302561的博客 185
上一篇: Kafka系列(一)
下一篇: Kafka系列(三)
happystudy_neu
博客等级 码龄4年 1140粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值