热点数据更新优化

news2024/9/25 7:21:36

热点数据更新优化

  • 热点数据更新带来的问题
  • 问题的方向判断
    • 用户线程被打挂
    • 据库cpu被打挂(优先考虑,80%可能性)
    • redis被打挂
  • 临时解决方案
  • 解决方案
    • 流量控制
    • 热点隔离
    • 数据分批次提交
    • 数据合并后更新
    • 重写MySQL的执行层

热点数据更新带来的问题

在这里插入图片描述

问题的方向判断

用户线程被打挂

  • 用活跃的线程数超过当前配置的最大值,新请求进来后,应用无法处理从而出现假死现象。

  • 基于k8s部署的应用通过请求探活接口,发现没响应后会不断重启应用,导致c端时不时出现系统异常。

据库cpu被打挂(优先考虑,80%可能性)

  • 数据库出现大量sql,而且业务请求量很大,导致大量线程阻塞,cpu很快升至100%。

  • 并发请求太高,超过了数据库承受的最大线程数(业务请求TPS:2w/s,数据库单节点TPS:2k/s),cpu快速
    升至100%。

redis被打挂

  • redis cpu打爆,接近100%。一般可能的原因是:redis 出现热key
  • redis内存满了,接近100%。一般可能的原因是:redis key短时间内增长很快超过内存最大值(设计不合理或
    者过期时间设置过长)。
  • redis 网络IO太大,比如:1.8G/s。一般可能的原因是:redis 出现大key

临时解决方案

  • 重启出问题的MySQL或Redis
  • 将流量切换到容灾。

解决方案

流量控制

  • 在网关做好限流
  • 或者使用基于redis的限流

热点隔离

  • 热点业务独立部署
  • 热点数据垂直拆分成独立数据库

数据分批次提交

  • 自定义mybatis拦截器,拦截执行SQL,动态配置一个阈值,当insert或update的记录数超过阈值,改为分批次提交事务(可以参考:mybatis-plus批量提交的处理逻辑)

数据合并后更新

可以在内存中合并同一个记录的多条更新操作,之后只提交一次,减少数据库锁的冲突。

重写MySQL的执行层

通过重写mysql的执行层,提供自动探测热点行更新开关,如果检测到单行有大量的热点更新,在执行层引入排队机制,减少行锁冲突,提升并发性能。阿里与腾讯内部的mysql库都已经二次开发支持这个特性。

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

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

相关文章

ERP进销存管理系统的业务全流程 Axure高保真原型源文件分享

这是一套ERP进销存管理系统的业务全流程Axure高保真原型设计文档。 原型预览地址:https://ppndif.axshare.com 产品意义: 提高工作效率: 电子记账替代手工记账,减少工作负担和人为错误。 实时查看库存情况,减少盘点时…

嵌入式AI---如何用C++实现YOLO的NMS(非极大值抑制)算法

文章目录 前言一、为什么需要NMS算法?二、什么是NMS算法?三、如何使用C编写一个NMS算法1、预测框定义2、滤除无效框 总结 前言 YOLO系列的目标检测算法在边缘部署方面展现出了强大的性能和广泛的应用潜力。大部分业务场景是利用PyTorch在服务器端完成检…

细说STM32单片机通用定时器使用输出比较功能生成PWM波的方法

目录 一、本实例测试的目的 二、硬件和CubeMX项目配置 1、硬件开发板 2、项目配置 (1)定时器TIM2_CH1 (2)时钟和Debug 三、使用比较功能生成PWM 1、启动定时器 2、TIM2_CH1通道GPIO初始化 3、下载与测试 一、本实例测试…

一,掌心里的智慧:我的 TinyML 学习之旅

从云端到掌心:TinyML 的故事 想象一下,有一天你起床,伸手去关闭窗边的小闹钟,却发现这个小家伙已经提前预判到你的醒来时间——因为它能够“听到”你昨晚的呼吸变化,分析出你什么时候会醒。这个场景可能听起来像科幻小…

OrionX vGPU 研发测试场景下最佳实践之Jupyter模式

在上周的文章中,我们讲述了OrionX vGPU研发测试场景下最佳实践之SSH模式,今天,让我们走进 Jupyter模式下的最佳实践。 • Jupyter模式:Jupyter是最近几年算法人员使用比较多的一种工具,很多企业已经将其改造集成开发工…

[C++] 剖析多态的原理及实现

