kafka知识 --kafka权威指南

2023-11-17

我想既然Kafka是为了写数据而产生的,那么用作家的名字来命名会显得更有意义.我在大学时期上过很多文学课程,很喜欢Franz
Kafka.况且,对于开源项目来说,这个名字听起来很酷.因此,名字和应用本身基本没有太多联系 --Jay Kreps

第1章 初识Kafka

1.2.1 消息和批次
kafka的数据单元被称为消息.
为了提高效率,消息被分批次写入kafka.批次就是一组消息,这些消息属于同一个主题和分区.
如果每一个消息都单独穿行于网络,会导致大量的网络开销,把消息分成批次传输可以减少网络开销.

1.2.3 主题和分区
Kafka的消息通过主题进行分类.主题好比数据库的表,或者文件系统里的文件夹.主题可以被分为若干个分区,一个分区就是一个提交日志.消息以追加的方式写入分区,然后以先进先出的顺序读取.
在这里插入图片描述

1.2.4 生产者和消费者
生产者创建消息.也被称为发布者写入者.
一般情况下,一个消息会被发布到一个特定的主题上.生产者在默认情况下把消息均衡地分布到主题的所有分区上,而并不关心特定消息会被写到哪个分区.
在某些情况下,生产者会把消息直接写到指定的分区.通常是通过消息键和分区器来实现的,分区器为键生成一个散列值,并将其映射到指定的分区上.可以保证包含同一个键的消息会被飞到同一个分区上.生产者也可以使用自定义的分区器,根据不同的业务规则将消息映射到分区.

消费者读取消息.也被称为订阅者读者.消费者订阅一个或多个主题,按照消息生成的顺序读取它们.消费者通过检查消息的偏移量来区分已经读取过的消息.偏移量是另一种元数据,它是一个不断递增的整数值,在创建消息时,kafka会把它添加到消息里.在给定的分区里,每个消息的偏移量都是唯一的.消费者把每个分区最后读取的消息偏移量保存在Zookeeper或Kafka上,如果消费者关闭或重启,它的读取状态不会丢失.
消费者是消费者群组的一部分,会有一个或多个消费者共同读取一个主题.群组保证每个分区只能被一个消费者使用.
如图,有3个消费者同时读取一个主题.其中的两个消费者各自读取一个分区,另一个消费者读取其他两个分区.消费者与分区之间的映射通常被称为消费者对分区的所有权关系.
通过这种方式,消费者可以消费包含大量消息的主题.而且,如果一个消费者失效,群组里的其他消费者可以接管失效消费者的工作.
在这里插入图片描述
1.2.4 broker和集群
一个独立的kafka服务器被称为broker.broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存.broker为消费者提供服务,对读取分区的请求作出响应,返回已经提交到磁盘上的消息.
broker是集群的组成部分.每个集群都有一个broker同时充当了集群控制器的角色(自动从集群的活跃成员中选举出来).控制器负责管理工作,包括将分区配给broker和监控broker.在集群中,一个分区从属于一个broker,该broker被称为分区的首领.一个分区可以分配给多个broker,这个时候会发生分区复制.这种复制机制为分区提供了消息冗余,如果有一个broker失效,其他broker可以接管领导权.不过,相关的消费者和生产者都要重新链接到新的首领.

在这里插入图片描述
保留消息(在一定期限内)是kafka的一个重要特性.kafka broker集群默认的消息保留策略是:要么保留一段时间(比如7天),要么保留到消息达到一定大小的字节数(比如1GB).可以通过把主题当作紧凑型日志,只有最后一个带有特定键的消息会被保留下来.

1.2.6 多集群
数据类型分离
安全需求隔离
多数据中心(灾难恢复)

kafka提供了一个叫做MirrorMaker的工具,可以用它来实现集群间的消息赋值.MirrorMaker的核心组件包含了一个生产者和一个消费者,两者之间通过一个队列相连.
消费者从一个集群读取消息,生产者把消息发送到另一个集群上.
在这里插入图片描述

第二章 安装kafka

参考链接 https://blog.csdn.net/Cocktail_py/article/details/89877741

2.3.1 常规配置
1.broker. id
标识符.默认值0.在整个Kafka集群中必须是谓一致.
2.zookeeper.connect
localhost:2181表示这个Zookeeper是运行在2181端口.hostname:port/path
hostname是Zookeeper服务器的机器名或IP地址;
port是Zookeeper的客户端连接端口;
/path(可选)Zookeeper路径,作为Kafka集群的chroot环境
3.log.dirs
Kafka把消息保存在磁盘上,通过log.dirs指定的目录.用一组逗号分隔的本地文件系统路径.如果指定了多个路径,broker根据"最少使用"原则,往拥有最少数目分区的路径新增分区
4.num.recovery.threads.per.data.dir
一下3种情况,kafka会使用可配置的线程池来处理日志片段
服务器正常启动,用于打开每个分区的日志片段;
服务器崩溃后重启,用于检查和截短每个分区的日志片段;
服务器正常关闭,用于关闭日志片段.
如果num.recovery.threads.per.data.dir=8,log.dir指定了3个路径,那么总共需要24个线程

