Kafka核心知识点整理,值得收藏!

消息队列应用场景

  1. 提高系统性能:通过异步处理减少响应时间。
  2. 削峰/限流:应对高并发场景。
  3. 降低系统耦合性:解耦生产者和消费者。

消息队列对比

  • Kafka:高吞吐量,适合日志收集和传输,适合大型公司。
  • RocketMQ:高可靠性,适合金融互联网领域,如电商订单扣款。
  • RabbitMQ:性能好,社区活跃,适合小公司。

基础知识

  • 版本号:如Scala 2.11 - kafka_2.11-2.1.1,Scala版本号 + Kafka版本号。
  • 吞吐量大的原因
    • 顺序读写:消息追加到文件末尾。
    • Page Cache:基于内存的读写操作。
    • 零拷贝、批量读写、批量压缩。
    • 分区分段+索引:按topic和partition存储,建立索引文件。

基本概念

  • 主题(Topic):承载消息的逻辑容器。
  • 分区(Partition):主题下有序不变的消息序列。
  • 消息位移(Offset):消息在分区中的位置。
  • 副本(Replica):数据冗余。
  • 生产者(Producer):发送消息的应用程序。
  • 消费者(Consumer):订阅消息的应用程序。
  • 消费者位移(Consumer Offset):消费者消费进度。
  • 消费者组(Consumer Group):多个消费者实例共同消费。
  • HW(High Watermark):消费者只能消费到此偏移量之前的消息。
  • LEO(Log End Offset):日志文件中下一条待写入消息的offset。

消息模型

  • 消费者策略
    • RangeAssignor:默认策略,分区总数除以消费者总数。
    • RoundRobinAssignor:轮询分配。
    • StickyAssignor:保留现有分配,平衡分配。
    • CooperativeStickyAssignor:允许重构分区策略。
  • Push和Pull:消费端主动拉取消息。
  • 消费者组:共享Group ID,协调消费主题分区。

位移主题

  • 作用:保存消费者位移信息。
  • 创建:自动创建,分区数和副本数可配置。
  • 提交方式:自动提交和手动提交。
  • Compact策略:删除过期消息,避免主题膨胀。

重平衡(Rebalance)

  • 触发条件:组成员数变更、订阅主题数变更、分区数变更。
  • 过程:所有消费者停止消费,等待分配完成。

分区机制

  • 分区策略
    • 轮询策略:顺序分配。
    • 随机策略:随意分配。
    • 消息键策略:相同Key的消息分配到同一分区。

压缩机制

  • 压缩位置:生产者端和Broker端。
  • 解压缩:消息到达Consumer端后解压缩。

拦截器

  • 类型:生产者拦截器和消费者拦截器。
  • 设置方法:通过interceptor.classes参数配置。

副本机制

  • 副本角色:领导者副本处理请求,追随者副本同步数据。
  • ISR副本集合:与Leader同步的副本集合。
  • Unclean领导者选举:允许非同步副本成为领导者。

控制器(Broker)选举

  • 控制器:管理和协调Kafka集群。
  • 优先副本选举:尽可能让优先副本成为Leader副本。

幂等性

  • 支持版本:0.11.0.0及以上。
  • 配置:enable.idempotence设置为true。
  • 实现原理:用空间换时间,broker端多存字段标识数据唯一性。

事务

  • 保证:消息写入分区的原子性。
  • 配置:enable.idempotence和transctional.id参数。
  • 处理:数据发送需在beginTransaction和commitTransaction之间。

数据存储

  • 存储单元:Partition。
  • 组织方式:Segment,包括索引文件和数据文件。

请求模型

  • 处理方式:请求到Broker后,通过网络线程池转发到IO线程池处理。

常见场景

  • 重复消费:进程异常退出导致重复消费。
  • 消息丢失:Consumer程序丢失数据。
  • 消息顺序:保证Partition内部有序。

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

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

相关文章

SpringBoot启动命令过长

Error running DromaraApplication: Command line is too long. Shorten command line for DromaraApplication or also for Spring Boot default configuration?

线上环境服务器CPU飙升排查

前因 收到线上服务器CPU使用率100%的告警信息。 环境 jdk1.8CentOS Linux ;CentOS Linux 排查 查看服务器CPU使用率 果然cpu已经达到了100%了 命令 top 使用arthas工具 使用方式 arthas 执行命令java -jar arthas-boot.jar 然后执行命令 thread 看到有两个…

【linux】Shell脚本三剑客之awk命令的详细用法攻略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

【基础教程】Tutorial on Pytorch 结合官方基础文档和个人经验

参考与前言 此教程首次书写于2021年12月份 至 2022年4月份间不断补充;阅读本文时可以对着代码运行查看 官方网址:https://pytorch.org/tutorials/ 【基本从这里翻译而来 更简洁版碎碎念】https://pytorch.org/tutorials/beginner/blitz/cifar10_tutori…

