Kafka简单汇总

Kafka的结构图
多个Parttion共同组成这个topic的所有消息。每个consumer都属于一个consumer group,每条消息只能被consumer group中的一个Consumer消费,
但可以被多个consumer group消费。即组间数据是共享的,组内数据是竞争的。
二、消费模型
1、点对点消息传递模式
【发布者】-【queue】-【消费者】
点对点消息系统中,消息持久化到一个queue(队列)中。此时,将有一个或多个消费者消费队列中的数据。
但是一条消息只能被消费一次。当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除,
也就是消费者从Queue里面抢消息。
2、发布-订阅消息传递模式
【发布者】-【Topic】-【消费者】
发布-订阅消息系统中,消息被持久化到一个topic中。与点对点消息系统不同的是,消费者可以订阅一个或多个topic(分类),
消费者可以消费该topic中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。
需要注意上面两种模式,是有条件的,只有Gruop组和Consumer达到一定的数量比,才会触发。
1、当某个Topic只有一个消费组订阅,且该消费组只有一个消费者时,就是队列(queue)下的点对点消费模式。
2、当某个Topic有多个消费组订阅,且每个消费组只有一个消费者时,就是发布订阅模式。
三、消费过程

当2个消费者在消费同一个分区时,2个消费者都在在各自里面记录当前的offset。

生产者生产消息,添加到topIc时,每次都是追加到末尾。

为了提高Kafka的吞吐量,物理上把Topic分成一个或多个Partition,每个Partition都是有序且不可变的消息队列。
每个Partition在物理上对应一个文件夹,该文件夹下存储这个Partition的所有消息和索引文件。

消费者组,在不同的分区有不同的offset。
四、分区策略
所谓分区策略是决定【生产者】将消息发送到哪个分区的算法。Kafka为我们提供了
默认的分区策略,同时它也支持自定义分区策略。1、轮询策略:Round-robin 策略,即顺序分配。
轮询策略有非常优秀的负载均衡表现,它总是能保证消息最大限度地被平均分配到所有分区上,故默认情况下它是最合理的分区策略,也是最常用的分区策略之一。2、随机策略-Randomness 策略。随机就是随意地将消息放置到任意一个分区上。4、按消息键保序策略-Key-ordering 策略。
Kafka 允许为每条消息定义消息键,简称为 Key。这个 Key 的作用非常大,它可以是一个有着明确业务含义的字符串;也可以用来表征消息元数据。一旦消息被定义了 Key,那么你就可以保证同一个 Key 的所有消息都进入到相同的分区里面,由于每个分区下的消息处理都是有顺序的,故这个策略被称为按消息键保序策略。默认分区规则
1、如果指定的partition,那么直接进入该partition
2、如果没有指定partition,但是指定了key,使用key的 hash一选择partition。
3、如果既没有指定partition,也没有指定key,使用轮询一的方式进入partition。
五、ACK 应答机制
1、生产者确认机制
生产者发送消息,Broker落盘状态,0、1、all
2、消费者确认机制
在Kafka中,消费者确认是通过消费者位移的提交实现的。类似RabbitMQ的ACK机制。
消费者位移
每个 consumer 实例都会为它消费的分区维护属于自己的位置信息来记录当前消费了多少条消息。这在 Kafka 中有一个特有的术语:位移(offset)。
相比较将offset保存在服务器端(broker),这样虽然简单,但是有如下的问题:1、broker变成了有状态的,增加了同步成本,影响伸缩性。2、需要引入应答机制来确定消费成功。3、由于需要保存众多consumer的offset,可能需要引入复杂的数据结构,对资源有一定的浪费。在Kafka中,消费者组(Consumer Group)负责管理分发消费消息,因此将offset保存在消费者组中是比较合适的选择。其数据格式只需要是特定格式的整形数据即可。
offset 对于 consumer 非常重要,因为它是实现消息交付语义保证(message delivery semantic)的基石。
消息交付语义即最多一次、最少一次、精确一次。

