我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【赵强老师】Kafka的持久化

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【赵强老师】Kafka的持久化

【赵强老师】Kafka的持久化

一、Kafka持久化概述

Kakfa 依赖文件系统来存储和缓存消息。对于硬盘的传统观念是硬盘总是很慢,基于文件系统的架构能否提供优异的性能?实际上硬盘的快慢完全取决于使用方式。同时 Kafka 基于 JVM 内存有以下缺点:

  • 对象的内存开销非常高,通常是要存储的数据的两倍甚至更高
  • 随着堆内数据的增加,GC的速度越来越慢

实际上磁盘线性写入的性能远远大于任意位置写的性能,线性读写由操作系统进行了大量优化(read-ahead、write-behind 等技术),甚至比随机的内存读写更快。所以与常见的数据缓存在内存中然后刷到硬盘的设计不同,Kafka 直接将数据写到了文件系统的日志中:

  • 写操作:将数据顺序追加到文件中
  • 读操作:从文件中读取

这样实现的好处:

  • 读操作不会阻塞写操作和其他操作,数据大小不对性能产生影响
  • 硬盘空间相对于内存空间容量限制更小
  • 线性访问磁盘,速度快,可以保存更长的时间,更稳定。

二、Kafka的持久化原理解析

一个 Topic 被分成多 Partition,每个 Partition 在存储层面是一个 append-only 日志文件,属于一个 Partition 的消息都会被直接追加到日志文件的尾部,每条消息在文件中的位置称为 offset(偏移量)。

如下图所示,我们之前创建了mytopic1,具有三个分区。我们可以到对应的日志目录下进行查看。

Kafka日志分为index与log(如上图所示),两个成对出现:index文件存储元数据,log存储消息。索引文件元数据指向对应log文件中message的迁移地址;例如2,128指log文件的第2条数据,偏移地址为128;而物理地址(在index文件中指定)+ 偏移地址可以定位到消息。
我们可以使用Kafka自带的工具来查看log日志文件中的数据信息:

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【赵强老师】Kafka的持久化

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【赵强老师】Kafka的持久化

一、Kafka持久化概述Kakfa 依赖文件系统来存储和缓存消息。对于硬盘的传统观念是硬盘总是很慢,基于文件系统的架构能否提供优异的性能?实际上硬盘的快慢完全取决于使用方式。同时 Kafka 基于 JVM 内存有以下缺点:对象的内存开销非常高,通常是要存储的数
【赵强老师】Kafka的持久化
2016-10-19

【赵强老师】Kafka的消息持久化

1、Kafka消息持久性概述Kakfa依赖文件系统来存储和缓存消息。对于硬盘的传统观念是硬盘总是很慢,基于文件系统的架构能否提供优异的性能?实际上硬盘的快慢完全取决于使用方式。同时 Kafka 基于 JVM 内存有以下缺点:对象的内存开销非常高,通常是要存储的
【赵强老师】Kafka的消息持久化
2016-09-25

【赵强老师】Redis的RDB持久化

Redis 提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。 AOF (Append-only file)持久化记录服务器执行的所有写操作命令,并在服务器启动时
【赵强老师】Redis的RDB持久化
2014-05-30

【赵强老师】Kafka的体系架构

一、什么是Kafka?数据工程中最具挑战性的部分之一是如何从不同点收集和传输大量数据到分布式系统进行处理和分析。需要通过消息队列正确地分离大量数据,因为如果一部分数据无法传送,则可以在系统恢复时传输和分析其他数据。有两种消息排队,对于上述目的,它们都是可靠的和
【赵强老师】Kafka的体系架构
2021-01-25

【赵强老师】SQL的字符函数

字符函数,顾名思义,操作的就是字符串。通过下图,我们来了解一下Oracle的字符函数。  一、大小写控制函数lower、upper、initcapselect lower("Hello World") 转小写,upper("Hello World") 转大写,
【赵强老师】SQL的字符函数
2016-12-20

【赵强老师】HBase的体系架构

