针对大数据量 高并发量网站的解决方案
内容来源:http://blog.csdn.net/hdhai9451/article/details/44174559
1、html静态化
例如1--门户和信息发布类型的网站:对于大量内容并且频繁更新的网站,我们可以使用内容管理系统cms,例如新闻频道,可以通过信息录入实现最简单的自动生成静态页面。同时还能具备频道管理、权限管理、自动抓取等功能。
例如2--社区类型的网站:对于交互性很高的论坛网站来说,尽可能静态化也是提高性能的必要手段,即增删改后立即生成对应的静态文件。(详情查看 关于Discuz! X3.2 URL 静态化)例如像猫扑的大杂烩和网易社区就是使用了这个策略。
例如3--频繁使用数据库查询:有些信息大量被前台程序调用,但是更新频率很小,可以考虑将这部分内容进行后台更新的时候,进行静态化。
2、图片服务器分离
对于web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,提供一台独立的图片服务器。
3、数据库集群、库表散列
比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。
sohu的论坛就是采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行散列数据库和表,最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。
4、缓存
1.架构方面的缓存:Apache提供了自己的缓存模块,也可以使用外加的缓存模块。
2.网站程序开发方面的缓存:
使用Asp.Net缓存;
使用Remoting Singleton缓存;
使用内存映射文件;
使用SQL Server缓存;
使用静态变量缓存;
使用Asp.net 会话状态(Session State);
使用Asp.net客户端缓存和状态;
使用Internet Explorer缓存。
例如:使用asp.net session state
你可以使用基于HttpSessionState对象的asp.net session state来缓存单个用户的会话状态信息。它解决了asp中会话状态的很多限制,包括:
·asp session要求客户端接受cookies,否则就不能使用session;而asp.net可以配置为不使用cookie;
·
5、镜像
打个比方说,我们要做一个提供软件下载的网站,因为大家使用的ISP不同(有用电信的,也有使用网通的,也有铁通的),如果使用电信的用户访问网通的服务器就会很慢,同样使用网通的用户访问电信的服务器速度也慢。为了让使用不同ISP的用户的下载速度都能快,我们可以把主服务器放到电信的线路上,同时在网通的线路上架设镜像服务器1,铁桶的线路上架设镜像服务器2。这样大家访问位于和自己相同ISP线路上的服务器去下载速度就快了。
另:作备份的时候也会使用到镜像服务器。如:大部分网游的服务器都有镜像,这样当1台服务器出现故障的时候玩家可以使用另一台服务器来进行游戏。
6、 负载均衡
7、最新:CDN加速技术(Content Delivery Network:内容分发网络)
通俗理解就是网站加速,CPU均衡负载,可以解决跨运营商,跨地区,服务器负载能力过低,宽带过少等带来的网站打开速度慢等问题。
CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。
CDN的实例:
举个例子来说,当某用户访问网站时,网站会利用全球负载均衡技术,将用户的访问指向到距离用户最近的正常工作的 缓存服务器上,直接响应用户的请求。
通过用户定位算法和服务器健康检测算法综合后的数据,可以将用户的请求就近定向到分布在网络“边缘”的缓存服务器上,保证用户的访问能得到更及时可靠的响应。