针对高并发量的处理 一个老生常谈的话题了 至于需要运维支持的那些cdn、负载均衡神马的就不赘述了 你们都懂的
虫子在此博文只讲一些从程序角度出发的一些不错的解决方案。 至于从数据库角度的性能方案、虫子另开博文。
1. 首推静态化 推荐指数五颗星 满星五颗
只要是大型互联网应用基本上离不开这个概念,IIS自带的伪静态化不谈,但是想做好静态化并不是一个容易的过程 动态和静态之间的取舍需要用一个平衡的战略眼光来看待
举个例子 当初在盛大游戏的时候 遭遇永恒之塔aion上线,悲摧、血泪,周末过去加班,目的、论坛必须抗住压力。好吧,让我重构整个论坛是不可能了,怎么整,静态化。如何静态化,全站!!!忽悠、大忽悠,爬网爬整个论坛么,非也。说是全站、其实也就是首页、版面页、热门板块的前20页等,开多个线程一起跑、担心线程资源问题就copy下程序,复制下来改个参数开多个进程跑。静态站完成了、然后怎么办,用户怎么互动。亮点来了,其实我们是6台动态站、1台静态站,因为大部分用户只看看不说话,所以我们以静态站为入口,如果用户产生互动 我们就把他们甩到动态站去。oh yeah,似乎也没那么复杂。至于一般的互联网应用其实一般首页静态化就足够了。
2.异步请求
关于ajax一般不是新手的话都已经很了解了,Asynchronous JavaScript and XML。大多数人可能把ajax看成是提供用户体验的方案。实际上ajax对于减轻服务器压力也是很有帮助的。ajax在服务端返回来的仅仅只是浏览器端需要的数据,比如你的select,返回的是仅需要一串json而不会返回一大堆多余的html标签。这样能减轻网络负载。增大网络吞吐率。
目前虫子的东家,在大型B2B站点上这个方案用的尤为出色。
3.并行计算
虫子以前的博文中介绍过cuda并行框架,现在微软4.0也已经提出了并行计算。不过还没深入研究,当然并不是一个站点的所有模块都适合并行计算,仅限于查询、行为分析等。
4.缓存什么就不多扯了
5.文本存储
对于一些常用的资源可以在站点启动初,就形成固化资源、定时维护。例如web安全的规则文件。
6.动静分离
图片资源、css、视频的等等静态资源切换到独立服务器。
7.用户引导
社会学方案,哈哈
8.减少session的使用 你们也懂的 不多说
9.无关安全的计算可以放在客户端
例如层级跳转、用户调查中根据前文选择的后续命题选择等等 可以用js实现
10.还有很多 .....