首先我们猜测一下网站在高并发通常是那一部分出问题,就像桶子装水,短板决定着能装的水量个人看法最容易出问题的地方是磁盘的IO,磁盘访问速度还是相对较慢的,每秒钟可以读写的数据有限如果你每次访问网站都要读取磁盘的话,如果访问人数多起来,那么越来越多的用户就要等待其他用户在磁盘读取完所需的数据,等待的人越来越多,后面的用户由于等待时间过长就会出现504网关超时(大哭了),下面我们就来说一说关于java秒杀高并发解决方案?我们一起去了解并探讨一下这个问题吧!

java秒杀高并发解决方案(JAVA高级开发-闲扯网站高并发)

java秒杀高并发解决方案

IO短板

首先我们猜测一下网站在高并发通常是那一部分出问题,就像桶子装水,短板决定着能装的水量。个人看法最容易出问题的地方是磁盘的IO,磁盘访问速度还是相对较慢的,每秒钟可以读写的数据有限。如果你每次访问网站都要读取磁盘的话,如果访问人数多起来,那么越来越多的用户就要等待其他用户在磁盘读取完所需的数据,等待的人越来越多,后面的用户由于等待时间过长就会出现504网关超时(大哭了)。

既然说磁盘是最有可能出现问题的地方,我们就要针对这个做一些特殊处理。网站读写磁盘严重的地方有哪些呢?一般来说是数据库读写,上传文件保存,静态资源文件的读取。那么我们一一做一些优化,数据库优化其实是最重要的,很多网站性能问题其实出现在数据库身上。优化数据库第一个就是减少数据库读写啦,所以尽量不要在代码中来一个循环读取数据库(这真的是一个悲剧),能一条sql解决的就用一条(当然这不是绝对的)。第二个就是不读数据库好不好(其实就是代码缓存读取结果,数据一致性是一个问题)。第三个就是避免并发写入数据库,写入是避免不了的啦,我们做的就是错峰出行,这样子就能保证在每一个时间点空出资源做更多的事情。那文件保存,静态资源读取又该怎么办呢?你可以简单粗暴的土豪式作风独立一台静态资源服务器,独立文件服务器之后哪怕文件服务器慢,也不会影响主线业务正常访问,并且文件服务器慢了你可以上集群呢。没这么多资金怎么办,那么就要主动一些,告诉浏览器,这些文件访问一次之后你一段时间都不要过来问我哈(这事情要自己主动,如果浏览器不理你偏要访问我也没辙了)。一般来说我们的好朋友apache和nginx可以帮我们告诉浏览器要缓存一下静态资源(但是这事情我们要主动~配置一下,具体自己查阅文档了)。

,