首页 > 其他分享 >常见的写热点数据优化方案

常见的写热点数据优化方案

时间:2023-05-09 22:12:10浏览次数:26  
标签:方案 请求 Redis 常见 DB 优化 MQ 热点

在MySQL中当对一行数据进行更新时,通常都要加行锁,直到事务提交或回滚时才释放。同一时段内,对于同一个数据行,只有一个事务能够进行更新,其它事务需要等待。 

在电商平台业务中,限购、秒杀是常用的促销手段。在这些场景下,大量对热点行的更新请求在极短时间间隔内到达后台数据库系统,必然造成严重的行锁竞争和等待,影响系统性能。如果一个更新请求等待执行的时间变长,将会对业务层面产生显著负面影响。

 

写热点解决

热点数据又分为读热点和写热点,通常读热点优化的手段比较多,也容易实现,重点聊聊写热点优化,后面我们讨论热点均表示写热点。

针对热点数据优化,通常会有以下几种解决方案,在实践过程中通常会组合使用这些方案。

 

MQ+DB方案

这是一种经典的解决方案,所有的操作写写入MQ中,然后异步消费队列中的请求,写入DB中,达到热点优化的效果。

这种方案的缺点主要是:

  • 延迟较大,存在长尾效应

      消费速度不及写入速度,一方面更新DB不及时,消息流延迟较大,另一方面存在消息积压,造成比较严重的长尾效应。

  • 需要考虑业务端消息去重

       高性能的MQ是以牺牲一致性为代价的,以kafka为例,消息可能存在重复,需要业务端自己去重。

  • 引入MQ系统,加重系统的复杂度

       MQ本身是一个复杂的系统,在业务与DB之间增加MQ客观上增加了系统的复杂性。

 

Redis方案

Redis是一款优秀的内存数据库,单机吞吐可以达到10W TPS,对于小于这个量级的热点数据Redis可以应对,但是如果热点的吞吐超过10W,Redis就没有办法了,同时Redis存在的问题在于它的数据安全性,存在主从之间数据不一致问题,对于很多对数据安全性要求很高的业务场景,使用Redis就不太合适了,比如计费,扣款,库存减扣等场景。

Redis没有事务能力,比如一个item下有多个sku就搞不定了。

 

客户端聚合方案

客户端聚合也是一种可选的方案,它的核心思路就是在客户端按照一定的时间窗口聚合一定量的请求,比如同时有100个对A字段进行加1的请求,那么就可以合并成一次加100的请求,减少对DB的压力。

这种方案的缺点是客户端数量通常比较多,聚合的窗口太小,合并的请求数量不足,DB的压力仍然很大,如果聚合的窗口太大的话,业务延迟就太高了,也不合适。

 

标签:方案,请求,Redis,常见,DB,优化,MQ,热点
From: https://www.cnblogs.com/binyue/p/17386460.html

相关文章

  • 前端SEO优化技术汇总
    一、title、alt、h1itle:网站头部标签<head>下的title,网站名称备注:这里为什么不说标签中的title属性,,虽然鼠标上移可以显示图片名字,但是它跟SEO没一丝联系所以我们不关注它。例如:<imgtitle="图片名称"/> alt:当网络速度很慢,或者图片地址失效的时候,它可以在图片展示的位......
  • 常见算法和数据结构存在的坑(updating)
    数组:c++数组下标都+5会稳。\(5000*5000\)的别开\(6000*6000\)。二分:实数二分可能因为神马精度问题出现了不满足二分序的情况,要小心。注意二分完后,不能直接用当前数组里存的值,要pd(ans),值才是正确的。边集数组:无向图边的范围要开2倍。多组数据要清空的有tot,final当用到反向边的时候......
  • 深度学习—神经网络优化
    激活函数   作用:增加非线性因素Relu激活函数,含GELUsoftmax激活函数:优势和劣势都无限扩大,每个都是自然数次方sofrmax和sigmoid的区别:sigmoid激活函数:每个神经元激活时只看自己激活前的值,不满足各个神经元激活......
  • 俄大神 lopatkin Windows 精简优化系统 - 工具软件
          昨天有个网友邮件我,说是想找个Tiny7Rev2的ISO操作系统文件,但是我找了下,以前的那些文件有些已经删除了,所以就在网上搜到了俄大神lopatkinWindows精简优化系统,特此放到网盘上让大家能够下载。      链接:https://pan.baidu.com/s/1w6rsaLhNGI35tT6WX46ijA......
  • EasyPlayer播放H.265视频,播放器快照时间显示的问题优化
    我们的EasyPlayer流媒体播放器可支持H.264与H.265,能支持RTSP、RTMP、HLS、FLV、WebRTC等格式的视频流播放。TSINGSEE的视频平台均集成了EasyPlayer的播放器,实现了无插件网页直播,性能稳定。有用户反馈,EasyPlayer在播放H.265视频的通道时,播放器快照时间显示的是时间戳,并不是日期。......
  • 前端面试题-常见的水平垂直居中实现方案
    方案一:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="w......
  • MySQL百万数据深度分页优化思路分析
    业务场景一般在项目开发中会有很多的统计数据需要进行上报分析,一般在分析过后会在后台展示出来给运营和产品进行分页查看,最常见的一种就是根据日期进行筛选。这种统计数据随着时间的推移数据量会慢慢的变大,达到百万、千万条数据只是时间问题。瓶颈再现创建了一张user表,给create......
  • opencv图片内存占用过大优化
    //读取图片文件到内存std::ifstreamfile(img.toStdString(),std::ios::binary);std::vector<char>buffer((std::istreambuf_iterator<char>(file)),std::istreambuf_iterator<char>());cv::Matimage=cv::imdecode(cv::Ma......
  • Linux操作系统优化
    第18章Linux操作系统优化目录第18章Linux操作系统优化1.更改Yum源和添加epel源2.关闭SELinux3.关闭防火墙(Firewalld)4.关闭NetworkManager5.同步系统时间6.加大文件描述7.别名及环境变量优化8.内核优化9.配置SSH远程管理服务10.修改主机名和IP脚本11.安装常用软件12.......
  • 咚咚咚,你的王国之泪已上线「GitHub 热点速览」
    本周最大的热点,莫过于Mojo语言了,几大媒体均有报道这门兼顾Python优点和性能的新语言。当然还有凭借Switch游戏《塞尔达传说·王国之泪》登上热榜,获得3,500+star的Switch模拟器Ryujinx。当然,还有一些日常工作可能用到的测试工具gitleaks、网页加速qwik,处理数据的c......