网易严选中的高并发优化

(一)单机系统缓存优化

1.背景导入

  • 在单机情况下,CSD模型如果出现慢查询一般会把问题归结到数据库
  • CSD模型:

  • 实际操作发现:当有2KW级别数据层查询是,统计总行数约1s,根据索引列查询,约5ms左右,如果没有索引查询约4s左右。
  • 以此来看数据库并不是常规的理解,慢的不可以接受。

2.场景

  • 问题:数据库在单个SQL执行时,相对速度确实是可以满足大多数业务的。但怕大批量请求,其QPS并发能力不行
  • 如图:数据库支持的QPS/TPS数量
  • 解决:引入如此类redis缓存中间件,解决QPS能力低下问题

3.缓存使用


  • redis限流自旋:在第5步时,只放行一小部分请求查询数据库,这样redis会增加一部分数据,大部分请求从redis中能查询到。(2:8原则,80%的人共用20%的数据)

缓存和数据库一致性更新原则

  • 常见缓存访问模式:(cache-aside 本地缓存)

直接如此无法保证数据一致性:解决1:加入一层中间件
利用一种id绑定机制,数据库更新时,统一数据访问服务这里通过id绑定,将待更新数据的id打开自旋锁,等数据库更新完毕,

  • 常见缓存访问模式:更新模式


  • 加入redis后QTS效率提升:

“延缓记账”:抢红包 并发量每秒很高 不可能直接和数据库交互,数据库QTS太小,此时利用MQ/Redis

(二)微服务间高并发优化

1.背景

  • A服务:自己的系统,并发可达到单机百万,但A请求B服务
  • B服务:其他人的系统,但并发只有几万
  • 如何在A请求B的情况下 让A服务性能能够达到真实百万?

2.解决

  • 给A加缓存吗?
  • 答:微服务之间是不该加入缓存此种直接缓存目标服务数据【涉及到缓存更新问题】
  • 在没有任何优化时,单机系统跑,5K个并发,完成请求耗时,约4s,QPS平均,1250.
  • 使用请求合并优化后,单系统跑5K个并发,完成请求耗时约,0.16s,QPS约31250,提升倍数约:25倍

请求合并

  • 类比:餐厅点餐后会合并多份相同的 交给后厨用大锅一锅出好几份

网易高并发优化 | 公开课-02相关推荐

  1. 每秒上千订单场景下的分布式锁高并发优化实践!

    本文授权转自石杉的架构笔记 背景引入 首先,我们一起来看看这个问题的背景? 前段时间有个朋友在外面面试,然后有一天找我聊说:有一个国内不错的电商公司,面试官给他出了一个场景题: 假如下单时,用分布式锁 ...

  2. Java架构-每秒上千订单场景下的分布式锁高并发优化实践!

    "上一篇文章我们聊了聊Redisson这个开源框架对Redis分布式锁的实现原理,如果有不了解的兄弟可以看一下:<拜托,面试请不要再问我Redis分布式锁实现原理>. 今天就给大 ...

  3. 抽奖活动的高可用、高并发优化

    这几年工作中做过不少营销活动,这里以抽奖活动为例,讨论一下如何设计出一个高可用.高并发的营销系统. 高可用.高并发架构的核心是分流和限流.系统架构时,应根据每一种营销活动的场景与特性,制定不同的分流. ...

  4. Seckill系统高并发优化

    绝大多数秒杀系统都需要实现高并发,这样就必须在原来的项目基础上进行优化.简单的优化很有可能就会很大地提高系统的并发性能,但是这些优化往往是系统开发人员很少注意的,或者直接被人们忽略.因此要成为一个出色 ...

  5. Java高并发秒杀API(四)之高并发优化

    Java高并发秒杀API(四)之高并发优化 1. 高并发优化分析 关于并发 并发性上不去是因为当多个线程同时访问一行数据时,产生了事务,因此产生写锁,每当一个获取了事务的线程把锁释放,另一个排队线程才 ...

  6. MySQL的性能优化及自动化运维实践与Mysql高并发优化

    首先,我们来看看DBA的具体工作,我觉得 DBA 真的很忙:备份和恢复.监控状态.集群搭建与扩容.数据迁移和高可用,这是我们 DBA 的功能. 了解这些功能以后要对体系结构有更加深入的了解,你不知道怎 ...

  7. 用分布式锁来防止库存超卖,但是是每秒上千订单的高并发场景,如何对分布式锁进行高并发优化来应对这个场景?

    用分布式锁来防止库存超卖,但是是每秒上千订单的高并发场景,如何对分布式锁进行高并发优化来应对这个场景? 转载 codeing_doc 最后发布于2018-11-23 09:44:41 阅读数 1073 ...

  8. [php]如何做到高并发优化

    在实际的开发过程中我们遇到过各种各样的活动,但像用户流量较大的平台就需要考虑高并发的问题,但是如何去解决呢?我总结了几种解决方案,欢迎大家指正! 一.什么是PV/UV/QPS? PV:页面访问量,即P ...

  9. 5000并发的qps是多少_高并发初体验记录-02

    前言 这半个多月完成了这次活动的业务代码开发和测试,至于性能调优对我而言近乎玄学.总结记录,以备参考.如有错误,欢迎指正.不过其实大佬不用浪费时间看这篇低质量的流水账了. 实测过后,一个月前老板给我说 ...

最新文章

  1. spfa(还不懂--)
  2. 删除顺序表中所有的的重复数据
  3. [POI2007]ZAP-Queries [HAOI2011]Problem b 莫比乌斯反演
  4. C/C++学习之路: C++对C的扩展
  5. OpenCL用于计算机领域的13个经典案例
  6. Windows Server 2012学习
  7. paip.gui控件tabs控件加载内容的原理以及easyui最佳实现
  8. maven 手动构建项目
  9. 那些长期单身的人,到底在想什么?
  10. ubuntu shortcuts
  11. idea中配置mysql插件,使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置
  12. 9102年,曝光这几个高质量的公众号,年薪7位数!
  13. Java中的==符号与equals()的使用(测试两个变量是否相等)
  14. cnn程序流程图_GitHub - suqcnn/vue: vue源码逐行注释分析+40多m的vue源码程序流程图思维导图 (diff部分待后续更新)...
  15. 非学习的点云配准方法汇总
  16. 了解Minimax算法
  17. Python的繁体简体转换
  18. matlab 条件方程组的解,solve 时解方程组的限制条件问题
  19. xxxxxxxxxxxxxx
  20. 获取linkedin上指定公司下的职员信息

热门文章

  1. 论文中的误差图绘制(图中图)
  2. ubuntu-桌面菜单栏、任务栏、标题栏都不见了-解决办法
  3. Win10安装MySQL5.7(图文详解)
  4. 小甲鱼java视频_b站有哪些好的java视频?
  5. Pow,Pos,Dpos共识机制比较
  6. SSM Generator生成mapper中xml文件:未能解析映射资源:“文件嵌套异常
  7. php如何判断是ajax,php如何判断是ajax
  8. python指定返回类型_如何在python中指定方法返回类型列表 - python
  9. 怎么提前体验鸿蒙,鸿蒙OS手机版明天发布,开发者提前体验,上手操作毫无难度...
  10. python保存后不运行_Python后台执行不启用缓存