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权威指南 的相关文章

  • 《从Paxos到ZooKeeper》读书笔记之第一章(二)

    从Paxos到ZooKeeper 读书笔记之第一章 二 1 2从ACID到CAP BASE 这一节由三小节 从大家数值的数据库事务的四个特性 引出来分布式事务的概念 通过对ACID模型的讨论 提出如何构建一个兼顾可用性和一致性的分布式系统方
  • kafka知识 --kafka权威指南

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

    生产者分析 生产者 producer 是负责向Kafka提交数据的 我们先分析这一部分 Kafka会把收到的消息都写入到硬盘中 它绝对不会丢失数据 为了优化写入速度Kafka采用了两个技术 顺序写入 和 MMFile 顺序写入 因为硬盘是机
  • Kafka【命令行操作】

    Kafka 命令行操作 Kafka 主要包括三大部分 生产者 主题分区节点 消费者 1 Topic 命令行操作 也就是我们 kafka 下的脚本 kafka topics sh 的相关操作 常用命令行操作 参数 描述 bootstrap s
  • kafka详解及集群环境搭建

    一 kafka详解 安装包下载地址 https download csdn net download weixin 45894220 87020758 1 1Kafka是什么 1 Kafka是一个开源消息系统 由Scala写成 是由Apac
  • kafka中partition数量与消费者对应关系

    kafka是由Apache软件基金会开发的一个开源流处理平台 kafka是一种高吞吐量的分布式发布订阅消息系统 它可以处理消费者在网站中的所有动作流数据 kafka中partition类似数据库中的分表数据 可以起到水平扩展数据的目的 比如
  • 六、Kafka consumer及ConsumerRebalanceListener实现

    1 comsumer代码示例 public class ConsumerMessage private static final String TOPIC NAME topic 07 public static void main Stri
  • Kafka 顺序消费方案

    Kafka 顺序消费方案 前言 1 问题引入 2 解决思路 3 实现方案 前言 本文针对解决Kafka不同Topic之间存在一定的数据关联时的顺序消费问题 如存在Topic insert和Topic update分别是对数据的插入和更新 当
  • 黑马头条 热点文章实时计算、kafkaStream

    热点文章 实时计算 1 今日内容 1 1 定时计算与实时计算 1 2 今日内容 kafkaStream 什么是流式计算 kafkaStream概述 kafkaStream入门案例 Springboot集成kafkaStream 实时计算 用
  • Flink设置Source数据源使用kafka获取数据

    流处理说明 有边界的流bounded stream 批数据 无边界的流unbounded stream 真正的流数据 Source 基于集合 package com pzb source import org apache flink ap
  • kafka消费者客户端线程安全以及多线程实现并发读取消息

    kafka的生产者客户端Producer是线程安全的 但是消费者客户端是非线程安全的 每次操作时都会调用accqure方法用来确定当前只有一个线程操作 如果有多个线程在操作 会抛出CME异常 针对这种情况 为了能够多线程更快速的读取消息 可
  • kafka + zookeeper下载/安装/使用(超详细)

    kafka是需要zk来支持 所以先下载zk 1 下载安装zookeeper 下载地址 选择不带source的 下载下来解压2次 进入到 D zookeeper apache zookeeper 3 6 1 bin conf 目录下 把zoo
  • win10系统下安装Kafka 的详细步骤

    Win10 系统下要使用Kafka需要经过以下三个步骤 1 安装JDK 需要安装依赖java JDK 2 安装zookeeper 资源协调 分配管理 3 安装Kafka 一 安装 Java SE Development Kit 13 0 1
  • Kafka : KafkaProducer Closing the kafka producer with timeoutMillis

    1 美图 2 背景 一段kafka写入程序 不晓得为啥突然发现很多奇怪的日志 kafka 多线程发送数据 然后在本地是可以的 在服务器上是偶现的 我写了一个本地程序多线程生产数据 发现是没有问题的 Test public void mult
  • kafka 监控工具--CMAK

    CMAK previously known as Kafka Manager is a tool for managing Apache Kafka clusters See below for details about the name
  • WebSocket + kafka实时推送数据(springboot纯后台)

    逻辑 kafka订阅消费者主题 消费后通过webSocket推送到前端 kafka vue financial webSocket 学习引用 SpringBoot2 0集成WebSocket 实现后台向前端推送信息 World Of Mos
  • 在windows系统下使用IDEA对kafka源码进行编译环境搭建以及配置

    目录 一 前期准备工作 step1 安装JDK1 8 step2 安装zookeeper单机版 step3 安装Gradle 5 4 step4 安装scala 2 11 12 二 将kafka源代码部署到编辑器IDEA并测试 step1
  • 一文弄懂事件Event与Kafka的区别

    事件 Event 和 Apache Kafka 是两个概念层面上有所不同的东西 它们在应用程序中的作用和使用场景也有很大的差异 1 概念和定义 事件 Event 事件是 系统内发生 的特定事情或状态变化的表示 在编程和软件设计中 事件通常被
  • Kafka基础—3、Kafka 消费者API

    一 Kafka消费者API 1 消息消费 当我们谈论 Kafka 消费者 API 中的消息消费时 我们指的是消费者如何从 Kafka 主题中拉取消息 并对这些消息进行处理的过程 消费者是 Kafka 中的消息接收端 它从指定的主题中获取消息
  • 从 MySQL 到 DolphinDB,Debezium + Kafka 数据同步实战

    Debezium 是一个开源的分布式平台 用于实时捕获和发布数据库更改事件 它可以将关系型数据库 如 MySQL PostgreSQL Oracle 等 的变更事件转化为可观察的流数据 以供其他应用程序实时消费和处理 本文中我们将采用 De

随机推荐

  • 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