七张图了解kafka基本概念

从‘单表同步’到‘多表同步’:用Seatunnel构建数据同步流水线的完整避坑指南 本文详细介绍了如何使用Seatunnel从单表同步扩展到多表同步的完整避坑指南,涵盖架构设计、性能调优、错误处理与数据一致性保障等关键环节。通过实战经验分享,帮助数据团队高效构建稳定可靠的数据同步流水线,特别适合处理用户画像系统等复杂场景下的多表同步需求。 阅读详情

kafka是apache基金会管理的开源流处理平台(官网http://kafka.apache.org/),但国内大多数人对其认知基本都是消息队列,所以我们先来了解下什么是消息队列。

消息队列

在这里插入图片描述

消息队列顾名思义就是存储消息的一个队列,消息生产者(producer) 往消息队列中投放消息, **消费者(consumer)**读取消息队列中的内容。在消息队列中的每条消息都会有个位置,就好比数组中的下标(index),在kafka中我们称之为offset。对于生产者而言,有个特殊的offset——LEO(log end offset) ,指向的是消息队列中下一个将被存放消息的位置。

这里重点说下消费者(consumer),一个消息队列当然可以被多个消费者(consumer)读取,每个消费者(consumer)都有唯一一个group-id将其区分开来。kafka也会记录下来每个消费者(consumer)已经读到哪个位置了(offset)。

问:为什么消费者消费的offset是由kafka记录,而不是由消费者自己记录?

主题(Topic)

在这里插入图片描述

上文我们以一份数据为例,讲了什么是消息队列。如果有多份数据(多个队列)该怎么办? 也很简单,kafka中我们可以使用不同的**主题(Topic)**将不同的数据区分开。不同的生产者(producer)可以往不同的Topic中存放数据,不同的消费者(consumer)也可以从不同的Topic中读取数据。

分区(Partation)

在这里插入图片描述

当一份数据非常大的情况下怎么办? 当然是考虑拆分了。在kafka中,你可以设置将一个主题(Topic)拆分成多个不同的分区(Partation),然后以分区(Partation)的维度来管理、生产和消费数据。 拆分带来最明显的好处就是提升吞吐性能,多个分区(Partation)之间并行,互不干扰。 至于怎么拆分,kafka有提供几个默认分区策略 轮询、随机、hash,当然你可以自己实现自己的分区策略,这里就不过多展开了。

消费者组(Consumer-group)

在这里插入图片描述

 主题(Topic)做完分区以后,消费者如何消费? 这里就不得不提到消费者组(Consumer-group)的概念,在kafka中,为了保证数据的一致性,同一个分区(Partation)同时只能被一个消费者(consumer)实例消费,为了提升消费者(consumer)的吞吐量,一般都会设置多个消费者(consumer)实例来消费不同的分区(Partation),这些实例共同组成一个消费者组(Consumer-group) ,他们共用一个Group-id。

注意:

  1. 由于同一个分区(Partation)同时只能被一个消费者(consumer)实例消费,所以超过分区(Partation)数量的消费者(consumer)实例个数没有任何意义,多余的消费者(consumer)实例也会被闲置。
  2. 如果消费者组(Consumer-group) 中有实例发生变化(上下线),或者分区(Partation)数量发生变化,都会触发消费者组rebalence。

副本(Replication)

在这里插入图片描述

kafka如何解决数据高可用的问题?在分布式环境下,要想保证数据尽可能不丢失,唯一的方法就是多复制几份放到不同的机器上,复制出来的数据就叫做副本(Replication)。

这里有几个关键词。 HW: high-water,一个特殊的offset,只有在这个offset以下的消息才能被消费者(consumer)读到,高水位的具体值取决于主从副本数据同步的状态,这里不再展开。 ISR: in-sync-replica,处于同步状态的副本集合,是指副本数据和主副本数据相差在一定返回(时间范围或数量范围)之内的副本,当然主副本肯定是一直在ISR中的。 当主副本挂了之后,新的主副本将从ISR中被选出来接替它的工作。

OSR: 和IRS相对应 out-sync-replica,其实就是指那些不在ISR中的副本。

副本主从同步

在这里插入图片描述

 当一份数据比复制出多份副本后,肯定得涉及到主从副本的同步在,从副本会定期从主副本拉去最新的数据。 另外需要注意kafka中,只有主副本才会对外提供读和写(高版本kafka从副本提供了有限的读功能),从副本的唯一作用就是给主副本当备胎。

说到主从同步,顺带提一下kafka的ack设置。 kafka中生产者(producer),可以通过request.required.acks参数来设置数据可靠性的级别:

  • 0: 生产者(producer) 不等待来自主副本的确认,发出去即认为发送成功,这种情况效率最高但可能有丢失数据的风险。
  • 1: (默认)生产者(producer) 发出数据后会等待主副本确认收到后,才认为消息发送成功,这种情况下主副本宕机时可能会丢失消息。
  • -1: (或者是all):生产者(producer) 等待ISR中的所有副本都确认接收到数据后才任务消息发送成功,可靠性最高,但因为需要等从副本拉去和确认,效率最低。

Broker

在这里插入图片描述


Kafka是以副本(Replica)维度管理数据的,管理这些数据肯定是需要管理者的,这个管理者就是Broker。Broker会将同一份数据的不同副本(Replication) 调度到不同的机器上,并且在副本(Replication) 数不足时生成新的副本,从而保证在部分Broker宕机后也能保证数据不丢失。
所有的Broker之间也会做一些元数据的相互同步,比如某份主数据在谁哪,从副本要从谁哪去拉取数据……

结语

第一次尝试手绘风讲解kafka入门知识,讲的很粗浅,确实很多细节都没有展开,见谅。

告别Vysor!用Scrcpy在Mac上无线投屏安卓手机(附魅族16th闪退修复实战) 本文详细介绍了如何在Mac上配置和使用开源投屏工具Scrcpy,实现安卓手机无线投屏的高效解决方案。从基础环境准备到高级功能调优,包括无线连接配置、输入控制增强、多设备管理和性能优化等实用技巧,特别针对魅族16th等机型的闪退问题提供了修复方案,帮助用户彻底告别Vysor等商业软件。 阅读详情

相关推荐

光伏发电系统模拟及其发电预测开源python工具pvlib

本文介绍光伏发电系统模拟及其发电预测开源python工具pvlib,以及举例介绍获取辐照度方法、光伏发电预测思路。

肖永威的专栏 1万+

kafka安装包下载慢,国内镜像下载地址

kafka tar安装包快速下载,国内镜像地址

LCGGood的博客 1万+

TMC5130/TMC5160步进电机驱动芯片深度解析与工程实践

步进电机驱动芯片是精密运动控制系统的物理执行核心,其性能直接决定定位精度、运行噪声与系统鲁棒性。基于电流闭环控制与电压前馈调制的混合驱动原理,现代智能驱动芯片如TMC51X0系列实现了微步插补、堵转检测和片上运动规划等关键技术突破。这类芯片通过SPI寄存器级配置实现StealthChop静音驱动与SpreadCycle高动态响应模式的无缝切换,在3D打印、CNC、机器人关节等场景中显著提升能效比与控制带宽。本文围绕TMC5130与TMC5160的硬件架构差异、寄存器操作时序、驱动模式物理机制及FreeRTO

weixin_35797963的博客 410

7张图了解kafka基本概念

kafka是apache基金会管理的开源流处理平台(官网http://kafka.apache.org/),但国内大多数人对其认知基本都是消息队列,所以我们先来了解下什么是消息队列。消息队...

qianshanding0708的博客 140

避坑指南:Zabbix poller进程100%占用的5种常见原因及解决方案

本文深入剖析了Zabbix poller进程占用率高达100%的五大常见原因,包括监控项与进程数不匹配、不可达主机资源浪费、数据库性能瓶颈、监控项配置不合理以及版本缺陷。文章提供了从系统化诊断到针对性解决方案的完整指南,并重点介绍了如何通过优化zabbix_server.conf中的StartPollers等关键参数进行有效调优,帮助运维人员从根本上解决这一经典性能问题。

7z8x2c4v6b9的博客 250

Intel Realsense windows安装与入门

realsense400系列介绍: https://www.intelrealsense.com/stereo-depth/?utm_source=intelcom_website&utm_medium=button&utm_campaign=day-to-day&utm_content=D400_learn-more_button realsense 435i介绍: ...

hanshuning的专栏 1万+

AIGC大厂Java面试实录:JDK17、Redis缓存、Kafka任务削峰、Spring AI+RAG大模型应用,谢飞机三轮被虐哭(附完整答案解析)

—国内头部AIGC大厂,拥有AI绘画、AI写作、AI视频生成、模型微调与Prompt工程平台,日生成请求千万级。。今天来面试的是,一个简历上写着"精通Java、熟悉AI"的水货程序员。面试官是传说中的,人称"技术面阎王",三句话能问哭十个候选人。

You_Z_Lan的博客 184

Excel-MCP实战指南:零代码实现大模型与Excel的智能交互

本文详细介绍了Excel-MCP工具如何实现大模型与Excel的无缝交互,无需编写代码即可完成数据读写、图表生成等复杂操作。通过实战案例展示了Excel-MCP在销售报表自动化、财务对账等企业级场景中的应用,大幅提升工作效率。文章还提供了安装指南、核心功能解析和常见问题解决方案。

weixin_29212429的博客 433

供应链金融大厂Java面试实录:JDK17、Redis分布式锁、Kafka融资削峰、Seata分布式事务、Spring AI+RAG智能风控,谢飞机三轮被虐哭(附完整答案解析)

场景设定:供应链金融大厂「链融科技」——核心企业信用背书、应收账款转让、在线融资、智能风控,日放款额超百亿。业务链路「融资申请→风控审核→合同签署→放款→回款监控」贯穿全程。

You_Z_Lan的博客 172

【软考高项论文】论信息系统项目管理的干系人绩效域

例如,在处理与电信运营商合作铺设光纤网络的问题时,考虑到其在通信设施建设和运维方面的专业性和重要性,我们将之定位为高权力高利益的干系人,给予了高度关注和优先沟通。项目全程,我们对干系人绩效域的执行效果进行了定期检查和评估,通过定量与定性的数据收集,确认了项目在干系人管理上的成效,具体表现为:建立了稳固的工作关系网络,使干系人普遍认可项目目标;鉴于本项目牵涉到政府各级部门、企事业单位、市民团体、技术研发伙伴等多种类型的干系人,且干系人的诉求和影响力各异,因此,有序且持续的干系人参与管理显得尤为关键。

Programming Talk 1681

私家侦探如何追踪难以找到的人,掌握几个很少人知道的在线免费查询网站,搜索人名、电话号码以及地址的开源网站

私家侦探如何追踪难以找到的人,掌握几个很少人知道的在线免费查询网站,搜索人名、电话号码以及地址的开源网站。

代码讲故事 6487

Redis后端分布式与高并发架构演进

本文系统阐述了后端分布式与高并发架构的演进过程,从基础网络通信到高可用架构设计。首先分析阻塞式I/O的瓶颈及连接池优化方案;然后深入讲解高并发核心——I/O多路复用技术;接着引入消息队列实现解耦异步;最后探讨数据层的高可用方案,包括主从复制和哨兵模式。全文通过七张技术图谱,完整呈现了从单机连接到分布式高可用的架构演进路径,形成了一个环环相扣的知识体系,为解决海量并发问题提供了系统化的技术方案。

2302_80268561的博客 399

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Kafka 如何实现顺序消费?

Kafka仅保证分区内消息有序,不支持全局有序。实现顺序的关键是:生产端通过相同Key确保消息进入同一分区(配合幂等生产者防重试乱序),消费端保证分区独占且按Key路由至内存队列,由单线程串行处理。吞吐提升可按Key拆分队列并行处理,避免并行导致乱序。核心口诀:同Key同分区,同分区同线程。

200

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

消费回调固定 return nil:错误传播与 Kafka 位点提交的区别

Mongo 写入失败时处理器记录错误但不 Mark,外层回调仍返回 nil;返回值与 Kafka 位点提交是不同动作。失败消息是否重投或被后续位点越过,需要结合分区水位分析。

2501_92769340的博客 166

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

第十二篇:《完整实战:订单事件驱动系统(Kafka + 消费者 + 死信队列)》

这篇按一条完整的订单链路来搭:订单服务写库 + 发事件,库存服务消费并扣减,失败走指数退避重试,重试耗尽后进入死信队列,消费端全程幂等去重。Outbox 的 relay 是至少一次,DLQ 的重试也是至少一次。重试消费组的 Lag 速率:order-events.retry 的消费 lag 如果持续增长且不回落,说明重试没有收敛,可能正在走向“重试爆炸”的早期形态。retries=MAX_VALUE 配合幂等生产者,解决的是生产者重试导致的 Broker 端重复,不解决消费端业务重复——后者是下一节的事。

qq_45239623的博客 384

Flink 连接器选型实战:HDFS、Kafka、MySQL 与 Doris 的分层数据架构

连接器选型不是技术炫技,而是对数据特征的准确判断。HDFS承担离线归档与批处理,靠分区和滚动策略控制文件质量。Kafka是实时链路的中枢,靠分区、攒批和事务保证吞吐与一致性。MySQL只做维表和小结果集,靠缓存和限流保护在线库。Doris承接大数据量分析写入,靠分桶、攒批和两阶段提交保证性能与准确。把这四者按数据规模、延迟要求和一致性要求分层组合,就能搭出一套既稳定又可扩展的 Flink 数据架构。

2401_83857914的博客 409

Kafka 的存储也能进对象存储:用 AutoMQ 把日志流写进 RustFS

Kafka 的痛点是存储和 broker 绑死在一起。topic 一多、留存一久,broker 本地盘就被日志段塞满,扩容不是加 broker 就是换更大的盘,数据还得在节点间搬来搬去。更麻烦的是 broker 一旦挂了,恢复全靠副本在别的节点重建,磁盘 IO 先爆一轮。AutoMQ 是 Kafka 的一个云原生发行版,思路是把存储和 broker 彻底解耦:预写日志先在本地缓冲,随后作为不可变…

分布式存储与RustFS的博客 318

通过 Docker 快速搭建 Kafka 开发测试环境

本文介绍通过Docker快速搭建Kafka开发测试环境的两种模式:无认证PLAINTEXT与SCRAM认证SASL_PLAINTEXT。首先生成KRaft集群ID,配置数据目录并使用docker-compose启动单机Broker。在无认证模式下初始化后,创建SCRAM用户;随后通过修改监听器协议、JAAS配置及客户端认证文件,切换至SASL认证模式。利用持久化数据卷,凭据可跨重启保留。适用于开发调试,生产环境需增强安全配置。

331

kafka集群(kafka_2.13-3.5.1.tgz)添加用户密码认证

继上篇文章zk集群添加完用户密码后,kafka集群也需要添加认证,主要方法与zk类似。

weixin_44418421的博客 232

【Kafka 从入门到实战】从手写一个队列到生产级消息中间件:架构、分区、消费组、零拷贝全解析

本文从队列基础出发,层层解析Kafka架构与设计精髓,涵盖消息队列本质、核心术语、分区机制、生产者消费者模型及四大性能优化原理:顺序写入、批量压缩、页缓存、零拷贝。附完整可运行Python代码(建Topic、生产/消费),并总结12道高频面试题与踩坑记录,帮助读者真正理解Kafka“为何快”,而非仅背“零拷贝”一词。

wiwiwiwiooo的博客 331

第八篇:《Kafka Connect 与 Kafka Streams:数据集成与流处理的两种路径》

还有 exactly.once.source.support 只覆盖 Source 侧的精确一次,Sink 侧的重复仍然要靠目标系统的幂等或 DLQ 兜底——这和第七篇的结论完全一致:框架不解决语义正确性,只解决工程效率。KRaft 和 EOS 让 Kafka 内部更可靠,但 Connect 和 Streams 的分工不会因此模糊:Connect 把数据搬进来搬出去,Streams 在 Kafka 内部算,算到边界之外仍然要自己兜底一致性。判断标准只有一句话:你是在“搬数据”,还是在“算数据”。

qq_45239623的博客 360

kafka指定分区消费

【代码】kafka指定分区消费。

hy_208的博客 63

只 Mark 最后一条:Kafka 跨分区消费水位的风险

历史快照中两个分区重启后 lag 为 1;当前批次回调只 Mark 最后一条,可能漏记其他分区的进度,但快照不足以证明永久停滞或唯一根因。

2501_92769340的博客 177
上一篇: 亿级流量架构怎么做资源隔离?写得太好了!
下一篇: Nginx 挂了怎么办?怎么实现高可用?
在酒吧写代码
博客等级 码龄7年 210粉丝 330原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值