深入Kafka核心设计与实践原理读书笔记第二章
1 生产者
生产逻辑
- 配置生产者客户端参数及创建相应的生产者实例。
- 构建待发送的消息。
- 发送消息
- 关闭实列
参数说明
- bootstrap.servers :用来指定生产者客户端链接Kafka集群搜需要的broker地址清单,具体格式 host1:port1,host2:port2,可以设置一个或多个地址中间,号分割,参数默认 空串。这里要注意并不需要配置所有的broker地址,应为生产者会在broker中找到其他的broker地址,但是建议配置两个以上,当其中一个broker宕机时还可以通过另外一个工作。
- key.serializer和value.serializer:broker端接受的消息必须以字节数组的形式存在。
- client.id : 默认 “” 用来设置KafkaProducer对应的客户端id
- max.block.ms:默认值 60000 用来控制KafkaProducer 中send()方法和partitionsFor()方法的阻塞时间
- partitioner.class:用来指定分区器
- enable.idempotence:默认值 false 是否开启幂等性
- interceptor.classes 用来设置生产者拦截器
- max.in.flight.requests.per.connection:5 限制每个连接最多缓存的请求数
- metadata.max.age.ms: 300000 5分钟 如果在这个时间内元数据没有更新的话就强制更新。
- transactional.id:null 设置事务id 必须唯一
- batch.size 16384(16KB): 生产者客户端中用于缓存消息的缓冲区大小。
序列化器(Serializer)
生产者发送消息到kafka是需要将对象序列化城流才能访问到kafka,消费者需要把流反序列化 才能进行 消费。
分区器
消息在通过send()方法发送到broker的过程中,有可能需要经过拦截器、序列化器和分区器(partitioner)的一系列作用之后才能被真正的发往broker。拦截器一般不是必须的,而序列化器时必须的必须的。消息经过序列化之后就需要确定它发送的分区,如果消息ProducerRecord中指定了partition字段,那么就不需要分区器的作用,因为partition代表的就是所要发往的分区。
分区器时通过kay来计算partition的值,分区器的作用就是为消息分配分区。
kafka的默认分区器是 org.apache.kafka.clients.producer.internals.DefaultPartitioner
生产者拦截器(Interceptor)
生产者拦截器主要用来在消息发送前做一些准备工作,如按照规则过滤不符合条件的消息,修改消息等,也可以用来做一些定制化的需求,kafkaProducer在将消息序列化和计算分区之前会调用拦截器的onSend()方法来对消息进行相应的定制化
原理分析