相关文章:
Kafka简单汇总
Kafka的结构图 多个Parttion共同组成这个topic的所有消息。每个consumer都属于一个consumer group,每条消息只能被consumer group中的一个Consumer消费, 但可以被多个consumer group消费。即组间数据是共享的,组内数据是竞争的。二、消费模型…...
任务交给谁?委派模式告诉你最佳选择!
文章目录 一、概念二、角色三、代码实现四、委派模式在源码中的体现五、委派模式的优缺点优点缺点 一、概念 委派模式(Delegate Pattern)又叫委托模式,是一种面向对象的设计模式。委派模式是一种行为模式,不属于GOF23种设计模式之中基本作用…...
【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)
一、什么是Servlet? Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app 1.1 Servlet能干什么? 🚕允许程序猿注册一个类, 在 Tomcat 收到某个特定的 HTTP 请求的时候, 执行这个类…...
降低城市内涝风险,万宾科技内涝积水监测仪的作用
频繁的内涝会削弱和损坏城市的关键基础设施,包括道路、桥梁和公用设施。城市内涝风险降低可以减少交通中断事件,也可以保护居民安全并降低路面维修等成本,进一步确保城市基本服务继续发挥作用。对城市可持续发展来讲有效减少内涝的风险是重要…...
水库大坝安全监测预警系统的重要作用
水库大坝建造在地质构造复杂、岩土特性不均匀的地基上,在各种荷载的作用和自然因素的影响下,其工作性态和安全状况随时都在变化。如果出现异常,又不被及时发现,其后果不堪设想。全天候实时监测,实时掌握水库水位、雨情…...
【AI视野·今日NLP 自然语言处理论文速览 第六十五期】Mon, 30 Oct 2023
AI视野今日CS.NLP 自然语言处理论文速览 Mon, 30 Oct 2023 Totally 67 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers An Approach to Automatically generating Riddles aiding Concept Attainment Authors Niharika Sri Parasa,…...
腾讯云轻量服务器购买优惠,腾讯云轻量应用服务器优惠购买方法
你是否曾经为如何选择合适的服务器而苦恼?在互联网的海洋中,如何找到一个性价比高,性能稳定,价格合理的服务器供应商,确实是一个让人头疼的问题。今天,我要向你介绍的,是腾讯云轻量应用服务器的…...
zookeeper学习记录
本文Java代码地址: https://gitee.com/blackjie_1/ljUp/tree/master/zookeeperDemo 个人博客网站:什么是快乐 基于docker 安装 拉取zookeeper 3.4.10 docker pull zookeeper:3.4.10启动服务端 docker run -d -p 2181:2181 -v /root/docker/zookeepe…...
C语言--字符串详解(多角度分析,什么是字符串?字符串如何存储?字符串如何应用?字符串常用的库函数有哪些?)
目录 一、前言 💦什么是字符串 💦字符串如何存储? 二、字符串常量和字符数组 💦字符串常量 ✨什么是字符串常量? ✨字符串常量与指针 💦字符数组 ✨字符数组的应用 💦字符串常量与字符数组的…...
【文件包含】任意文件包含的理解
谈谈任意文件包含的理解 1.漏洞描述 攻击者可以利用任意文件包含漏洞,读取文件,执行代码,对服务器造成危害。程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成“封装”。在使用某个功能的时候,直接调用此…...
【ERROR】ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND No package.json
1、报错 启动项目的时候,报这个错误,是因为根目录错误,查看,根目录是否错误。...
Gitlab CI如何实现安全获取ssh-key拉取依赖项目,打包成品
文章目录 前言配置流程注册ssh-keygit runner映射文件方法1 .gitlab-ci.yml使用方法2 docker build 实现 总结 前言 之所以写这篇文章是由于存在以下场景: 当前的项目编译需要依赖别的项目协同编译,如何将别的项目也pull到该项目里,编译成品…...
C#匿名方法介绍
在C#中,匿名方法是一种没有名称的方法,可以被用作委托的参数或者赋值给委托类型的变量。匿名方法主要有两种形式:匿名方法和lambda表达式。 匿名方法:这是C# 2.0引入的特性。匿名方法用delegate关键字定义,它可以有参…...
Linux C/C++全栈开发知识图谱(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)
众所周知,在所有的编程语言中,C语言是一门颇具学习难度,需要很长学习周期的编程语言。甚至很多人经常听到一句调侃的话语——“C,从入门到放弃”。 C界的知名书籍特别多,从简单到高端书籍,许多书籍都是C之…...
pyTorch Hub 系列#2:VGG 和 ResNet
一、说明 在上一篇教程中,我们了解了 Torch Hub 背后的本质及其概念。然后,我们使用 Torch Hub 的复杂性发布了我们的模型,并通过相同的方式访问它。但是,当我们的工作要求我们利用 Torch Hub 上提供的众多全能模型之一时,会发生什么? 在本教程中,我们将学习如何利用称为…...
clip4clip:an empirical study of clip for end to end video clip retrieval
广告深度学习计算:阿里妈妈智能创意服务优化使用CPU/GPU分离的多进程架构,加速阿里妈妈智能创意服务。https://mp.weixin.qq.com/s/_pjhXrUZVzFRtiwG2LhnkwCLIP4Clip: CLIP 再下一城,利用CLIP实现视频检索 - 知乎前言: OpenAI 的论…...
rocksdb中测试工具Benchmark.sh用法(基准、性能测试)
1.首先要安装db_bench工具,这个工具在成功安装rocksdb之后就自动存在了,主要是在使用make命令之后就成功安装了,详情请见我之前的文章 2.确保成功安装db_bench之后,找到安装的rocksdb目录下面的tools文件夹,查看里面是…...
JS-项目实战-点击水果名修改特定水果库存记录
1、fruit.js function $(name) {if (name) {//假设name是 #fruit_tblif (name.startsWith("#")) {name name.substring(1); //fruit_tblreturn document.getElementById(name);} else {return document.getElementsByName(name); //返回的是NodeList类型}} }//当…...
Redis渐进式rehash小疑问
一、rehash是什么 在Redis中,Rehash是指在进行哈希表扩容或缩容时重新计算和重新分配哈希槽的过程。Redis使用哈希表来存储键值对,哈希表中的每个槽位对应一个哈希槽,每个槽位可以存储多个键值对。 当哈希表的负载因子(load facto…...
C#winform门诊医生系统+sqlserver
C#winform门诊医生系统sqlserver说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术:基于C#winform架构和sql server数据库 功能模块: 个人中心:修改个人信息、打开照片并进行修改 预约挂号:二级…...
紧急通知:2024 Q3起甲方招标强制要求提交AI辅助生成声明——ChatGPT项目计划书合规签署指南(含法律效力白皮书)
更多请点击: https://codechina.net 第一章:AI辅助生成声明的政策背景与合规必要性 近年来,全球主要经济体加速构建人工智能治理框架,AI生成内容(AIGC)的透明度与可追溯性已成为监管核心关切。欧盟《人工智…...
中文医疗对话数据集:构建医疗大语言模型的黄金语料库
中文医疗对话数据集:构建医疗大语言模型的黄金语料库 【免费下载链接】Chinese-medical-dialogue-data Chinese medical dialogue data 中文医疗对话数据集 项目地址: https://gitcode.com/gh_mirrors/ch/Chinese-medical-dialogue-data 在医疗AI领域&#x…...
实测Taotoken聚合接口在高峰时段的延迟与稳定性表现
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 实测Taotoken聚合接口在高峰时段的延迟与稳定性表现 作为开发者,在将大模型能力集成到生产环境时,服务的稳…...
港中文+深大:你吃的其实是假螃蟹!?
背景 贝类过敏是重大健康风险,影响全球约2%的人群。受交叉反应影响,开展跨物种的全面致敏蛋白谱分析对优化诊断与治疗至关重要。本研究旨在鉴定并比较6种广泛食用蟹类的致敏蛋白谱。 kahouchu@cuhk.edu.hk xiaojun1985918@szu.edu.cn christineyywai@cuhk.edu.hk #过敏…...
AI时代公众号生存指南(ChatGPT自动化运营全链路拆解)
更多请点击: https://codechina.net 第一章:AI时代公众号的生存逻辑与定位重构 在生成式AI深度渗透内容生态的当下,公众号已从“流量分发管道”蜕变为“人机协同的认知接口”。其生存逻辑不再依赖单一的推送频次或标题党技巧,而取…...
指令不生效?模型“装聋作哑”?ChatGPT自定义指令调试全流程,从日志埋点到上下文权重校准
更多请点击: https://codechina.net 第一章:指令不生效?模型“装聋作哑”?ChatGPT自定义指令调试全流程,从日志埋点到上下文权重校准 当用户设置的自定义指令(如“始终用简体中文回复”“拒绝回答政治类问…...
OBS高级计时器插件完整指南:6种计时模式让直播时间管理更专业
OBS高级计时器插件完整指南:6种计时模式让直播时间管理更专业 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 还在为直播时手忙脚乱地看时间而烦恼吗?OBS高级计时器插件是专为直播主设计…...
Marvis 1+5 智能体协作架构深度解析:六大 Agent 各司何职?底层又如何“对话“?
Marvis 15 智能体协作架构深度解析:六大 Agent 各司何职?底层又如何"对话"? 前言 2026 年 5 月 20 日,腾讯正式上线了操作系统级 AI 助手马维斯(Marvis)。它不走传统 AI 助手的"对话框&quo…...
DeepSeek多租户访问控制配置实战(含Kubernetes Admission Controller集成方案)
更多请点击: https://kaifayun.com 第一章:DeepSeek多租户访问控制配置实战(含Kubernetes Admission Controller集成方案) DeepSeek平台通过精细化的RBAC策略与动态准入控制实现企业级多租户隔离。其核心依赖于自定义Kubernetes …...
30+个Illustrator脚本解放你的设计时间:告别重复劳动的艺术
30个Illustrator脚本解放你的设计时间:告别重复劳动的艺术 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts Adobe Illustrator是设计师的必备工具,但重复性操…...
