伴随着Web技术迅猛发展以及应用领域范围的不断扩大,使得web项目深入到人们生活的方方面面,但随着网站规模的日益发展,数据量的日益庞大,最终将出现海量数据的存储和高并发的局面,此时网站的性能和用户体验又将面临严峻的形势和新一轮的挑战。
性能是提升用户体验的基础和先决条件,也是一个网站是否有长足发展的必要条件,所以架构一个高性能,高负载的web系统是网站技术的核心。
一个高性能,高负载的系统架构要从软件(包括部署和优化),硬件两方面来考虑:硬件方面这里不必冗言,高性能的服务器,高速的网络带宽,多线接入等,这些硬件设施都是必不可少的。在同样硬件设备资源的预算下,系统的高负载,高性能就完全体现在软件方面。
部署专职服务器:
对于特定的文件要部署专职的服务器来进行存储和处理,比如,对于Web 服务器来说,不管是ApacheIIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,在应用服务器和图片服务器上,可以进行不同的配置优化,比如apache在配置ContentType的时候可以尽量少支持,尽可能少的LoadModule, 保证更高的系统消耗和执行效率。
数据库:
对于目前web2.0站点来说,性能的最大瓶颈主要是在数据库上,站点与用户的频繁交互,海量数据的存储等,都要依靠数据库来完成,所以很大程度上对数据库的优化和部署方案可直接关系影响到整个系统架构的好坏。MYSQL数据库是比较常用的db软件,其本身具有高负载,高性能的特点,但是当数据增加到100万以上时,那么MySQL的效能急剧下降。对于存在海量数据的网站来说,这种性能的损耗是致命的。所以这里就需要部署数据库集群来存储海量的网站数据,运用库表散列,把海量数据分区,分表来进行存储。利用读写分离技术,把对数据库的操作进行分流,让读和写在不同的服务器上进行等等。
缓存:
网站架构和网站开发中的缓存也是非常重要的,它可以大量的减少对db的读取次数,从而减轻服务器的压力,Linux上提供的Memory Cache是常用的缓存接口,它是基于Linux内存的,可以在web开发中使用
目前国内产品考虑到上述高负载,高并发的成熟架构还是比较少的,近日和朋友聊天时得知国内目前有一款针对海量数据和高并发处理的系统架构,叫做iweb,是由jooyea实验室开发研制的。他们的几个主要产品都有高负载的能力,这也正是目前市场所最需要的,看了一下iweb的架构图。感觉十分专业,真的希望他们能够为大中型网站提供最优秀的解决方案,也希望国产的软件越来越好。