美文网首页
高并发优化

高并发优化

作者: 8813d76fee36 | 来源:发表于2018-02-05 16:15 被阅读16次

慕课网Java高并发秒杀API之高并发优化笔记。
基于该系列课程的Demo。

分析高并发发生在哪里

业务流程分析

详情页

详情页容易出现并发。详情页获取当前的系统时间,如果秒杀没有开启会进入到倒计时;如果秒杀已开启,会调用地址暴露接口,用于获取秒杀地址;接着执行秒杀操作,返回结果。
图中红色代表可能发生高并发的点,绿色的部分表示没有影响。


详情页流程图
  • 问题:为什么单独获取系统时间?
    场景分析:用户在商品详情页中,如果秒杀没有开始,会经常刷新详情页;详情页及静态资源应该部署到CDN节点上,那么访问详情页和静态资源是不需要访问到系统的,这个时候就拿不到系统的时间,需要单独发送请求获取服务器系统时间;其他请求如获取秒杀地址、执行秒杀的操作都对应到秒杀系统中。


    详情页
  • CDN的理解
    1、CDN(内容分发网络)加速用户获取数据的系统。这里的数据可以是静态资源,也可以是动态资源,取决于推送策略。
    2、部署在离用户最近的网络节点上。
    3、命中CDN服务器后不需要访问后端服务器。
  • 获取系统时间不需要优化
    访问一次内存(Cacheline)大约10ns。
  • 获取秒杀地址接口分析
    1、无法使用CDN缓存
    2、适合服务器缓存:Redis等
    3、一致性成本维护低

秒杀地址接口优化

秒杀地址接口优化

秒杀操作优化分析

1、无法使用CDN缓存
2、后端缓存困难:库存问题。在缓存中减库存会产生不一致问题,需要使用关系数据库如Mysql事务保证数据一致性。
3、一行数据竞争:热点商品

其他方案分析

原子计数器管理商品库存,保证原子性;记录行为作为消息放入分布式消息队列中;后端服务消费消息并落地到数据库(如mysql)。


其他案例分析

为什么不用MySQL解决。

  • 测试
    同一id执行update减缓存,没有事务支持。发现性能很好,一秒4万QPS。


    MySQL压力测试
java事务行为

当有库存的时候执行库存减一,然后插入购买明细;此时另一个用户也执行减库存,该用户会等待行锁,当之前的事务没有回滚或提交,这个行级锁不会被释放。当上一个用户的insert操作commit或rollback后,后来的用户获得锁并继续执行操作。此时再后面进来的用户会继续等待锁,进而产生串行化的阻塞操作。

瓶颈分析

执行update减库存,将SQL语句发送至MySQL服务器有网络延迟,同时还可能伴有GC(Java垃圾回收机制)操作,新生代GC会暂停所有的事务操作。GC不会每次都出现,但一定会出现。性能瓶颈出现在SQL执行时间、网络延迟和GC时间。

优化方向

行级锁在Commit之后释放,所以优化方向主要减少行级锁的持有时间。

网络延迟分析

延迟分析

系统并发越高,GC运行频率越高。

如何判断update更新库存成功

两个条件:

  • Update自身没有报错。
  • 客户端确认Update影响记录数。

优化思路:
事务竞争优化,减少事务锁时间。
把客户端逻辑放到MySQL服务端,避免网络延迟和GC影响。

如何放到MySQL服务器端

  • 定制SQL方案:update /* + [auto_commit] */,需要修改MySQL源码。
  • 使用存储过程:整个事务在MySQL端完成。一组SQL组成一个事务在MySQL端完成,避免客户端操作事务造成性能干扰。

相关文章

  • 高并发秒杀API(六)

    前言 本篇将完成高并发优化,包括: Redis后端缓存优化 并发优化 一、高并发优化分析 在优化之前要明白高并发发...

  • MySQL实战14 慢查询优化join、order by、gro

    1.慢查询的优化思路 1.1优化更需要优化的SQL 优化SQL是有成本的高并发低消耗的比低并发高消耗影响更大 优化...

  • JAVA-每日一面 2022-01-14

    问:高并发系统如何做性能优化?如何防止库存超卖?答: 高并发系统性能优化:优化程序,优化服务配置,优化系统配置1....

  • 高并发优化

    慕课网Java高并发秒杀API之高并发优化笔记。基于该系列课程的Demo。 分析高并发发生在哪里 业务流程分析 详...

  • (二)微信红包架构、抢红包算法和高并发和降级方案(2)

    异地架构、cache系统优化、拆红包并发策略优化(高并发+红包算法)、存储优化一系列措施 一、架构(南北分布) 1...

  • face 29高并发大流量

    高并发大流量 并发 并发访问,在某个时间点 有多少个访问同时到来 php如何处理网站大流量高并发问题 流量优化 防...

  • 2021-01-13

    【高并发】高并发环境下如何优化Tomcat性能?看完我懂了! Tomcat运行模式 Tomcat的运行模式有3种。...

  • Tomcat高并发优化

    https://blog.csdn.net/zsj777/article/details/80254887

  • 高并发系统优化

    1、高并发下nginx报错 现象:在7月22号下午3点整时候,我们系统定时发送了关于报名推送,吸引了大量用户访问a...

  • 高并发优化方案

    高并发 QPS 每秒处理请求数 QPS 达到50一般服务器就能应付,不需要优化 QPS 达到100假设关系型数据库...

网友评论

      本文标题:高并发优化

      本文链接:https://www.haomeiwen.com/subject/djpbzxtx.html