当前位置: 首页 > news >正文

linux中缓存,在kafka上应用总结

linux中的缓存  页缓存 pagecatch(读缓存用于提供快速读)块缓存(用于提供其他设备快速写)当对读缓存读的时候,修改了读的数据,页缓存就会被标记为脏数据,等到写的时候它会向块缓存同步数据,并写入到磁盘中

零拷贝:如上kafka读取文件会由操作系统读到页缓存,在读到kafaka的输入缓存,在同步到输出缓存用于写入其他设备,数据写操作会调用系统的块缓存写入,然后再把块缓存数据写到网卡中,这个过程比较耗时,从系统到kafka应用完成多次数据转译,称为多次拷贝,这个过程线程会跨用户态和核心态的代码存在切换额外保存数据的额外消耗。特权指令和非特权指令要求cpu切换状态,内核态和用户态的指令不能跨状体工作 ,切换效率低而且这是一次操作数据量大的时候性能就越低。

kafka使用nio的channel加上buffer的transfrom_to函数实现数据0拷贝,直接将内存数据发送给kafka的消费者。

kafka的应答策略

kafka生产者保证数据发送的安全性,会对消息记录收集校验序列化,放入buff缓存,加快额外的其他数据处理,这些生产的数据会大量的涌入缓存,消息发送器sender,会处理这些数据时无法控制顺序,需要有一个排队机制,sender通过双端队列的方式完成数据的取和网络发送,批发送处理数据最大16k到双端队列中,线程sender负责消费队列的数据,为了保证数据的顺序不丢失发送器引入了在途请求控制器inFilghtRequest默认值为5,是用来网络客户端和网络服务器端的数据请求安全通信的,在途请求不能设置过大,会影响性能,默认值为5,它用来服务端处理数据超时或数据没有被持久化,客户端接收到消息,并控制在在途请求的这个阶段的数据一直保持重试排序,拉取下一批次的偏移量的消息,直到前面的在途请求被有序处理和应答新一轮的批次请求又开始进行,

在途请求的消息会找到存放通道的map,找到符合当前生产者的通道,channel使用java的nio在发送的时候利用nio多路复用器和buffer的零拷贝机制,减少资源消耗,socketChannel将数据发送到网络。

消费者组件

http://www.lryc.cn/news/455487.html

相关文章:

  • 前端练习小项目 —— 让图片变得更 “色”
  • 时间卷积网络(TCN)原理+代码详解
  • 零散的知识
  • Python读取pdf中的文字与表格
  • 【MySQL 08】复合查询
  • 求1000以内的完数
  • sqli-labs less-16 post提交dnslog注入
  • nginx报错|xquic|xqc_engine_create: fail|
  • Java虚拟机(JVM)
  • MQ 架构设计原理与消息中间件详解(三)
  • 大数据新视界 --大数据大厂之 Alluxio 数据缓存系统在大数据中的应用与配置
  • PHP基本语法总结
  • 尚硅谷rabbitmq 2024第30-33节 死信队列 答疑
  • 解锁空间距离计算的多种方式-含前端、空间数据库、后端
  • Windows 开发工具使用技巧 QT使用安装和使用技巧 QT快捷键
  • 【实战教程】SpringBoot全面指南:快速上手到项目实战(SpringBoot)
  • LeetCode讲解篇之1043. 分隔数组以得到最大和
  • Python知识点:结合Python工具,如何使用TfidfVectorizer进行文本特征提取
  • Diffusion models(扩散模型) 是怎么工作的
  • 查找回收站里隐藏的文件
  • [运维]2.elasticsearch-svc连接问题
  • Ajax面试题:(第一天)
  • 数据仓库拉链表
  • 【JVM】实战篇
  • 2024年9月30日--10月6日(ue5肉鸽结束)
  • 【Python游戏开发】贪吃蛇游戏demo
  • pytorch张量基础
  • 深入解析LlamaIndex Workflows【下篇】:实现ReAct模式AI智能体的新方法
  • 要在 Git Bash 中使用 `tree` 命令,下载并手动安装 `tree`。
  • Linux的基本指令(1)