首页 > 软件开发 > 编程语言 >

java 解决高并发api接口调用

来源:互联网 2023-03-17 00:21:18 314

最近小编收到很多问题,其中一个就是下面小编为大家整理一下关于java 解决高并发api接口调用的步骤,希望这些方法能够帮助到大家。5om办公区 - 实用经验教程分享!

java 解决高并发api接口调用5om办公区 - 实用经验教程分享!

方法/步骤

  • 1

    首先,并发性上不去是因为当多个线程同时访问一行数据时,产生了事务,因此产生写锁,每当一个获取了事务的线程把锁释放,另一个排队线程才能拿到写锁,QPS(Query Per Second每秒查询率)和事务执行的时间有密切关系,事务执行时间越短,并发性越高,这也是要将费时的I/O操作移出事务的原因。5om办公区 - 实用经验教程分享!

    java 解决高并发api接口调用5om办公区 - 实用经验教程分享!

  • 2

    然后,红色的部分就表示会发生高并发的地方,绿色部分表示对于高并发没有影响。这是为了我们的秒杀系统的优化做铺垫,比如在秒杀还未开始的时候,用户大量刷新秒杀商品详情页面是很正常的情况,这时候秒杀还未开始,大量的请求发送到服务器会造成不必要的负担。5om办公区 - 实用经验教程分享!

    java 解决高并发api接口调用5om办公区 - 实用经验教程分享!

  • 3

    然后,将这个详情页放置到CDN中,这样用户在访问该页面时就不需要访问我们的服务器了,起到了降低服务器压力的作用。而CDN中存储的是静态化的详情页和一些静态资源(css,js等),这样我们就拿不到系统的时间来进行秒杀时段的控制,所以我们需要单独设计一个请求来获取我们服务器的系统时间。5om办公区 - 实用经验教程分享!

    java 解决高并发api接口调用5om办公区 - 实用经验教程分享!

  • 4

    然后,获取系统时间不需要优化,因为Java访问一次内存(Cacheline)大约10ns,1s=10亿ns,也就是如果不考虑GC,这个操作1s可以做1亿次。秒杀地址接口分析,无法使用CDN缓存,因为CDN适合请求对应的资源不变化的,比如静态资源、JavaScript;秒杀地址返回的数据是变化的,不适合放在CDN缓存;适合服务端缓存:Redis等,1秒钟可以承受10万qps。多个Redis组成集群,可以到100w个qps. 所以后端缓存可以用业务系统控制。5om办公区 - 实用经验教程分享!

    java 解决高并发api接口调用5om办公区 - 实用经验教程分享!

  • 4本页面未经授权抓取自百度经验
  • 5

    然后,大部分写的操作和核心操作无法使用CDN,也不可能在缓存中减库存。你在Redis中减库存,那么用户也可能通过缓存来减库存,这样库存会不一致,所以要通过mysql的事务来保证一致性。比如一个热点商品所有人都在抢,那么会在同一时间对数据表中的一行数据进行大量的update set操作。行级锁在commit之后才释放,所以优化方向是减少行级锁的持有时间。5om办公区 - 实用经验教程分享!

    java 解决高并发api接口调用5om办公区 - 实用经验教程分享!

  • 6

    最后,定制SQL方案,在每次update后都会自动提交,但需要修改MySQL源码,成本很高,不是大公司(BAT等)一般不会使用这种方法。使用存储过程:整个事务在MySQL端完成,用存储过程写业务逻辑,服务端负责调用。5om办公区 - 实用经验教程分享!

    java 解决高并发api接口调用5om办公区 - 实用经验教程分享!

  • 注意事项

    • 上述方法为小编整理所得,希望能够帮助到大家。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!5om办公区 - 实用经验教程分享!


    标签: JAVA编程语言

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码