- 主线程中由KafkaPartition创建消息
- 通过拦截器
- 通过序列化器
- 通过分区器
- 到达消息累加器(RecordAccumulator)主要是用来收集消息方便 Sender可以批量发送
相关文章:
深入Kafka核心设计与实践原理读书笔记第二章
1 生产者 生产逻辑 配置生产者客户端参数及创建相应的生产者实例。构建待发送的消息。发送消息关闭实列 参数说明 bootstrap.servers :用来指定生产者客户端链接Kafka集群搜需要的broker地址清单,具体格式 host1:port1,host2:port2,可以设置一个或多…...
知乎kol投放怎么做?知乎kol资源从哪里找?
每个领域都有一些比较专业且具有话语权的大V博主,他们推荐某个产品或是品牌就能对粉丝产生很深的影响力,影响用户消费决策。 互联网时代,每个热门的内容平台上都活跃着一大批kol博主,做kol投放具有很高的商业价值。 知乎内容社区…...
python设计模式-享元设计模式,抽象工厂设计模式,面向对象设计模式
享元设计模式 享元(flyweight)设计模式属于结构设计模式类别。 它提供了一种减少对象数的方法。 它包含各种有助于改进应用程序结构的功能。享元对象最重要的特性是不可变的。 这意味着一旦构建就不能修改它们。 该模式使用HashMap来存储引用对象 如何实现享元(flyweight)设计…...
10条终身受益的Salesforce职业发展建议!
Salesforce这个千亿美金巨兽,在全球范围内有42,000多名员工。作为一家发展迅速的科技公司,一直在招聘各种角色,包括销售、营销、工程师和管理人员等。 据IDC估计,从2016年到2020年,该生态系统创造了190万个工作岗位。…...
电子科技大学人工智能期末复习笔记(四):概率与贝叶斯网络
目录 前言 概率 概率公式 贝叶斯公式 链式条件概率 例题 1. 求联合概率分布/边缘概率分布/条件概率分布 2. 灵活运用贝叶斯公式 概率总结 贝叶斯网络 判断独立性 两个事件独立的判断 条件独立性的判断 假设条件独立的链式法则 ⚠Active / Inactive Paths 判断独…...
码上掘金实现电子木鱼
前言 前几天在朋友圈看到“敲电子木鱼”的视频,敲一下木鱼就提示“功德 1”,还带有敲击声和念经的声音,感觉挺有意思的。 心血来潮,捣鼓了一晚上,借助码上掘金实现了这个功能。 展示效果 素材 准备素材如下&#…...
深度学习_L2正则化
文章目录参考博客正则化介绍正则化的实现参考博客 深入理解L1、L2正则化 PyTorch 实现L2正则化以及Dropout的操作 正则化介绍 正则化(Regularization)是机器学习中一种常用的技术,其主要目的是控制模型复杂度,减小过拟合。最基…...
第一章 认识Python
本章目录 一、初识Python 二、Python环境安装 三、Python代码的执行 四、Python集成开发环境 五、Python2.x与Python3.x的区别 六、本章小结 Python代码的编辑和运行方式主要分为两种:交互模式和脚本模式。 在交互模式下, 用户输入Python代码并按…...
复习0206
目录 一、访问修饰符 一、权限范围 二、注意事项 二、封装(面向对象的三大特征之一) 一、封装的好处 二、封装的实现步骤 三、和构造器结合 四、练习题中的细节 一、访问修饰符 一、权限范围 访问修饰符用于控制方法和属性(成员变量…...
小红书如何查看笔记
小红书如何查看笔记 在小红书上找关键词的 6 大方法进阶版想要查找品类词、行业词、产品词、长尾词的小伙伴看过来,这一次我们就来给大家升级了 6 种找关键词的方法,也是我们的进阶版。 第一种,下拉框查找。我们只需要在小红书 AP 输入主要的…...
linux001之linux系统部署安装
注意:本次安装讲解以乌班图(Ubuntu) 虚拟机来说明讲解,既然学习linux,就无需用图形界面了,直接用服务器版本 1. 下载乌班图 网址:https://www.ubuntu.org.cn/download/server 然后就可以看到右下角有下载提示ÿ…...
服务异步通信 RabbitMQ-高级篇
服务异步通信RabbitMQ-高级篇服务异步通信RabbitMQ-高级篇1.消息可靠性1.1.生产者消息确认1.1.1.修改配置1.1.2.定义Return回调1.1.3.定义ConfirmCallback1.2.消息持久化1.2.1.交换机持久化1.2.2.队列持久化1.2.3.消息持久化1.3.消费者消息确认1.3.1.演示none模式1.3.2.演示aut…...
【PR】零基础快速入门教程
【PR】零基础快速入门教程PR(Premiere)能做什么?PR欢迎界面及新建项目工作区及窗口说明导入文件建立序列视频剪辑添加字幕导出视频使用软件:Premiere2020新年卷起来,写文章已近不能满足与我了,我要向着更前…...
Matlab 点云迭代加权最小二乘法拟合平面(抑制噪声)
不要虚掷你的黄金时代,不要去倾听枯燥乏味的东西,不要设法挽留无望的失败,不要把你的生命献给无知、平庸和低俗。这些都是我们时代病态的目标,虚假的理想。 ----王尔德 文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 受到之前博客的启发(Matlab 点云最小二乘…...
2023 软件测试行业内卷动荡,红利期过去后,何去何从?
前段时间席卷全互联网行业的内卷现象,想必有不少人都深陷其中。其实刚开始测试行业人才往往供不应求,而在发展了十几年后,很多人涌入这个行业开始面对存量竞争。红利期过去了,只剩内部争夺。 即便如此,测试行业仍有许…...
【王道数据结构】第六章(下) | 图的应用
目录 一、最小生成树 二、最短路径 三、有向⽆环图描述表达式 四、拓扑排序 五、关键路径 一、最小生成树 1、最小生成树的概念 对于一个带权连通无向图G (V,E),生成树不,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所…...
Leetcode:518. 零钱兑换 II(C++)
目录 518. 零钱兑换 II 问题描述: 实现代码与解析: 动态规划(完全背包): 原理思路: 377. 组合总和 Ⅳ 问题描述: 实现代码与解析: 动态规划(完全背包࿰…...
Java中类是什么
类(class)是构造对象的模板或蓝图。 我们可以将类想象成制作小甜饼的模具,将对象想象为小甜饼。由类构造(construct)对象的过程称为创建类的实例(instance)。 正如前面所看到的,用Java 编写的所有代码都位于某个类里面。 标准 Java 库提供了几千个类&a…...
C进阶:预处理
🤖本篇文章主要讲解预处理的知识,即使你是小白也可以看的懂,若你对预处理有所不解,确定不来看看吗?😿 目录 一.代码运行是的两种环境 二.翻译环境 三.预定义符号 四.#define 1.define 定义宏 2.带有…...
侯捷C++系统工程师
前言我相信对于每一个学习C的同学和从业者来说,台湾著名学者侯捷老师的C系列都是不可错过的好视频。侯捷老师在网上已有五门课,分别是:C面向对象开发、STL标准库与泛型编程、C新标准C1&14、C内存管理机制以及C Startup揭秘讲师介绍侯捷老…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
