1:网站优化之数据库优化
数据库是许多应用的核心,也是常出现单点故障(SPOF)的地方。特别是在Web2.0应用中,数据库的响应速度至关重要。MySQL是常用的数据库系统,但随着数据量超过100万,其性能可能会显著下降。为了优化性能,通常采用主-从(M-S)复制方式,将查询和操作分散到不同的服务器上。我建议采用主-主-从(M-M-Slaves)架构,即两个主数据库和多个从数据库。在这种架构中,尽管有两个主数据库,但同一时间只有一个处于活动状态,可以在需要时切换。使用这种架构可以避免主数据库成为系统的SPOF。从数据库可以进一步进行负载均衡,结合LVS(Linux Virtual Server)可以将select操作分散到不同的从数据库上。当用户表数据超过1000万时,主数据库可能再次成为SPOF。此时,可以考虑表分区,根据业务需求进行分区,例如根据用户ID分配到不同的数据库集群。全局数据库用于元数据的查询。每个集群可以采用主-主或主-主-从的方式,这是一个可扩展的架构,随着负载的增加,可以简单地添加新的MySQL集群。
2:系统架构之HTML静态化
纯静态化的HTML页面在效率和资源消耗上是最优的。因此,尽可能使网站页面采用静态化是实现这一目标的最简单也是最有效的方法。对于内容丰富且更新频繁的网站,手动实现静态化是不现实的,因此信息发布系统(CMS)应运而生。CMS可以自动生成静态页面,并具备频道管理、权限管理、自动抓取等功能,对于大型网站来说,拥有一套高效、可管理的CMS是必不可少的。对于交互性要求高的社区网站,静态化也是提高性能的关键。例如,Mop的大杂烩和网易社区都采用了这种策略。HTML静态化也可以作为缓存策略的一部分,对于内容更新频率低的应用,可以考虑静态化以减少数据库访问请求。
3:网站关注点之缓存、负载均衡、存储
缓存是网站性能的关键。通常使用memcached进行缓存集群,一般部署10台左右即可。需要注意的是,不要使用swap,最好关闭Linux的swap。负载均衡和加速可以使用Lighttped+Squid组合,LVS可以用来平衡负载。存储方面,小文件如图片可以使用Lighttpd进行分布式存储,或使用Redhat的GFS。大文件如搜索引擎索引可以参考nutch的方案,现在已经独立为Hadoop子项目。
4:网站系统架构之图片服务器分离
图片是Web服务器中资源消耗最大的部分,因此将图片与页面分离是大型网站常用的策略。独立的图片服务器可以降低页面访问请求服务器的压力,并确保系统不会因为图片问题而崩溃。可以利用Apache实现图片服务器的分离,尤其是在起步阶段的应用。
5:系统架构之数据库集群和库表散列
大型网站需要数据库集群或库表散列来应对大量访问。数据库集群方面,Oracle RAC、Microsoft SQL Cluster Server、IBM DB2 UDB High Availability Cluster、Sybase ASE High Availability Cluster、MySQL High Availability Cluster等都是可行的解决方案。库表散列是将数据库和应用或功能模块分离,不同的模块对应不同的数据库或表,并按照一定策略进行散列。
6:网站的系统架构之缓存
缓存是网站架构和开发中不可或缺的部分。基本的缓存包括Apache的缓存模块和Squid模块,以及Linux上的Memory Cache。在开发方面,Java、PHP等语言都有自己的缓存模块和方法。例如,JBossCache/TreeCache、OSCache、JCACHE、Ehcache、JCS、SwarmCache、ShiftOne Object Cache、WhirlyCache、Jofti、cache4j、Open Terracotta、sccache、Shoal、Simple-Spring-Memcached等都是常用的缓存解决方案。
版权免责声明: 本站内容部分来源于网络,请自行鉴定真假。如有侵权,违法,恶意广告,虚假欺骗行为等以上问题联系我们删除。
本文地址:https://www.81396.com/article/318.html