随着网站流量的不断上升,高并发必须网站发展的一个挑战,如何提升网站的高并发?缓存。合理的利用缓存,控制缓存的粒度,对缓存进行分级,通常是提升并发的途径。
我们来看一下一个用户访问的流程:
在这个过程中存在缓存有:
- Browser Caches(离client比较近)
- Proxy Caches(网络代理,http代理,socks代理)
- Gateway Caches(CDN代理, js,css,图片加版本号控制)
- 服务器缓存(nginx)
- 业务缓存或者称之数据缓存(redis,memcached)
- 消息队列
- 页面片段缓存(twig,smarty)
- 浏览器缓存
通过浏览器对一个web请求的数据进行缓存,包括JS、CSS、图片、html片段等,缓存的时间可以通过设置header来设置。
2.代理服务器缓存
用户访问web请求有时会挂一些代理,这些代理服务会缓存一些数据,还有DNS缓存。
3.CDN
Content Delivery Network,即内容分发网络。把内容缓存到边缘服务器,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容。 - 服务器
一般服务器都带有缓存的模块。将请求的数据缓存缓存到一个文件,在一段时间之内这些缓存的数据是不变的。
5.数据缓存
数据缓存也称之业务缓存,将业务数据缓存到内存中,提供这类缓存的工具有Redis,Memcached等 - 消息队列
对读的数据一般很容易用上缓存,但是如果是写数据,缓存就很难用上了,这时就可考虑使用队列如kafka、activemq、rabbitmq、rocketmq等。 - 页面片段缓存
通常是指应用程序级别的文件缓存,应用去控制缓存的设定。
缓存是提高并发有效的方法,在设计的时候就应该考虑缓存的设计,缓存设计越灵活,后期越容易扩展,越能提升应用的性能。