LruCache(本地cache)生产环境中遇到的问题及改进

问题:单机qps增加时请求摘要后端,耗时也会增加,因为超过了后端处理能力(最大qps,存在任务堆积)。

  • 版本一
    引入LruCache。为了避免数据失效,cache数据的时效性要小于摘要后端物料的更新时间,设置0.8倍的过期时间。写cache时将数据更新的时间戳一起缓存下来,读cache时计算当前时间与时间戳的差值是否超过过期时间,如果过期清空缓存数据。
    如何防止大量缓存数据一起失效?

问题:并发读写的LruCache使用锁保护,单机qs过高时锁竞争严重,很多时间消耗在锁等待上,导致耗时增长。

  • 版本二
    Cache分片,引入key的哈希函数,将数据分散到不同分片上,减小临界区,降低锁的竞争。分片数可以与线程数保持一致。

  • 版本三
    读cache时使用零拷贝机制,对缓存数据增加原子变量的引用计数,每次获取数据时引用计数+1,释放数据时-1,计数为0且达到过期时间时从cache中清除,防止内存泄漏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/889893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jedis使用及注意事项

Jedis Jedis 是一个 Java 客户端,用于与 Redis 数据库进行交互。它提供了一系列简单易用的 API,使得在 Java 应用程序中使用 Redis 变得非常方便。以下是 Jedis 的使用方法及一些注意事项。 Jedis的优势 Lettuce客户端及Jedis客户端比较如下:…

CSDN博客:如何使用Python的`datasets`库转换音频采样率

CSDN博客:如何使用Python的datasets库转换音频采样率 什么是采样率?代码用途:调整音频数据的采样率完整代码示例代码详解运行结果(示例)总结 在这篇文章中,我们将学习如何使用Python的datasets库对音频数据…

浏览器执行机制

主线程 任务1,任务2 微队列微队列任务1, 微队列任务2延时队列延时队列任务1, 延时队列任务2交互队列.... 事件循环的工作原理 主线程执行同步任务: 主线程首先执行所有同步任务(即栈中的任务)。这些任务会…

Java 基础知识——part 4

8.成员方法:Java中必须通过方法才能对类和对象的属性操作;成员方法只在类的内部声明并加以实现。一般声明成员变量后再声明方法。 9.方法定义 方法的返回值是向外界输出的信息,方法类型和返回值类型同;返回值通过return返回&…

设计模式12:抽象工厂模式

系列总链接:《大话设计模式》学习记录_net 大话设计-CSDN博客 参考: C设计模式:抽象工厂模式(风格切换案例)_c 抽象工厂-CSDN博客 1.概念 抽象工厂模式(Abstract Factory Pattern)是软件设计…

【YashanDB知识库】kettle同步大表提示java内存溢出

【问题分类】数据导入导出 【关键字】数据同步,kettle,数据迁移,java内存溢出 【问题描述】kettle同步大表提示ERROR:could not create the java virtual machine! 【问题原因分析】java内存溢出 【解决/规避方法】 ①增加JV…

适配体技术在新药发现中的应用

适配体筛选技术在新药发现中的具体应用 适配体筛选技术,特别是SELEX(Systematic Evolution of Ligands by Exponential Enrichment,指数富集的配体系统进化技术),在新药发现中扮演着至关重要的角色。这种技术能够从庞…

C/S软件授权注册系统(Winform+WebApi+.NET8+EFCore版)

适用软件:C/S系统、Winform桌面应用软件。 运行平台:Windows .NETCore,.NET8 开发工具:Visual Studio 2022,C#语言 数据库:Microsoft SQLServer 2012,Oracle 21c,MySQL8&#xf…

go语言使用websocket发送一条消息A,持续接收返回的消息

在Go语言中实现一个WebSocket客户端,可以使用gorilla/websocket这个非常流行的库来处理WebSocket连接。下面是一个简单的示例,展示了如何创建一个WebSocket客户端,向服务器发送消息"A",并持续接收来自服务器的响应。 首…

监控易 IDC 数据中心一体化智能运维平台:新质生产力的典范

一、引言 在当今数字化飞速发展的时代,IDC 数据中心作为信息产业的核心基础设施,其稳定、高效运行对于企业和社会的重要性不言而喻。随着数据量的爆炸式增长和业务复杂度的提升,传统的运维模式已难以满足需求,数据中心面临着诸多挑…

活着就好20241218

亲爱的朋友们,大家早上好!🌞 今天是18号,星期三,2024年12月的第十八天,同时也是第50周的第九天,农历甲辰[龙]年十一月初十四日。在这晨光初照的美丽时刻,愿那温柔而灿烂的阳光轻轻洒…

busybox学习——简单介绍

文章目录 简介官网源码目录结构构建 简介 BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任…

C++常见面试题-初级2

1. C和C有什么区别? C是面向对象的语言,而C是面向过程的语言;C引入new/delete运算符,取代了C中的malloc/free库函数;C引入引用的概念,而C中没有;C引入类的概念,而C中没有&#xff1…

Unity UI Button 事件优先级调整技术方案

Unity UI Button 事件优先级调整技术方案 在 Unity 项目开发过程中,针对 UI Button 的事件执行顺序控制是一个常见需求。本文详细阐述两种将新添加事件置于第一个执行位置的方法,旨在为开发者提供全面且专业的技术参考。 一、基于反射机制的事件插入方…

CTFHUB 信息泄露 备份文件下载-网站源码

根据提示应是猜测网站源码的备份文件,可以采用bp拼接文件名和后缀 开启bp抓包后设置第一个攻击点导入文件名 第二个攻击点导入后缀 开始暴力破解,有成功响应的 拼接到网站后缀后可以直接下载 解压缩后记事本的名字就是flag 总结: …

Latex 转换为 Word(使用GrindEQ )(英文转中文,毕业论文)

效果预览 第一步: 告诉chatgpt: 将latex格式中的英文翻译为中文(符号和公式不要动),给出latex格式第二步: Latex 转换为 Word(使用GrindEQ ) 视频 https://www.bilibili.com/video/BV1f242…

X射线衍射全岩分析在岩石学研究中的重要性

X射线衍射全岩分析在岩石学研究中的重要性 X射线衍射(XRD)全岩分析在岩石学研究中扮演着至关重要的角色,它是一种非破坏性的分析技术,能够提供岩石和矿物的精细结构信息。通过解析材料内部原子排列的特征,XRD不仅揭示了…

12.12 深度学习-卷积的注意力机制-通道注意力SENet

# 告诉模型训练的时候 对某个东西 给予额外的注意 额外的权重参数 分配注意力 # 不重要的就抑制 降低权重参数 比如有些项目颜色重要 有些是形状重要 # 通道注意力 一般都要比较多的通道加注意力 # SENet # 把上层的特征图 自动卷积为 1X1的通道数不变的特征图 然后给每一个…

使用 Python 从 ROS Bag 中提取图像:详解与实现

在机器人应用中,ROS (Robot Operating System) 是一个常见的框架。ROS Bag(rosbag)是 ROS 中用于记录和回放数据流(例如传感器数据、话题消息等)的一种强大工具。有时,我们需要将存储在 rosbag 文件中的图像…

【Bolt.new + PromptCoder】三分钟还原油管主页

【Bolt.new PromptCoder】三分钟还原油管主页 PromptCoder官网:PromptCoder Bolt官网:https://bolt.new/ Bolt 是什么? Bolt.new 是一个提供创建全栈网络应用服务的平台。它允许用户通过提示(Prompt)、运行&#x…