一、什么是HBase?HBase是一个基于HDFS之上的分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“BigTable大表”,即:把所有的数据存入一张表中。就像Bigtable利用了Google文件系统(File S
【赵强老师】HBase的体系架构
2021-10-26

【赵强老师】数据库的事务

一、什么是事务?数据库事务(Transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。例如:从A账号给B账号转帐,对应于如下两条
【赵强老师】数据库的事务
2020-05-16

【赵强老师】Oracle RAC集群的概念

一、什么是Oracle RAC(Real Application Cluster)?Oracle RAC 是一个具有共享缓存架构的集群数据库,它克服了传统的无共享方法和共享磁盘方法的限制,为您的所有业务应用提供了一种具有高度可扩展性和可用性的数据库解决方案。O
【赵强老师】Oracle RAC集群的概念
2015-09-28

【赵强老师】MongoDB的inMemory存储引擎

一、MongoDB的存储引擎概述存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上。从MongoDB 3.2 版本开始,MongoDB 支持多数据存储引擎(Storage Engi
【赵强老师】MongoDB的inMemory存储引擎
2019-04-25

【赵强老师】Weblogic域和域的组成

一、什么是WeblogicWebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于Java EE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库
2023-06-02

【赵强老师】使用MongoDB的Web控制台

MongoDB可以通过web界面监控数据库,默认情况下该选项是关闭的,需要在启动的时候开启。启用web 控制台,需要在启动mongodb的时候,加上:--httpinterface启动MongoDB,观察输出的日志信息:  使用浏览器访问28017端口,即可看
【赵强老师】使用MongoDB的Web控制台
2017-06-17

【赵强老师】使用Oracle的跟踪文件

一、什么是跟踪文件?跟踪文件中包含了大量而详细的诊断和调试信息。通过对跟踪文件的解读和分析,我们可以定位问题、分析问题和解决问题。从跟踪文件的产生的来源来看,跟踪文件又可以分为两类:一类是数据库的操作人员有意生成的;另一类则是由于出现了异常错误,由数据库自动生
【赵强老师】使用Oracle的跟踪文件
2015-04-22

【赵强老师】Oracle数据库的存储结构

Oracle的存储结构分为:物理存储结构和逻辑存储结构。一、物理存储结构:指硬盘上存在的文件数据文件(data file)一个数据库可以由多个数据文件组成的,数据文件是真正存放数据库数据的。一个数据文件就是一个操作系统文件。数据库的对象(表和索引)物理上是被存
【赵强老师】Oracle数据库的存储结构
2019-11-21

【赵强老师】什么是Oracle的数据字典?

数据字典是oracle存放有关数据库信息的地方,几乎所有的系统信息和对象信息都可在数据字典中进行查询。数据字典是oracle数据库系统的信息核心,它是一组提供有关数据库信息的表和视图的集合,这些表和视图是只读的。它是随着数据库的建立而建立的,当数据库执行特定动
【赵强老师】什么是Oracle的数据字典?
2020-11-06

【赵强老师】删除表和Oracle的回收站

一、Oracle的Drop Table语句首先,我们来看一下Oracle Drop Table的语法格式。   解释一下里面的参数:schemaSchema表示方案名称,这里可以理解为用户名,缺省为当前用户下的表。比如,要删除scott用户下的emp表,dro
【赵强老师】删除表和Oracle的回收站
2020-12-27

【赵强老师】Oracle数据库的内存结构

首先,我们通过一张图片来了解一下Oracle数据库的内存结构,如下: 每个数据库实例有两个关联的内存结构—系统全局区(SGA),程序全局区(PGA)。系统全局(SGA):一组共享的内存结构(称为SGA 组件),其中包含一个OracleDB 实例的数据和控制信息
【赵强老师】Oracle数据库的内存结构
2019-11-19

【赵强老师】Redis的消息发布与订阅

Redis 作为一个publish/subscribe server,起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向Redis server订阅自己感兴趣的消息类型,当发布者通过publish命令向Redis server发
【赵强老师】Redis的消息发布与订阅
2021-07-29

【赵强老师】MongoDB管理用户的认证机制

一、MongoDB用户认证机制简介 为了认证客户端,你必须要添加一个对应的用户到MongoDB。基本的步骤分为以下几步: 用户管理接口:db.createUser()方法可以创建一个用户,添加完成后可以分配角色给用户,第一个用户必须是管理员,用来管理其他用
【赵强老师】MongoDB管理用户的认证机制
2014-10-06

【赵强老师】使用MongoDB的命令行工具:mongoshell

一、启动mongo shell安装好MongoDB后,直接在命令行终端执行下面的命令:mongo如下图所示:可选参数如下:也可以简写为:在mongo shell中使用外部编辑器,如:vi,只需设置环境变量:export EDITOR=vi启动mongo she
【赵强老师】使用MongoDB的命令行工具:mongoshell
2019-09-17

【赵强老师】Oracle存储过程中的out参数

一、什么是存储过程 Oracle存储过程可以说是一个记录集吧,它是由一些PL/SQL语句组成的代码块,这些PL/SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。 存储过程的好处
【赵强老师】Oracle存储过程中的out参数
2020-11-27

编程热搜

目录