当前位置: 首页 > news >正文

Kafka核心原理

1、Topic的分片和副本机制

分片作用:

解决单台节点容量有限的问题,节点多,效率提升,吞吐量提升。通过分片,将一个大的容器分解为多个小的容器,分布在不同的节点上,从而实现分布式存储。

分片的数量没有限制,与节点数量没有关系,分片数量不会超过总节点数量的三倍。

副本作用:

提升数据的可靠性,副本越多数据越可靠,但是数据冗余越高。

副本数量有限制,最多和节点的数量相等,但是一般构建1~3个之间。

2、Kafka如何保证数据不丢失

数据传输的三个阶段:

生产者生产是数据到broker

broker存储数据

消费者从broker上消费数据

生产端如何保证数据不丢失:

当生产者生产数据到Broker后,Broker应该给于确认相应(ack)。

ack 确认机制,主要有三种方案,分别为0   1   -1(ALL)

0:生产者只管将数据生产到Borker ,不等待Broker返回的ack 信息

1:生产者将数据生产到Broker,需要等待Broker端Topic的对应分片上的主副本接收到消息后,即为成功发送消息。

-1: 生产者将数据生产到broker,需要等待broker端Topic的对应分片所有副本都接收到消息,即为成功发送

生产中一般根据消息重要情况以及生成和消费速率来选择相应的级别。一般来说,重要程度越高的,安全级别越高,速率越高,优先保证安全性,在此基础上,保持平衡。

相关问题思考:

1-生产者发送一条数据到Broker,Broker给于一次响应,如果Broker迟迟不予响应,怎么办?

先等待,然后重试,最后报错,先等待一段时间,当超时后,然后触发充重试策略,进行重试擦擦操作,当重试后依然没有响应,最后程序报错,停止发送。

2-生产者发送一条数据,Broker就要给予一次响应,那么这样是否会占用更多的带宽,如果占用,如何解决?

肯定会影响,可以引入缓存池,生产者在生产数据的时候,底层先将其放置到一个缓存池,当池子中消息数据达到一批数据大小后,会专门有一个子线程,触发执行,将数据生产到Broker,此时Broker只需要对这一批数据给予一次响应即可,异步发送。

3- 如果采用一批一批的发送,如果Broker又没有给予响应,但是,此时缓存池中数据已经满了,如何解决?

可以选择直接清空缓存池或者不清空,如果数据可以重复读,直接报错清空即可,后续重新读取数据即可,如果数据不可重复读,可以提前设置处理方案,将每一个消息提前先找一个容器进行备份存储,自己维护数据,当发送成功,删除一部分数据,如果出错,重启后,先从这个容器将剩余的数据发送即可,当然如果选择不清空,那么一直等待即可。

相关的一些参数设置:

buffer.memory 设置缓存池大小,默认值33554432(32M)

retries 重试的次数,默认值2147483647,最终的重试策略取决于超时设置

batch.size  表示一批数据大小,默认值16384(16KB)

delivery.timeout.ms 总超时时间,默认值120000(120S)

requesst.timeout.ms 每一次请求后的超时时间(等待时间),默认值 30000(30s )

相关文章:

Kafka核心原理

1、Topic的分片和副本机制 分片作用: 解决单台节点容量有限的问题,节点多,效率提升,吞吐量提升。通过分片,将一个大的容器分解为多个小的容器,分布在不同的节点上,从而实现分布式存储。 分片…...

探秘前后端开发世界:猫头虎带你穿梭编程的繁忙街区,解锁全栈之路

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

洛谷_分支循环

p2433 问题 5 甲列火车长 260 米,每秒行 12 米;乙列火车长220 米,每秒行 20 米,两车相向而行,从两车车头相遇时开始计时,多长时间后两车车尾相离?已知答案是整数。 计算方式:两车车…...

MySQL数据库入门到精通——进阶篇(3)