5.auto.create.topics.enable
当一个生产者开始往主题写入消息时;
当消费者开始从主题读取消息时;
当任意一个客户端向主题发送元数据请求时;

2.3.2 主题的默认配置

  1. num.partitions
    新创建的主题将包含多少个分区.主题分区的个数必须要大于broker的个数.
    如何选定分区数量
    在这里插入图片描述
    2.log. retention. ms
    kafka通常根据时间来决定数据可以被保留多久.默认使用log.retention.hours参数来配置时间,默认值为168小时.log. retention. minutes和log. retention. ms.推荐使用log. retention. ms , kafka会优先使用具有最小值的那个参数.
    3.log.retention.bytes
    保留字节数,用于判断消息是否过期,作用在每一个分区上.如果一个包含8个分区的主题,并且log.retention.bytes被设为1GB,那么这个主题最多可以保留8GB的数据.
    4.log.segment.bytes
    当日志片段大小达到log.segment.bytes指定的上限(默认是1GB)时,当前日志片段就会被关闭,一个新的日志片段被打开.如果一个日志片段被关闭,就开始等待过期.
    5.log.segment.ms
    指定多长时间之后日志片段会被关闭.默认情况下log.segment.ms没有设定值,所以只能根据大小来关闭日志片段.
    6.message.max.bytes
    broker通过设置message.max.bytes参数来限制单个消息的大小,默认值是1000 000,也就是1MB.
    这个值对性能有显著的影响.值越大,那么负责处理网络连接和请求的线程就需要花越多的时间来处理这些请求.还会影响磁盘写入快的大小,从而影响IO吞吐量.
    更新中…
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kafka知识 --kafka权威指南 的相关文章

  • 【CentOS7离线ansible-playbook自动化安装CDH5.16(内附离线安装包地址,及自动化脚本)】

    CentOS7 离线环境 使用ansible自动部署CDH5 16 前言 本文介绍如何使用作者开发的自动化脚本 离线部署cdh集群 只需要简单的配置下yum源和cdh集群节点IP等几个参数 就可实现一键部署cdh集群 省去配置mysql n
  • Zookeeper的常见面试题

    1 Zookeeper 1 1 Zookeeper基本概念 Zookeeper作为一个优秀高效且可靠的分布式协调框架 ZooKeeper 在解决分布式数据一致性问题时并没有直接使用Paxos算法 而是专门定制了一致性协议叫做 ZAB Zoo
  • Spring Boot Kafka - 序列化和反序列化JSON

    文章目录 Spring Boot Kafka 序列化和反序列化JSON 前言 配置JsonSerializer和JsonDeserializer 定义一个Model类 Producer类 Consumer类 Controller类 测试 小
  • 20道常见的kafka面试题以及答案

    JAVA面试宝典 搞定JAVA面试 不再是难题 系列文章传送地址 请点击本链接 目录 1 kafka的消费者是pull 拉 还是push 推 模式 这种模式有什么好处 2 kafka维护消息状态的跟踪方法 3 zookeeper对于kafk
  • 面对kafka频发的rebalance,该如何处理?

    Kafka 是我们最常用的消息队列 它那几万 甚至几十万的处理速度让我们为之欣喜若狂 但是随着使用场景的增加 我们遇到的问题也越来越多 其中一个经常遇到的问题就是 rebalance 重平衡 问题 但是要想了解 rebalance 那就得先
  • kafka如何避免消费组重平衡

    目录 前言 协调者 重平衡的影响 避免重平衡 重平衡发生的场景 参考资料 前言 Rebalance 就是让一个 Consumer Group 下所有的 Consumer 实例就如何消费订阅主题的所有分区达成共识的过程 在 Rebalance
  • flink连接kafka报:org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic

    报错信息 Caused by org apache flink runtime JobException Recovery is suppressed by NoRestartBackoffTimeStrategy at org apach
  • Kafka/Spark消费topic到写出到topic

    1 Kafka的工具类 1 1 从kafka消费数据的方法 消费者代码 def getKafkaDStream ssc StreamingContext topic String groupId String consumerConfigs
  • python 自建kafka消息生成和消费小工具

    要将 Kafka 的消息生产和消费转换为 API 接口 我们可以使用 Python 的 Web 框架 其中 Flask 是一个轻量级且易于使用的选择 下面是一个简单的例子 使用 Flask 创建 API 来生成和消费 Kafka 消息 1
  • 第十四章 kafka专题之日志数据删除策略

    日志数据清理 为了控制磁盘的容量 需要对过去的消息进行清理 1 内部定时任务检测删除日志 默认是5分钟 2 日志清理参数配置 支持配置策略对数据进行清理 以segment为基本单位进行定期清理 当前正在使用的segment不会被清理 启用c
  • Kafka 顺序消费方案

    Kafka 顺序消费方案 前言 1 问题引入 2 解决思路 3 实现方案 前言 本文针对解决Kafka不同Topic之间存在一定的数据关联时的顺序消费问题 如存在Topic insert和Topic update分别是对数据的插入和更新 当
  • Kafka——集群

    文章目录 集群 1 搭建个集群 2 集群发送消息 3 集群消费 3 1 Procuder 3 2 Consumer 4 消费顺序 集群 对于kafka来说 一个单独的broker意味着kafka集群中只有一个节点 要想增加kafka集群中的
  • Flink消费kafka出现空指针异常

    文章目录 出现场景 表现 问题 解决 tombstone Kafka中提供了一个墓碑消息 tombstone 的概念 如果一条消息的key不为null 但是其value为null 那么此消息就是墓碑消息 出现场景 双流join时 采用的是l
  • flink 1.4版本flink table方式消费kafka写入hive方式踩坑

    最近在搞flink 搞了一个当前比较新的版本试了一下 当时运行了很长时间 hdfs里面查询有文件 但是hive里面查询这个表为空 后面用了很多种方式 一些是说自己去刷新hive表 如下 第一种方式刷新 alter table t kafka
  • ELK配置记录(filebeat+kafka+Logstash+Elasticsearch+Kibana)

    一 简介 elk日志平台 日志收集 分析和展示的解决方案 满足用户对 志的查询 排序 统计需求 elk架构 filebeat 采集 kafka Logstash 管道 Elasticsearch 存储 搜索 Kibana 日志应用 各组件功
  • kafka 监控工具--CMAK

    CMAK previously known as Kafka Manager is a tool for managing Apache Kafka clusters See below for details about the name
  • 【Docker安装部署Kafka+Zookeeper详细教程】

    Docker安装部署Kafka Zookeeper Docker拉取镜像 Docker拉取zookeeper的镜像 docker pull zookeeper Docker拉取kafka的镜像 docker pull wurstmeiste
  • shell脚本,一次性启动kafka集群

    版本centos6 5 64位操作系统 已配置JDK1 8 三个节点 在s121节点上可以免密登录到另外两个节点 另外kafka0 9 0 1的安装目录相同 修改了主机名 并在每个节点的hosts文件中设置了映射 脚本内容 bin bash
  • 从 MySQL 到 DolphinDB,Debezium + Kafka 数据同步实战

    Debezium 是一个开源的分布式平台 用于实时捕获和发布数据库更改事件 它可以将关系型数据库 如 MySQL PostgreSQL Oracle 等 的变更事件转化为可观察的流数据 以供其他应用程序实时消费和处理 本文中我们将采用 De
  • Kafka速度之谜:高性能的幕后秘密大揭秘

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 kafka高性能的原因 Page Cache ZeroCopy 零拷贝 前言 Kafka的介绍 kafka是linkedIn开源的分布式消息系统 归给Ap

