什么是热点数据

设想如下场景:
1、有一条现金账号(大商户在mysql上的一条记录),同时有数十万人在往上面转账,账务数据是必须同步持久化的,这种情况下很难做到所有请求同步update这条记录。

2、大商户准备一笔钱给社交网络的大量用户发放红包,需要在高并发下对这条账户减钱成功,并不会减成负数。

以上场景是不能用缓存、简单的分库分表来实现的,因为是对指定的一条数据进行操作,且要求同步持久化,这种问题简单用下图来表示:

解决方案:

对于场景1,可以称之为加钱频繁账户,可以采用加钱时只做记录(单条请求持久化),然后一段时间后再合并总金额一起update到目标账户上去。

对于场景2,称为减钱频繁账户,每次请求都必须对余额进行更新,然后才能进行下次操作,要不然可能会扣成负数造成资损;这种情况下,可以采用分拆子账户的方式,将一条账户数据拆成100条数据(一条100万变成100条一万),减钱请求随机命中其中一条。当出现子账户有余额,但不足以扣减时,进行子账户合并。最终100条数据又会合并成一条数据。

系统设计思路:

加法频繁数据,我们需要高可用的缓存/分布式数据库,将加法请求记录,由计划任务进行求和并update到目标数据。

减法频繁数据,需要有一个数据扩容的功能(对单条数据进行水平扩展),自动/手动将一条大额记录拆分成n个子记录,还有一个合并子记录的功能。

功能实现:

高并发场景下对热点数据的处理相关推荐

  1. 高并发场景下数据库的常见问题及解决方案

    一.分库分表 (1)为什么要分库分表 随着系统访问量的增加,QPS越来越高,数据库磁盘容量不断增加,一般数据库服务器的QPS在800-1200的时候性能最佳,当超过2000的时候sql就会变得很慢并且 ...

  2. 分布式锁和mysql事物扣库存_这个是真的厉害,高并发场景下的订单和库存处理方案,讲的很详细了!...

    前言 之前一直有小伙伴私信我问我高并发场景下的订单和库存处理方案,我最近也是因为加班的原因比较忙,就一直没来得及回复.今天好不容易闲了下来想了想不如写篇文章把这些都列出来的,让大家都能学习到,说一千道 ...

  3. 读数据库遇到空就进行不下去_如何解决高并发场景下缓存+数据库双写不一致问题?...

    推荐阅读: 一只Tom猫:手撕分布式技术:限流.通讯.缓存,全部一锅端走送给你!​zhuanlan.zhihu.com 一只Tom猫:MySQL复习:20道常见面试题(含答案)+21条MySQL性能调 ...

  4. java分布式库存系统_这个是真的厉害,高并发场景下的订单和库存处理方案,讲的很详细了!...

    前言 之前一直有小伙伴私信我问我高并发场景下的订单和库存处理方案,我最近也是因为加班的原因比较忙,就一直没来得及回复.今天好不容易闲了下来想了想不如写篇文章把这些都列出来的,让大家都能学习到,说一千道 ...

  5. 华为云:如何解除数据库高并发场景下的达摩克利斯之剑?

    5月10-12日,第九届中国数据库技术大会(DTCC 2018)如约而至.大会邀请了百余位行业专家,就数据库.大数据等热点技术话题进行分享.其中,华为云数据库首席架构师 带来的主题演讲<MySQ ...

  6. 高并发场景下,到底先更新缓存还是先更新数据库?

    在大型系统中,为了减少数据库压力通常会引入缓存机制,一旦引入缓存又很容易造成缓存和数据库数据不一致,导致用户看到的是旧数据. 为了减少数据不一致的情况,更新缓存和数据库的机制显得尤为重要,接下来带领大 ...

  7. 高并发场景下缓存的常见问题

    作者介绍: 丁浪,非著名架构师.关注高并发.高可用的架构设计,对系统服务化.分库分表.性能调优等方面有深入研究和丰富实践经验.热衷于技术研究和分享. 声明:版权归丁浪作者本人所有,转载请联系作者本人 ...

  8. 本地缓存需要高时效性怎么办_缓存在高并发场景下的常见问题

    缓存一致性问题 当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象.这就比较依赖缓存的过期和更新策略.一般会在数据发生更改 ...

  9. java高并发(二十一)高并发场景下缓存常见问题

    缓存一致性 当数据实时性要求很高时,需要保证缓存中的数据与数据库中的数据一致,缓存节点与副本中的数据一致,不能出现差异现象,这就比较依赖缓存的过期和更新策略了.一般会在数据发生更改的时候,主动跟新缓存 ...

最新文章

  1. 快头条月增迅猛超微视 三四线城市“流量炼金”的上限在哪?
  2. ASP.NET中新建Web网站并部署到IIS上(详细图文教程)
  3. C语言Huffman Encode霍夫曼编码的算法(附完整源码)
  4. Android之sqlite常见用法以及取最新多少条数据(包括删除和不删除之外的数据)
  5. Ubuntu下Python与C/C++混合编程
  6. 获取存储过程返回值及代码中获取返回值(转)
  7. Selective Search for Object Recognition解读
  8. 【复习笔记】Cache的映像方法
  9. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 主细表事务处理的标准例子...
  10. 鸿蒙系统是华容网格吗,鸿蒙上手机还在迟疑,国内对手却已悄然来到
  11. Socket编程中,阻塞与非阻塞的区别
  12. 从0开始搭建微信小程序(前后端)的全过程
  13. SmartQ 智器—公司介绍
  14. vue filters 国家区号json数据
  15. FPGA驱动步进电机
  16. thingworx项目-mushup
  17. 搭建邮件群发服务器费用,自建邮件群发服务器优缺点分析
  18. Excel 表列序号
  19. tensorflow出现报错: Could not locate zlibwapi.dll或者Could not load library cudnn_cnn_infer64_8.dll.
  20. 【C语言】机试100题及代码答案(上)

热门文章

  1. linux中命令的基本操作(补上篇)
  2. 假如有人欺骗了你•••
  3. PHP开发环境搭建(windows)
  4. Consul的介绍和基本使用
  5. 2716: 极其简单的最短路问题(spfa裸题 or bfs)
  6. gff文件_GFF文件格式说明
  7. 教你备赛大唐杯国赛预选赛
  8. 2010年最骚最贱最有深度的100句话转自MOP
  9. 【腾讯地图】腾讯地图定位解析
  10. 如何在vue上全局使用过滤器filter