黑马程序员 MySQL数据库入门到精通——进阶篇(3) 1. 锁1.1 锁-介绍1.2 锁-全局锁1.3 锁-表级锁1.3.1 表级锁-表锁1.3.2 表级锁元数据锁( meta data lock,MDL)1.3.3 表级锁-意向锁1.3.4 表级锁意向锁测试 1.4 锁-行级锁1.4.1 行级锁-行锁1.4.2…...

Mind Map:大语言模型中的知识图谱提示激发思维图10.1+10.2

知识图谱提示激发思维图 摘要介绍相关工作方法第一步:证据图挖掘第二步:证据图聚合第三步:LLM Mind Map推理 实验实验设置医学问答长对话问题使用KG的部分知识生成深入分析 总结 摘要 LLM通常在吸收新知识的能力、generation of hallucinati…...

[引擎开发] 杂谈ue4中的Vulkan

接触Vulkan大概也有大半年,概述一下自己这段时间了解到的东西。本文实际上是杂谈性质而非综述性质,带有严重的主观认知,因此并没有那么严谨。 使用Vulkan会带来什么呢?简单来说就是对底层更好的控制。这意味着我们能够有更多的手段…...

docker--redis容器部署及地理空间API的使用示例-II

文章目录 Redis 地理位置类型API命令操作示例JAVA使用示例导入依赖RedisTemplate 操作GeoData示例CityInfo实体类Geo操作接口类Geo操作接口实现类SpringBoot测试类RedissonClient 操作GeoData示例docker–redis容器部署及与SpringBoot整合 docker–redis容器部署及地理空间API的…...

Vue中如何进行文件浏览与文件管理

Vue中的文件浏览与文件管理 文件浏览与文件管理是许多Web应用程序中常见的功能之一。在Vue.js中,您可以轻松地实现文件浏览和管理功能,使您的应用程序更具交互性和可用性。本文将向您展示如何使用Vue.js构建文件浏览器和文件管理功能,以及如…...

jenkins利用插件Active Choices Plug-in达到联动显示或隐藏参数,且参数值可修改

1. 添加组件 Active Choices Plug-in 如jenkins无法联网,可在以下两个地址中下载插件,然后放到/home/jenkins/.jenkins/plugin下面重启jenkins即可 Active Choices Active Choices | Jenkins plugin 2. 效果如下: sharding为空时&#xf…...

香蕉叶病害数据集