文章目录 多态的概念及定义编译时多态(静态多态)运行时多态(动态多态)动态多态的原理示例:运行时多态 两种多态的区别 多态的实现基本条件虚函数虚函数的重写与覆盖虚函数重写的其他问题协变析构函数的重写 C11 中的 o…

【数据结构】8——图3,十字链表,邻接多重表

数据结构8——图3,十字链表,邻接多重表 文章目录 数据结构8——图3,十字链表,邻接多重表前言一、十字链表结构例子 复杂例子 二、邻接多重表(Adjacency Multilist)例子 前言 除了之前的邻接矩阵和邻接表 …

Kubernetes部署及示例

目录 一、实验环境 二、部署 1、添加解析 2、安装docker,确保登录成功 3、所有禁用swap和本地解析 4、 安装K8S部署工具 5、集群初始化 6、安装flannel网络插件 7、节点扩容 三、kubernetes 中的资源 1、资源管理介绍 2、资源管理方式 (…

【Kubernetes】服务账号 Service Account

《K8s 的安全认证》系列,共包含以下文章: K8s 的安全框架和用户认证K8s 的鉴权管理(一):基于角色的访问控制(RBAC 鉴权)K8s 的鉴权管理(二):基于属性 / 节点…

Mac导入iPhone的照片怎么删除?快速方法讲解

随着Apple生态系统的高度整合,Mac与iPhone之间的照片同步和导入变得异常便捷。但这种便利有时也会带来一些管理上的困扰,比如Mac导入iPhone的照片怎么删除? 从iPhone直接删除照片 Mac导入iPhone的照片怎么删除?如果你的照片是通…

思维商业篇(1)—如何判断商业效率

思维商业篇(1)—如何判断商业效率 我们评价一个公司,很大程度上其实就是看其商业效率高不高以及规模大不大。 规模是一个企业的大小,效率是一个企业的节奏。 一个小企业如果效率很高,在未来就会有很多的机会。只要其所在行业在&#xff0c…

深入理解Python中的魔法参数 *args 和 **kwargs

在Python编程中,函数的灵活性是其强大之处之一。其中,*args 和 **kwargs 是实现函数参数可变性的重要工具。 无论我们是Python初学者还是经验丰富的开发者,充分理解这两个概念都有助于编写更加灵活、高效的代码。 本文将深入探讨*args和**kw…

【JavaScript】数据结构之树

什么是树形结构? 一种分层数据的抽象模型,用来分层级关系的。虚拟dom它所组织的那个数据原理就是树形结构 深度优先搜索(遍历)- 递归 从根出发,尽可能深的搜索树的节点技巧 访问根节点对根节点的children挨个进行深…

三、(JS)JS中常见的表单事件

一、onfocus、onblur事件 这个很容易理解&#xff0c;就不解释啦。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&…

【JS|第27期】网页文件传输:Blob与Base64的对决

日期&#xff1a;2024年9月12日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

【SQL】百题计划:SQL最基本的判断和查询。

[SQL]百题计划 Select product_id from Products where low_fats "Y" and recyclable "Y";

java重点学习-JVM组成

十二 JVM 12.1 JVM运行原理 Java Virtual Machine Java程序的运行环境(java二进制字节码的运行环境) 好处: 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收机制 12.2 什么是程序计数器? 程序计数器:线程私有的&#xff08;不存在线程安全问题&#xff09;&…

美团图床设置教程

大厂图床&#xff0c;CDN加速 项目地址&#xff1a;https://github.com/woniu336/mt-img 使用方法 在mt.php填上你的token即可&#xff0c;然后打开index.html上传图片 获取token方法 注册https://czz.meituan.com/发布视频&#xff0c;上传封面&#xff0c;注意在上传封面后…

java项目之企业级工位管理系统源码(springboot)

项目简介 企业级工位管理系统实现了以下功能&#xff1a; 企业级工位管理系统的主要使用者管理员功能有个人中心&#xff0c;部门信息管理&#xff0c;工位信息管理&#xff0c;使用情况管理&#xff0c;工位分配管理。员工可以查看个人中心&#xff0c;部门信息&#xff0c;…

linux第二课(docker的安装使用)

目录 一.关于docker (1)背景引入 (2)docker介绍 (3)功能 (4)Docker架构 二.docker的安装及相关的命令 (1)docker的安装 (2)docker的配置 (3)docker镜像命令 (4)容器命令 三.docker安装myaql ​编辑 四.数据卷挂载 1.数据卷挂载引入 2.数据卷挂载图解 3.数据卷的安装…