大型高并发高负载网站的系统架构分析

发表于:2013-05-09来源:IT博客大学习作者:不详点击数: 标签:架构
大型高并发高负载网站的系统架构分析!简单的来说,如果一个系统可扩展,那么你可以通过扩展来提供系统的性能。这代表着系统能够容纳更高的负载、更大的数据集,并且系统是可维护的。扩展和语言、某项具体的技术都是无关的。扩展可以分为两种:

  扩展Web应用程序

  一、概念

  简单的来说,如果一个系统可扩展,那么你可以通过扩展来提供系统的性能。这代表着系统能够容纳更高的负载、更大的数据集,并且系统是可维护的。扩展和语言、某项具体的技术都是无关的。扩展可以分为两种:

  1. 垂直扩展(stade up),通俗的说就是将某台单一的机器的性能提升的更高,如添加内存、更换更强的处理器等等。

  2. 水平扩展(out),通俗的说就是添加新的机器。

  对比可以发现,水平扩展比垂直扩展有更强大的扩展性,可以说是“无限”扩展,毕竟单台的机器的性能总是有限的,硬件的技术发展还赶不上web的发展。但同时,水平扩展也来了更高的维护成本。实际中,需要根据具体情况来寻求一个平衡点。

  二、冗余

  机器总可能会发生故障,而唯一的保证故障状况下服务依然可用的办法就是由多个硬件备份。备份可以分为热备份和冷备份,注意的区别在于数据服务是否在线,数据在线服务的同时进行的备份成为热备份。例如将mysql服务器关闭,然后拷贝数据文件到备份位置,则是典型的冷备份行为。

  三、负载均衡

  当我们使用了水平扩展之后,我们开始考虑新的问题了,如何将大量的请求“均衡”到我们的扩展机器上呢?

  两种负载均衡模式:有状态(如有携带session)和无状态

  两种负载均衡方式:硬件均衡和软件均衡

  硬件均衡比较简单,通常接入一个设备即可,之后的均衡和故障检测等等都由硬件自动完成。成本较高。

  软件均衡则是通过软件来转发各种请求,更加容易的定义转发规则,有较多的开源产品选择。

  第四层和第七层

  经常在负载均衡中看到第四层和第七层这两个名词。它们实际上是指它们各自工作时所处理的网络协议的层数(使用ISO模型)。

  第四层是数据传输层,包括TCP和UDP,第七层则是应用层,通常web中为HTTP应用。如Apache、nginx等支持第七层的均衡,而且可配置性都相当强大,能够适应较复杂的应用。例如可以简单的将流量分担到各个负载机上,也可以定义一套业务规则,将应用划分为不同的池,每个池处理某些固定规则的URL。

  对比软件均衡与硬件均衡,可以发现它们各自的优缺点:

  1. 硬件均衡成本比较高,软件均衡多数可以使用免费的开源软件来实现。

  2. 硬件均衡对于故障检测比软件均衡更加强大、快速。在采用硬件均衡时,一旦某台机器出现故障,马上就可以检测出来并立即屏蔽。

  3. 硬件均衡可以快速的添加机器(接入硬件接口即可),而软件均衡除了添加机器外还要添加一些配置信息,以将某些流量导入到新的机器。

  4. 软件均衡可以定义非常复杂的业务规则,而硬件均衡在这方面相对较弱。

  5. 多数的硬件均衡方案都有捆绑附加的一些服务如HTTPS加速、DOS防火墙等等。

  还有一种比较流行的方案:DNS解析。这种方式对解决用户分布在不同地理位置、不同网络的情况有着相当好的效果,每个用户都可以根据自己的网络得到一个较快速的访问IP。缺点也比较明显:DNS更新缓慢,对于实时性的均衡几乎没有什么作用,因为DNS的更新往往需要一两个小时,甚至一两天。

  四、使用缓存

  使用缓存将某些实时性要求不高的服务结果缓存起来是大型应用解决方案的一个共识,合理的使用缓存将极大的改善应用体验和性能。

  常用的几类缓存:

  缓存数据:memcached memcachedb

  缓存HTTP请求: squid

  用户浏览器缓存

  说说大型高并发高负载网站的系统架构

  发布:倪海涛

  来自:BudiChina.com

  更新:2010-03-15 11:53:58

  转帖:http://www.toplee.com/blog/71.html

  摘要:一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了。随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。

  前言

  鄙人先后在CERNET做过拨号接入,在Yahoo&3721搞过搜索前端,在猫扑处理过mop.com的架构升级,在6.cn视频网站从事开发工作,还在多年的工作中接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的解决方案上有一些积累和经验,希望和大家一起探讨。

  一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。

  大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。

  上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。

  1、HTML静态化

  其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息发布系统CMS,像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。

原文转自:http://blogread.cn/it/article/1504?f=wb