1.数据集 第一个文件夹为数据增强(旋转平移裁剪等操作)后的数据集 第二个文件夹为原始数据集 2.原始数据集 Cordana文件夹(162张照片) healthy文件夹(129张) Pestalotiopsis文件夹(173张照片&…...

天地无用 - 修改朋友圈的定位: 高德地图 + 爱思助手

1,电脑上打开高德地图网页版 高德地图 (amap.com) 2,网页最下一栏,点击“开放平台” 高德开放平台 | 高德地图API (amap.com) 3,在新网页中,需要登录高德账户才能操作。 可以使用手机号和验证码登录。 4&#xff0c…...

AtCoder Beginner Contest 232(A-G)

A - QQ solver (atcoder.jp)直接按题意模拟即可。 B - Caesar Cipher (atcoder.jp)按题意模拟即可 C - Graph Isomorphism (atcoder.jp)按题意模拟即可 D - Weak Takahashi (atcoder.jp) 一个非常套路的网格dp E - Rook Path (atcoder.jp) (1)题意 有…...

计算机网络(第8版)-第5章 运输层

5.1 运输层协议概述 5.1.1 进程之间的通信 图5-1 中两个运输层之间有一个深色双向粗箭头,写明“运输层提供应用进程间的逻辑通信”。 图5-1 运输层为相互通信的应用进程提供了逻辑通信 5.1.2 运输层的两个主要协议 5.1.3 运输层的端口 请注意,这种…...

AtCoder Beginner Contest 231(D-F,H)

D - Neighbors (atcoder.jp) (1)题意 给出M组关系,问是否有一个排列,能表示A[i]和B[i]相邻 (2)思路 考虑如果有环,显然不能满足排列,因为排列中度数最多为2,若有超过2的显…...

【Python】map

map()函数是Python内置函数之一,它的主要作用是将一个函数应用于可迭代对象中的每个元素,并返回一个包含结果的迭代器。 map()函数的语法如下: map(function, iterable)function参数是一个函数,表示要应用于可迭代对象每个元素的…...

Swift 5.9 与 SwiftUI 5.0 中新 Observation 框架应用之深入浅出

0. 概览 Swift 5.9 一声炮响为我们带来全新的宏(Macro)机制,也同时带来了干霄凌云的 Observation 框架。 Observation 框架可以增强通用场景下的使用,也可以搭配 SwiftUI 5.0 而获得双剑合璧的更强威力。 在本篇博文&#xff0c…...

【已解决】在 Vite 项目中使用 eslint-config-ali 时遇到的解析错误

错误还原 搭建 Vite 项目 pnpm create vite my-vue-app --template vue-ts安装 eslint-config-ali pnpm i -D eslint-config-ali typescript-eslint/parser typescript-eslint/eslint-plugin eslint-plugin-import eslint-import-resolver-typescript vue-eslint-parser esl…...

蓝桥杯每日一题2023.10.5

3420. 括号序列 - AcWing题库 题目描述 题目分析 对于这一我们需要有前缀知识完全背包 完全背包的朴素写法&#xff1a; #include<bits/stdc.h> using namespace std; const int N 1010; int n, m, v[N], w[N], f[N][N]; int main() {cin >> n >> m;fo…...

PyTorch实例:简单线性回归的训练和反向传播解析

文章目录 &#x1f966;引言&#x1f966;什么是反向传播&#xff1f;&#x1f966;反向传播的实现&#xff08;代码&#xff09;&#x1f966;反向传播在深度学习中的应用&#x1f966;链式求导法则&#x1f966;总结 &#x1f966;引言 在神经网络中&#xff0c;反向传播算法…...

Arcgis提取玉米种植地分布,并以此为掩膜提取遥感影像

Arcgis提取玉米种植地分布上&#xff0c;并以此为掩膜提取遥感影像 一、问题描述 因为之前反演是整个研究区&#xff0c;然而土地利用类型有很多类&#xff0c;只在农田或者植被上进行反演&#xff0c;需要去除水体、建筑等其他类型&#xff0c;如何处理得到下图中只有耕地类…...

软件工程与计算总结(四)项目管理基础

目录 一.项目和项目管理 二.团队组织与管理 三.软件质量保障 四.软件配置管理 五.项目实践 一.项目和项目管理 1.软件开发远不是纯粹的编程&#xff0c;随着软件规模的增长&#xff0c;软件开发活动也变得越来越复杂~ 2.软件项目就是要将所有的软件开发活动组织起来&#…...

【Python】datetime 库

# timedelta(days, seconds, microseconds,milliseconds, minutes, hours, weeks) 默认按顺序传递参数 # 主要介绍 datetime.datetime 类 # 引入 from datetime import datetime today datetime.now() # 获取当前时间 2023-10-05 15:58:03.218651 today1 datetime.utcnow() #…...

从0开始python学习-28.selenium 需要图片验证的登录

url https://test.com/login driver.get(url) # 获取登录页面需要输入账号密码进行模拟登录操作 user driver.find_element(By.XPATH,//*[id"login"]/div[2]/div/form[2]/div[2]/div/div/input).send_keys(username) pwd driver.find_element(By.XPATH,//*[id&qu…...

Nginx搭建Rtmp流媒体服务,并使用Ffmpeg推流

文章目录 1.rtmp流媒体服务框架图2.nginx配置3.配置nginx4.使用ffmpeg推流5.实时推摄像头流 本项目在开发板上使用nginx搭建流媒体服务&#xff0c;利用ffmpeg进行推流&#xff0c;在pc上使用vlc media进行拉流播放。 1.rtmp流媒体服务框架图 2.nginx配置 下载&#xff1a;wge…...

IDEA 将一个普通Java工程转化为maven工程

打开IntelliJ IDEA并打开Java工程。 在项目窗口中&#xff0c;右键单击项目名称&#xff0c;选择“Add Framework Support”。 在弹出的窗口中&#xff0c;选择“Maven”。 在“Maven Information”窗口中&#xff0c;填写Group Id、Artifact Id和Version等基本信息。 点击…...

linux下的永久保存行号

linux下的永久保存行号 1.首先 这里是引用 输入命令&#xff1a;vi ~/.vimrc 其次 这里是引用 输入命令 set number...

92岁高龄的创始人张忠谋谈台积电发展史

一、张忠谋和台积电 在台北一间办公室里&#xff0c;张忠谋最近拿出一本印有彩色图案的旧书。它的标题是《VLSI 系统导论》&#xff0c;这是一本研究生水平的教科书&#xff0c;描述了计算机芯片设计的复杂性。92岁的张先生满怀敬意地举起它。 92岁高龄的台积电创始人张忠谋 “…...

【VIM】VIm初步使用

玩转Vim-从放弃到入门_哔哩哔哩_bilibili...

教育类《中学政史地》收稿方向-投稿邮箱

教育类《中学政史地》收稿方向-投稿邮箱 《中学政史地》收稿方向&#xff1a;中学政治、历史、地理类稿件 《中学政史地》创办于1987年&#xff0c;是我国唯一一份集中学政治、历史、地理三门学科为一体的综合性月刊。每月两期&#xff0c;分初中版和高中版。以服务学生、服务…...

数据库的备份与恢复

数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中&#xff0c;数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因&#xff1a; 程序错误人为操作错误运算错误磁盘故障灾难&#xff08;如火灾、地震&#xff09;和盗窃 数据库备份…...

wordpress如何本地安装/网络公司有哪些

354 TCP通信程序练习6&#xff08;多线程实现文件上传&#xff09; &#xff08;复杂的课&#xff09; &#xff08;代码实际运行结果不理想&#xff0c;重听3&#xff0c;依然不行&#xff0c;暂略&#xff09; 【练习6】 客户端&#xff0c;数据来自文本文件&#xff0c;…...

网站域名设计方案/公众号推广一个6元

warning: excess elements in array initializer警告&#xff1a;数组初始值设定项中有多余元素 (定义的数组长度比赋值的个数小)数组定义出错“conflicting types for …” 错误原因一&#xff1a;原来是因为没有先做函数声明&#xff0c;而函数位于main()之后。在main函数前声…...

sql server做网站/湖北网络推广有限公司

IBM WebSphere Application Server社区版V2.1.1.2&#xff08;以下称为社区版&#xff09;是基于Apache Geronimo 2.1.4的免费使用的Java平台&#xff0c;企业版5.0&#xff08;Java EE 5&#xff09;认证的应用程序服务器。 Community Edition使用Java身份验证和授权服务&…...

手机网站建设服务电话/地推放单平台

代码快速注释 支持对选择的代码块进行快速注释&#xff0c;使用快捷键Ctrl/快速进行注释。对于已注释的代码快&#xff0c;再次使用快捷键Ctrl/取消注释。 更多技术交流请加入QQ群 群名称&#xff1a;harmonyos鸿蒙技术交流 群 号&#xff1a;856567895 从零开始入门学习Harm…...

湖南网站建设的公司/搜索引擎营销优化的方法

item_search-按关键字搜索商品 lazada.item_search 公共参数 请求地址: 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,…...

公司域名备案/神马seo教程

android系统&#xff0c;按住MENU键开机&#xff0c;会安全模式进入系统。代码位置&#xff1a;frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java收索SAFE MODE 这个tag会看到相关代码。步骤&#xff1a;在开机动画时&#xff0c;按住…...