学到羊之Kafka

news2024/11/17 21:54:57

1 kafka 是啥

Kafka 是一款开源的消息引擎系统,用来实现解耦的异步式数据传递。即系统 A 发消息给到 消息引擎系统,系统 B 通过消息引擎系统读取 A 发送的消息,在大数据场景下,能达到削峰填谷的效果。

 2 Kafka 术语

 Kafka 中的分区机制指的是将每个主题(Topic)划分成多个分区(Partition),每个分区是一组有序的消息日志。生产者生产的每条消息只会被发送到一个分区中,也就是说如果向一个双分区的主题发送一条消息,这条消息要么在分区 0 中,要么在分区 1 中。Kafka 的分区编号是从 0 开始的,如果 Topic 有 100 个分区,那么它们的分区号就是从 0 到 99。每个分区下可以配置若干个副本,其中只能有 1 个领导者副本和 N-1 个追随者副本。

Kafka 的三层消息架构:

1)主题层,每个主题可以配置 M 个分区,而每个分区又可以配置 N 个副本。

2)分区层,每个分区的 N 个副本中只能有一个充当领导者角色,对外提供服务;其他 N-1 个副本是追随者副本,只是提供数据冗余之用。

3)消息层,分区中包含若干条消息,每条消息的位移从 0 开始,依次递增。最后,客户端程序只能与分区的领导者副本进行交互。

Broker 如何持久化数据?

Kafka 使用消息日志(Log)来保存数据,一个日志就是磁盘上一个只能追加写(Append-only)消息的物理文件。因为只能追加写入,故避免了缓慢的随机 I/O 操作,改为性能较好的顺序 I/O 写操作,这也是实现 Kafka 高吞吐量特性的一个重要手段。如果不停地向一个日志写入消息,最终也会耗尽所有的磁盘空间,因此 Kafka 必然要定期地删除消息以回收磁盘。怎么删除呢?简单来说就是通过日志段(Log Segment)机制。在 Kafka 底层,一个日志又进一步细分成多个日志段,消息被追加写到当前最新的日志段中,当写满了一个日志段后,Kafka 会自动切分出一个新的日志段,并将老的日志段封存起来。Kafka 在后台还有定时任务会定期地检查老的日志段是否能够被删除,从而实现回收磁盘空间的目的。

3 生产者

3.1 消息发送

 

  1. Producer创建时,会创建一个Sender线程并设置为守护线程;

  2. 生产消息时,内部是异步流程。生产的消息先经过拦截器->序列化器->分区器,然后将消息缓存在缓冲区(该缓冲区也是在Producer创建时创建);

  3. 批次发送的条件为:缓冲区数据大小达到 batch.size 或者 linger.ms 达到上限,哪个先达到就算哪个;

  4. 批次发送后,发往指定分区,然后落盘到broker;如果生产者配置了 retrires 参数大于 0 并且失败原因允许重试,那么客户端内部会对该消息进行重试;

  5. 落盘到broker成功,返回生产元数据给生产者;

  6. 元数据返回有两种方式:一种是通过阻塞直接返回,另一种是通过回调返回。

3.2 原理剖析

 

4 消费者

4.1 消息接收

4.2 消费组

5 异常处理

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性能测试要学习哪些知识?全在这里了

基础:   完整的性能测试流程     需求-计划-方案-环境搭建-用例设计-数据准备-场景设计-脚本开发-脚本执行-结果分析-问题反馈-性能调优-结果报告   性能指标     TPS,QPS,RPS,HPS,RT,VU&#…

【Pandas入门教程】在Pandas中如何创建plots

在Pandas中如何创建plots 来源:Pandas官网:https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html 文章目录在Pandas中如何创建plots导包数据集准备【小结】导包 import pandas as pd import matplotlib.pyplot as plt数据集准备…

力扣(LeetCode)200. 岛屿数量(C++)

深度优先遍历 求连通块数量。可以遍历所有格子,当格子是岛屿,对岛屿深度优先遍历,找到整个岛,并且将遍历的岛屿标记,以免重复遍历,或递归死循环。标记可以使用状态数组,也可以修改格子的值。本…

SQL注入渗透与攻防(十)之加解密注入和堆叠注入

目录 SQL注入之加解密注入 案列演示 SQL注入之堆叠注入 案列演示 SQL注入之加解密注入 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。 案列演示 这里我们拿sql-libs的第二十一关来进行演…

学习TrustZone可以参考的资料

最近看到了一篇学习资料分享的,感觉可以转过来做个记录,除去前辈分享的资料以外,我还觉得ATF的源码里面的DOC目录下的资料也是很不错的,起码可以让你对BL31有个比较不错的认识。当然那个有点太细节了。 最近看PSA安全技术交流微信…

30多岁想转行,零基础学编程,来得及吗?