随机推荐

  • mysql 快照和binlog_mysql binlog二进制日志详解

    mysql binlog二进制日志详解 更新时间 2011年10月31日 23 13 00 作者 二进制日志包含了所有更新了数据或者已经潜在更新了数据 例如 没有匹配任何行的一个DELETE 的所有语句 基本概念 定义 二进制日志包含了所有
  • Tcl脚本学习

    包的创建和调用 在tcl脚本中 我们可以通过创建和调用包来增强代码的可复用性 创建包的步骤 1 在包脚本文件中 首先声明 package provide 标识当前文件提供了一个包 之后在该文件中完成包的内容 2 通过pkg mkIndex命
  • element table 表格实现上移、下移

    业务场景 有时候需要前端实现上移和下移功能 代码如下 根据交互形式 我这里是把第一条数据的上移按钮置灰不可点击 disabled scope index 0 最后一条数据下移按钮置灰不可点击 disabled scope index 1 t
  • DCDC输入输出电容的选择和计算(转载)

    文章转自MPS论坛 https forum monolithicpower cn t topic 2105 目前市面上的电容种类繁多 在为我们的电源电路选择输入输出电容的时候难免会挑花了眼 本文就来浅析一下如何选择输入输出电容及其相关的计算
  • 企业运维经典面试题汇总(5)

    1 git和svn 的区别 Git是分布式的 而Svn不是分布的 Git把内容按元数据方式存储 而SVN是按文件 Git没有一个全局版本号 而SVN有 目前为止这是跟SVN相比Git缺少的最大的一个特征 Git的内容的完整性要优于SVN G
  • Qt-窗口嵌套exe

    某些特殊场景 我们要在主程序中嵌套第三方程序 这样臃肿的设计好比 在乡村小楼里面建设一个商业广场 本人不是很喜欢 Qt的QProcess和QWindow可以为我们完成这样的任务 核心思路即 QProcess启动第三方exe 获取进程ID w
  • 各种窗体操作的bug解决

    1 java lang IllegalArgumentException View com android internal policy impl PhoneWindow DecorView 41e0f220 V E R D 0 0 53
  • TensorFlow 2.0 安装指南

    TensorFlow 2 0 beta1 已经发布 本文详细介绍在个人电脑或服务器上安装 TensorFlow 2 0 beta1 的步骤和各种细节 让你第一次安装 TensorFlow 2 0 就上手 一般安装步骤 TensorFlow
  • RangeError: Maximum call stack size exceeded

    问题现场 执行环境 安卓设备 V8 引擎 Java 代码中调用 JavaScript 报错日志 2021 10 21 14 52 53 156 30457 30457 com fuck you E com fuck you JavaInvo
  • ‘vite’ 不是内部或外部命令,也不是可运行的程序或批处理文件问题解决

    问题解析 使用vite创建vue3 0项目的时候 vite不会自动 install 相关的依赖 需要我们手动去安装 进入项目的node modules目录里面查看 什么都没有 所以说出现这个问题的原因是 缺少安装依赖这一步 vite不像 n
  • 卷积神经网络之计算机视觉应用(一)

    卷积神经网络之计算机视觉应用 一 一 引言 21世纪开始 卷积神经网络就被成功的大量用于检测 分割 物体识别以及图像的各个领域 值得一提的是 图像可以在像素级别进行打标签 这样就可以应用在比如自动电话接听机器人 自动驾驶汽车等技术中 尽管卷
  • 宝元系统u盘使用说明_联想小新Air14使用U盘重装win7系统图解

    联想小新Air14是一款适合年轻人使用的笔记本 高大上的颜值符合现在阶段的年轻用户的审美要求 拥有很高的屏占比 还配置了一个酷酷的按压式指纹识别功能 得到了很多用户的喜爱 开机速度超快 运行流畅 能让用户感受不一样的使用体验 这款笔记本预装
  • element-ui 下拉菜单 el-dropdown-menu 组件 不能动态渲染数据怎么解决?

    关于element ui 下拉菜单 el dropdown menu 组件 不能动态渲染 数据怎么解决 element ui 官网中的例子是这样写的
  • State(状态模式)行为型

    状态模式 一 概述 二 结构 三 实例 四 适用场景 五 优缺点 一 概述 描述 一天有早中晚 不同时间下 太阳光是不一样的 所以随着早中晚的状态变化 太阳的行为也随着变化 定义 状态模式是一种行为设计模式 让你能在一个对象的内部状态变化时
  • Vs2013打开项目时,一直处理等待状态,并显示“Microsoft Visual Studio正忙”的提示窗,处理方法

    问题 现象 VS2013打开项目时 一直处理等待状态 并显示 Microsoft Visual Studio正忙 的提示窗 如下图 此时只能在window任务管理器关闭其进程devenv exe 但再将Vs打开 新建项目 又是好的 只是运行
  • buck电路_BUCK电路工作原理与常用词汇介绍

    首先总结用的最多的电源 1 软启动 AP3502E的PIN8为SS 意思就是soft start 软启动 那么什么是软启动呢 软启动就是使得输出电压慢慢上升到固定值 目的很简单就是为了降低上电瞬间各器件的应力 图片如下 通常的设计在SS脚处
  • kafka如何避免消费组重平衡

    目录 前言 协调者 重平衡的影响 避免重平衡 重平衡发生的场景 参考资料 前言 Rebalance 就是让一个 Consumer Group 下所有的 Consumer 实例就如何消费订阅主题的所有分区达成共识的过程 在 Rebalance
  • iMX8MM启动流程

    iMX8MM启动流程 1 Boot ROM 2 IVT和DCD 3 启动流程 4 总结 我移植的板子是讯为i MX8MM开发板 参考板为官方 8MMINILPD4 EVK开发板 iMX8MM uboot2021 04 linux5 15 3
  • LeetCode: 14

    Count Binary Substrings 简单 但是需要判断啥时候计数 清零 class Solution public int countBinarySubstrings string s if s size lt 1 return
  • kafka知识 --kafka权威指南

    我想既然Kafka是为了写数据而产生的 那么用作家的名字来命名会显得更有意义 我在大学时期上过很多文学课程 很喜欢Franz Kafka 况且 对于开源项目来说 这个名字听起来很酷 因此 名字和应用本身基本没有太多联系 Jay Kreps