处理高并发原理

高并发 High Concurrency) 即在同一时间段,有大量请求

处理高并发有三种手段:
1、提高单机服务器配置
2、增加服务器数量
3、应用层利用缓存减少IO次数,提高并发访问处理速度(推荐redis做缓存)

这里主要讲应用层如何利用缓存减少IO次数提高效率

利用单例缓存原理:
1、这里我们需要用到单例缓存(Map)做应用的缓存系统,将数据保存在内存中。
2、不会被修改的数据,可以在服务器启动时将数据读取到单例缓存中,再之后的操作中,只需要读取缓存中的数据,不需要再访问数据库。
3、其他数据,这里我们需要注意一点,一张表,在同一个时间,只能有一个请求去操作这张表。
这里分为两种情况:
1)首次访问为读取:
我们首次读取这条数据时,读取后,放入缓存中,下次优先读取缓存中数据。
2)首次访问为修改:
这里会有两个数据库操作,先修改后读取,对这两个操作进行synchronized加锁数据混乱。进来的请求先对数据库进行修改操作,接着读取这条数据,放入内存中,以便于下次访问

利用redis做缓存原理:
1、这里需要利用redis配合java应用做缓存处理,首先我们要知道为什么选redis,redis是数据库的一种,但是又区别于数据库,redis的数据是放在内存中的,做持久化保存。
2、不会被修改的数据,可以在服务器启动时将数据读取到缓存中,再之后的操作中,只需要读取缓存中的数据,不需要再访问数据库。
3、其他数据
这里分为两种情况:
1)首次访问为读取:
我们首次读取这条数据时,读取后,放入缓存中,下次优先读取缓存中数据。
2)首次访问为修改:
I、进来的请求 先对数据库进行读取 操作,接着 修改缓存 中的这条数据
II、定时任务,设定一个周期同步一次缓存中的数据进数据库

注: 为什么单例不使用定时同步数据的方式,这里要讲到普通的缓存和redis有什么区别,普通的缓存在服务器重启时,内容数据是会丢失的,而redis的好处就是它不会,redis还有很多好处帮助减少数据库负担,是个很好的做缓存的神器!

Author:小熊
不足之处请指出。
转载请附上作者。

你可能感兴趣的:(原创)