首页 > 其他分享 >Kafka 特性总结

Kafka 特性总结

时间:2024-01-25 23:23:36浏览次数:27  
标签:总结 压缩 特性 Kafka 消息 磁盘 拷贝 数据

Kafka 特性可总结如下:

1. 高可用

Kafka 0.8 以前是没有高可用机制的。

Kafka 0.8 以后,通过副本机制来实现高可用,基于副本机制实现 Kafka 的高可用。

2. 持久性

Kafka 集群接收到 Producer 发过来的消息后,将其持久化到磁盘。此外,还支持数据备份。

3. 数据不易丢失

通过合理的配置,Kafka 消息不易丢失。

4. 高吞吐量

Kafka 高吞吐量的原因:分区、批量发送和压缩消息、顺序读写、零拷贝

分区

当生产者向对应 Topic 传递消息,消息通过负载均衡机制传递到不同的 Partition 以减轻单个服务器实例的压力;

一个 Consumer Group 中可以有多个 Consumer,多个 Consumer 可以同时消费不同 Partition 的消息,大大的提高了消费者的并行消费能力。

批量发送和压缩消息

  • 批量发送:在发送消息的时候,Kafka 不会直接将少量数据发送出去,否则每次发送少量的数据会增加网络传输频率,降低网络传输效率。Kafka 会先将消息缓存在内存中,当超过一个的大小或者超过一定的时间,那么会将这些消息进行批量发送。
  • 端到端压缩消息: Kfaka会将这些批量的数据进行压缩,将一批消息打包后进行压缩,发送给 Broker 服务器后,最终这些数据还是提供给消费者用,所以数据在服务器上还是保持压缩状态,不会进行解压,而且频繁的压缩和解压也会降低性能,最终还是以压缩的方式传递到消费者的手上,在 Consumer 端进行解压。

顺序读写

Kafka 是个可持久化的日志服务,它将数据以数据日志的形式进行追加,最后持久化在磁盘中。

Kafka 消息存储时依赖于文件系统。为了利用数据的局部相关性:操作系统从磁盘中以数据块为单位读取数据,将一个数据块读入内存中,如果有相邻的数据,就不用再去磁盘中读取。所以,在某些情况下,顺序磁盘访问能比随机内存访问还要快。同时在写数据的时候也是将一整块数据块写入磁盘中,大大提升 I / O 效率。

零拷贝

普通的数据拷贝 read & write:

零拷贝主要的任务是避免 CPU 做大量的数据拷贝任务,减少不必要的拷贝

内存映射文件(Memory Mapped Files,mmap)在 64 位操作系统中一般可以表示 20G 的数据文件,它的工作原理是直接利用操作系统的页缓存来实现文件到物理内存的直接映射。

显然,使用 mmap 替代 read 很明显减少了 1 次拷贝,当拷贝数据量很大时,无疑提升了效率。

补充

标签:总结,压缩,特性,Kafka,消息,磁盘,拷贝,数据
From: https://www.cnblogs.com/i9code/p/17988405

相关文章

  • InnoDB引擎的4大特性
    InnoDB引擎具有以下四大特性:事务支持:InnoDB引擎支持ACID(原子性、一致性、隔离性、持久性)事务,确保数据的完整性和一致性。行级锁定:InnoDB引擎使用行级锁定,可以提高并发性能,减少数据锁定对其他事务的影响。外键约束:InnoDB引擎支持外键约束,可以确保数据的完整性,实现数据之间的关联......
  • 今日总结
    Spark四大特点Spark使用Scala语言进行实现,它是一种面向对、函数式编程语言,能够像操作本地集合一样轻松的操作分布式数据集。Spark具有运行速度快、易用性好、通用性强和随处运行等特点。速度快由于ApacheSpark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所......
  • js中数组反转的方法总结
    1.常用的方法reverse()[1,2,3,4].reverse()  //[4,3,2,1]2.采用for循环方式使用递减循环遍历的方式,将元素一次存入新的数组中,新数组就是反转后的新数组constdataRef=[1,2,3,4]constnewArr:any[]=[]for(leti=dataRef.length-1;i>=0;i--){ne......
  • 李宏毅《机器学习》总结 - CNN
    使用场景:对图片进行分类首先,将图片变成向量。例如,对于一个彩色的\(N\timesN\)(这个N指的是像素个数)图片,其对应着一个\(N\timesN\times3\)的矩阵(其中3是图片的channel,在彩色图片中,每个像素由RGB构成,因此channel为3)一个初始的想法将这个矩阵拉长,变成一个向量,然后......
  • MAT使用思路总结
    参考:https://blog.csdn.net/x275920/article/details/123991656主要分为2种操作。简单粗暴来个内存泄漏分析LeakSuspects和TopConsumers,可以看出大部分简单的内存泄漏问题看保留堆/深堆RetainedHeap大的,这个表示如果这个对象被清理,那么RetainedHeap都是可以被清理的,所......
  • 鸿蒙OS 技术特性
    硬件互助,资源共享分布式软总线分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发任务和传输数据。分布式软总线示意图见[图1]图1分布式软总线示意图点击放大分布式设备虚拟化分布式设备虚拟化平台可以实现不......
  • 选题要求分析总结
    问题:1、数据分布在不同的部门和系统中,数据采集难度大2、由于数据来源多样,且可能存在数据重复、数据不一致等问题3、缺乏专业的数据分析工具,导致数据分析能力不足,无法充分利用数据为决策提供支持4、缺乏有效的数据可视化工具,导致数据无法直观地展示,从而影响决策效率 功能:1......
  • Postman使用总结
    对于黑盒测试工程师来说,使用postman的场景无非就是拿它看看接口返回的数据。比对一下预期返回的参数与实际是否相符。所以我这里的postman使用方法仅限于如何调用接口。 首先,你需要下载postman(毋庸置疑,其实用网页版也可以)官网主页:https://www.postman.com/downloads/安装你......
  • Canal报错总结
    这是我的SQL表里面插入数据刷新下就可以看到已经查询出来了canal报错nosuchmethod…bytebuffer解决方法:更新jdk版本与es一致cancal报错configdirnotfound替换classpath中间封号两边的值canal控制台乱码将其改为GBK即可ERRORc.a.otter.canal.adapter.launcher......
  • canvas绘制图形总结
    ctx.beginPath()//新建一条路径,生成之后,图形绘制命令被指向到路径上生成路径。ctx.closePath()//闭合路径之后图形绘制命令又重新指向到上下文中。ctx.stroke()//通过线条来绘制图形轮廓。ctx.fill()//通过填充路径的内容区域生成实心的图形。 绘制矩形 ctx.save() ctx.......