开年比较空,抽时间写个博文,总结下本身工做里的一些应对网站访问压力的技术方案。css
本身项目如今大概一天50W的pv。已从前端到后端的顺序总结下本身用的一些方案。前端
一. 前端页面:mysql
1.首先减小资源的大小,能用小图,就用小图。引用第三方js用mini 压缩版的js。nginx
2.用CDN减小服务器访问的压力,将图片,css,js文件放到CDN上。用户从cdn缓存获取资源的速度远快与访问服务器获取的速度。(还有网络关系,cdn网络快)redis
3.耗时长的js能够异步请求后加载。sql
二.服务器负载均衡:数据库
负载均衡解决方案有不少,不差钱有不差钱的,屌丝有屌丝的方案。我用的是nginx负载均衡。后端
准备一台专用的nginx负载均衡服务器,用它来负载均衡,转发给5台业务服务器。(开发须要单台调试时,用hosts指向单台)缓存
三.服务器缓存服务器
由于是分布式架构,服务器缓存主要用了memcached和redis(各配置2台,一台主服务,一台备用)。memcached和redis都有各自的.net版本,用起来也不复杂。
具体选择看业务需求,我基本上70%用memcached,须要长时间缓存的用redis。
memcached对于中文支持很差,要存中文数据,先将中文base64编码在存入,读取时候作base64解码。
四.数据库
我主要使用sqlserver,少许项目用mysql。50W访问量单台sqlserver服务器彻底能够支持的住。尽可能减小事务,业务须要用消息队列后补处理。
大任务网站不处理,用其余程序处理(响应要求高的修改操做,先修改redis缓存,而后由异步程序操做数据库。)
操做时候记录日志,数据库崩溃或网站崩溃能够读日志文件回补数据操做。(通常服务器挂了不会好久,超过一天不能恢复日子基本无法活了。。真这样在看具体状况找解决方案)