vue3+element-plus 实现动态菜单和动态路由的渲染

在 Vue.js 中,使用 Vue Router 管理路由数据,并将其用于渲染 el-menu(Element UI 的菜单组件)通常涉及以下几个步骤: 定义路由元数据: 在你的路由配置中,为每个路由项添加 meta 字段&#xff0c…

无人机10公里WiFi图传摄像模组,飞睿智能超清远距离无线监控,智能安防新潮流

在这个科技日新月异的时代,我们对影像的捕捉和传播有了更高的要求。从传统的有线传输到无线WiFi图传,每一次技术的飞跃都为我们带来了全新的视觉体验。今天,我们要探讨的,正是一款具有划时代意义的科技产品——飞睿智能10公里WiFi…

自学网络安全,从小白到大神的破茧之路!

在当今数字化高速发展的时代,网络安全已经成为了至关重要的领域。无论是个人的隐私保护,还是企业、国家的关键信息资产维护,都离不开网络安全的有力保障。出于对这一领域的浓厚兴趣以及对未来职业发展的清晰规划,我毅然决然地踏上…

0722_驱动1 字符设备驱动框架

一、字符设备驱动框架 字符设备驱动按照字节流进行访问,并且只能顺序访问 设备号一共有32位,主设备号(高12位)次设备号(低20位) 二、注册/注销字符设备驱动API接口 2.1、注册字符设备驱动(入口) #include &…

树莓派智能家居中枢

一个先进的枢纽,使智能家居系统更智能、更可定制、更易于控制 Homey Pro由树莓派 Compute Module 4 供电,Homey Pro 为用户提供了一个单一界面,用于控制和监控来自不同品牌的所有智能家居设备。它完全在本地网络上运行,而不是依赖云端,从而实现了最低的延迟、最高的…

深入理解CSS中的变量(应用篇)

在现代Web开发中,换肤功能已经成为提升用户体验的重要手段之一。通过使用CSS变量和JavaScript,我们可以轻松实现动态换肤功能。本文将介绍如何动态生成和应用CSS变量来实现换肤效果。 1. 定义基础CSS变量 首先,我们在CSS中定义一些基础的CSS变量。这些变量将用于存储不同主…

测试面试宝典(三十三)—— 接口测试有没有测试出什么问题?

在之前的接口测试工作中,确实发现了一些问题。比如,在对某关键业务接口进行测试时,发现当输入的参数值超出正常范围时,接口没有按照预期返回错误提示,而是出现了系统崩溃的情况。 还有一次,在测试一个数据…

关于任务栏设置闪退的一种解决方法

昨天我用了下360安全卫士,就发现我的任务栏变成了小任务栏模式。我想把它关掉,于是想要打开任务栏设置,然后就发现任务栏设置闪退。 我去晚上找了许多方法,像是卸载360,用指令修补破损文件,重启电脑等等&am…

【PostgreSQL教程】PostgreSQL 删除表格

博主介绍:✌全网粉丝20W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…

docker发布镜像到自己远程私有仓库

1、登录docker hub创建自己的仓库地址:https://hub.docker.com/repository/create 输入仓库名称 2.构建镜像 略过。。。。请自己查找别的资料,此篇文章只讲述镜像推送到远程 3.推送 假设你已经构建了一个镜像 web/online-editor:latest,现…

推荐系统三十六式学习笔记:工程篇.常见架构25|Netflix个性化推荐架构

目录 架构的重要性经典架构1.数据流2.在线层3.离线层4.近线层 简化架构总结 你是否曾经觉得算法就是推荐系统的全部,即便不是全部,至少也是嫡长子,然而实际上,工程实现才是推荐系统的骨架。如果没有好的软件实现,算法不…

构建安全的单点登录(SSO)系统:PHP框架实现指南

引言 单点登录(SSO)是一种允许用户使用单一身份验证来访问多个相关但独立的系统或应用程序的技术。在企业环境中,SSO可以极大地提高效率,减少密码管理的复杂性,并增强安全性。本文将详细介绍如何在PHP框架中实现SSO&a…

Python面试题:使用Matplotlib和Seaborn进行数据可视化

使用Matplotlib和Seaborn进行数据可视化是数据分析中非常重要的一部分。以下示例展示了如何使用这两个库来创建各种图表,包括基本的线图、柱状图、散点图和高级的分类数据可视化图表。 安装 Matplotlib 和 Seaborn 如果你还没有安装这两个库,可以使用以…

树 ----- 基础学习

树 树:n(n>0)个结点的有限集合。n 0 ,空树。 在任意一个非空树中, 1,有且仅有一个特定的根结点 2,当n>1 时,其余结点可分为m个互不相交的有限集合T1,T2,T3.。。。。Tm,其中每…

TTS如何正确读AI缩写、金额和数字

案例:Tell me whats AI(a i), you need pay $186.30, your card Number is 1 2 3, your work Number is 5 6 7 8