“30多岁想转行,零基础学编程,来得及吗?能找到好工作吗?”这类问题,总是反复出现。尤其是最近我受《自学是门手艺》鼓舞,也借着参与 xue.cn 的契机想要把 python 学的全面而完整,也总有朋友找我…

从工地打工,到狂揽10个大厂offer、副业赚100万:培训班出来的程序员是怎么做到的?

七年前我 985 毕业却沦落到工地打工,七年后我已经收到了 10 个大厂 offer 。 你好,我是吴师兄,一位曾经的学霸毕业只能去工地,而如今大厂 offer 拿到手软,Github 全球 TOP100 算法仓库创作者,公众号五分钟…

eclipse和sts安装lombok

eclipse和sts安装lombok 说明 sts 是 eclipse集成springboot的开发环境 所以 sts 和 eclipse 安装 lombok 步骤基本一样 参考网址: https://blog.csdn.net/qq_39826207/article/details/119007580?ops_request_misc%257B%2522request%255Fid%2522%253A%252216708973141680…

算法day57|647,516

目录 647. 回文子串 516.最长回文子序列 动态规划总结篇 647. 回文子串 dp数组的定义 dp[i][j]代表的是区间[i,j]的字串是否为回文字符,如果dp[i][j]为true,否则为false 递推公式 如果s[i]和s[j]相等的话 1.ij 为同一个字符,dp[i][j] True 2 i与j相差1…

Kafka大厂高频面试题:在保证高性能、高吞吐的同时保证高可用性

Kafka的消息传输保障机制非常直观。当producer向broker发送消息时,一旦这条消息被commit,由于副本机制(replication)的存在,它就不会丢失。但是如果producer发送数据给broker后,遇到的网络问题而造成通信中…

火山引擎 DataTester 上线“流程画布”功能,支持组合型 A/B 实验分析

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 在精细化运营的时代,运营活动同样需要有精细化的策略,例如在年末大促活动中,设计 APP 弹窗提醒、满减、会员领券时,我…

C#语言实例源码系列-实现批量更改文件名称大小写或扩展名

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中…

DeepLearning_Note

这里写目录标题深度学习框架深度学习开发万能公式模型的网络设计和开发:激活函数:几个数据参数:神经网络的输出零碎知识点:深度学习框架 深度学习开发万能公式 ① 问题定义 ② Paddle.vision.datasets(内置数据集&am…

【ROS参数服务器】

参数服务器是以共享方式实现不同节点间数据交互的通信方式。主要用于存储多节点共享的数据,类似于全局变量。ROS中的参数服务器主要包含三个角色,分别是ROS Master(节点管理者)、Talker(参数设置者)、Listener(参数使用者),其中Talker和Liste…

创新京东T7开创“新算法宝典”,图文并茂,全新演绎,太酷了

导言 算法是一门学问,但却总遭到一些程序员的冷落。现在的开发人员,更热衷于编程语言的修炼,以应付面试需求时的需要,所以对算法的学习,稍许忽略了些。实际上,近些年来,各互联网公司对于算法的…

【知识梳理】前端路由的两种模式

一、概述 这是几年前写的的一篇文章,发在了简书上面,现在看来仍然有一些不足,所以再次整理一下发在掘金。 二、什么是单页面应用(SPA)? 首先我们需要了解一下前置的基础知识————SPA(单页面…

S3 #DooTrader 经典组冠军以良好盘感,创下近 900% 收益率摘得桂冠

本届 S3 #DooTrader 慈善杯全球交易大赛现已经进入白热化阶段,第二轮赛事冲刺在即,各位选手摩拳擦掌争取赢得最终的丰厚奖金。目前,领先的选手调整策略和仓位,以保持排位优势。我们看到现阶段经典组 TOP 1 选手已经创造了 1,300% …

WMS类图分析-android12

为什么要分析类图? WMS是一个复杂的模块,就像一个很大的家族,里面有各种角色,认识类图就像是认识WMS模块中的各个角色,不先把人认清楚了,怎么更好的理解他们之间的交互? 我觉得,这…

vue+antd搭建后台管理界面模版(PC端),适配中文、英文、日文 mock数据,开箱即用

vueantd搭建后台管理界面模版(PC端) 完整代码下载地址:vueantd搭建后台管理界面模版(PC端) 技术栈 vue2 vuex vue-router webpack ES6/7 axios antd 阿里图标iconfont 项目预览 http://nmgwap.gitee.io/vue…

【软件工程】实验4:校园二手物品交易过程的UI设计

文章目录校园二手物品交易过程的UI设计通过“用户画像”对用户群体进行分析校园二手物品交易过程UI设计(Figma)校园二手物品交易过程的UI设计 通过“用户画像”对用户群体进行分析 大学校园交易市场特点: 容量大。随着我国高等教育近年来的连…