大型网站平台优化方案Word文件下载.docx

上传人:b****1 文档编号:3145324 上传时间:2023-05-01 格式:DOCX 页数:12 大小:26.02KB
下载 相关 举报
大型网站平台优化方案Word文件下载.docx_第1页
第1页 / 共12页
大型网站平台优化方案Word文件下载.docx_第2页
第2页 / 共12页
大型网站平台优化方案Word文件下载.docx_第3页
第3页 / 共12页
大型网站平台优化方案Word文件下载.docx_第4页
第4页 / 共12页
大型网站平台优化方案Word文件下载.docx_第5页
第5页 / 共12页
大型网站平台优化方案Word文件下载.docx_第6页
第6页 / 共12页
大型网站平台优化方案Word文件下载.docx_第7页
第7页 / 共12页
大型网站平台优化方案Word文件下载.docx_第8页
第8页 / 共12页
大型网站平台优化方案Word文件下载.docx_第9页
第9页 / 共12页
大型网站平台优化方案Word文件下载.docx_第10页
第10页 / 共12页
大型网站平台优化方案Word文件下载.docx_第11页
第11页 / 共12页
大型网站平台优化方案Word文件下载.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

大型网站平台优化方案Word文件下载.docx

《大型网站平台优化方案Word文件下载.docx》由会员分享,可在线阅读,更多相关《大型网站平台优化方案Word文件下载.docx(12页珍藏版)》请在冰点文库上搜索。

大型网站平台优化方案Word文件下载.docx

如果网站的硬盘读写性能是整个网站性能提升的一个瓶颈的话,可以考虑将硬盘的读,写功能分开,分别进行优化。

在专门用来写的硬盘上,我们可以在Linux下使用软件RAID-0(磁盘冗余阵列0级)。

RAID-0在获得硬盘IO提升的同时,也会增加整个文件系统的故障率——它等于RAID中所有驱动器的故障率之和。

如果需要保持或提高硬盘的容错能力,就需要实现软件RAID-1,4或5,它们能在某一个(甚至几个)磁盘驱动器故障之后仍然保持整个文件系统的正常运行,但文件读写效率不如RAID—0。

而专门用来读的硬盘,则不用如此麻烦,可以使用普通的服务器硬盘,以降低开销。

一般的文件系统,会综合考虑各种大小和格式的文件的读、写效率,因而对特定的文件读或写的效率不是最优.如果有必要,可以通过选择文件系统,以及修改文件系统的配置参数来达到对特定文件的读或写的效率最大化。

比如说,如果文件系统中需要存储大量的小文件,则可以使用ReiserFS来替代Linux操作系统默认的ext3系统,因为ReiserFS是基于平衡树的文件系统结构,尤其对于大量文件的巨型文件系统,搜索速度要比使用局部的二分查找法的ext3快。

ReiserFS里的目录是完全动态分配的,因此不存在ext3中常见的无法回收巨型目录占用的磁盘空间的情况。

ReiserFS里小文件(<

4K)可以直接存储进树,小文件读取和写入的速度更快,树内节点是按字节对齐的,多个小文件可共享同一个硬盘块,节约大量空间。

ext3使用固定大小的块分配策略,也就是说,不到4K的小文件也要占据4K的空间,导致的空间浪费比较严重。

但ReiserFS对很多Linux内核支持的不是很好,如果网站想要使用它,就必须要安装与它配合的较好的内核。

ReiserFS还是一个较为年轻的,发展迅速的文件系统,它相对于ext3来说有一个很大的缺陷就是,每次ReiserFS文件系统升级的时候,必须完全重新格式化整个磁盘分区。

所以在选择使用的时候,需要权衡取舍。

1.5.数据库集群和库表散列

大型网站都有复杂的应用,这些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓶颈很快就能显现出来,这时一台数据库将很快无法满足应用,于是需要使用数据库集群或者库表散列。

在数据库集群方面,很多数据库都有自己的解决方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是类似的方案,使用了什么样的DB,就参考相应的解决方案来实施即可。

上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制,于是需要从应用程序的角度来考虑改善系统架构,库表散列是常用并且最有效的解决方案。

在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性.如sohu的论坛就是采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行散列数据库和表,最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。

1.6.缓存

网站架构和网站开发中的缓存也是非常重要。

架构方面的缓存,Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。

网站程序开发方面的缓存,Linux上提供的MemoryCache是常用的缓存接口,可以在web开发中使用,比如用Java开发的时候就可以调用MemoryCache对一些数据进行缓存和通讯共享。

另外,在使用web语言开发的时候,各种语言基本都有自己的缓存模块和方法。

1.6.1.硬盘级缓存

硬盘级别的缓存是指将需要动态生成的内容暂时缓存在硬盘上,在一个可接受的延迟时间范围内,同样的请求不再动态生成,以达到节约系统资源,提高网站承受能力的目的。

Linux环境下硬盘级缓存一般使用Squidcache。

Squid是一个高性能的代理缓存服务器。

和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

它接受来自客户端对目标对象的请求并适当地处理这些请求。

比如说,用户通过浏览器想下载(即浏览)一个web页面,浏览器请求Squid为它取得这个页面。

Squid随之连接到页面所在的原始服务器并向服务器发出取得该页面的请求。

取得页面后,Squid再将页面返回给用户端浏览器,并且同时在Squid本地缓存目录里保存一份副本.当下一次有用户需要同一页面时,Squid可以简单地从缓存中读取它的副本,直接返回给用户,而不用再次请求原始服务器。

当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议.

Squid默认通过检测HTTP协议头的Expires和Cache-Control字段来决定缓存的时间。

在实际应用中,可以显式的在服务器端脚本中输出HTTP头,也可以通过配置apache的mod_expires模块,让apache自动的给每一个网页加上过期时间。

对于静态内容,如图片,视频文件,供下载的软件等,还可以针对文件类型(扩展名),用Squid的refresh_pattern来指定缓存时间。

Squid运行的时候,默认会在硬盘上建两层hash目录,用来存储缓存的Object。

它还会在内存中建立一个HashTable,用来记录硬盘中Object分布的情况。

如果Squid配置成为一个Squid集群中的一个的话,它还会建立一个DigestTable(摘要表),用来存储其它Squid上的Object摘要。

当用户端想要的资料本地硬盘上没有时,可以很快的知道应该去集群中的哪一台机器获得.在硬盘空间快要达到配置限额的时候,可以配置使用某种策略(默认使用LRU:

LeastRecentlyUsed-最近最少用)删除一些Object,从而腾出空间。

集群中的SquidServer之间可以有两种关系:

第一种关系是:

Child和Parent。

当ChildSquidServer没有资料时,会直接向ParentSquidServer要资料,然后一直等,直到Parent给它资料为止。

第二种关系是:

Sibling和Sibling.当SquidServer没有资料时,会先向Sibling的SquidServer要资料,如果Sibling没资料,就跳过它向Parent要或直接上原始网站去拿。

默认配置的Squid,没有经过任何优化的时候,一般可以达到50%的命中率。

如果需要,还可以通过参数优化,拆分业务,优化文件系统等办法,使得Squid达到90%以上的缓存命中率。

Squid处理TCP连接消耗的服务器资源比真正的HTTP服务器要小的多,当Squid分担了大部分连接,网站的承压能力就大大增强了。

1.6.2.内存级缓存

内存级别的缓存是指将需要动态生成的内容暂时缓存在内存里,在一个可接受的延迟时间范围内,同样的请求不再动态生成,而是直接从内存中读取。

Linux环境下内存级缓存Memcached是一个不错的选择。

Memcached是开发的一套非常优秀的分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。

和Squid的前端缓存加速不同,它是通过基于内存的对象缓存来减少数据库查询的方式改善网站的性能,而其中最吸引人的一个特性就是支持分布式部署;

也就是说可以在一群机器上建立一堆Memcached服务,每个服务可以根据具体服务器的硬件配置使用不同大小的内存块,这样,理论上可以建立一个无限大的基于内存的缓存系统。

Memcached是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端API包括Perl/PHP/Python/Ruby/Java/C#/C等等。

客户端首先与Memcached服务建立连接,然后存取对象。

每个被存取的对象都有一个唯一的标识符key,存取操作均通过这个key进行,保存的时候还可以设置有效期。

保存在Memcached中的对象实际上是放置在内存中的,而不是在硬盘上。

Memcached进程运行之后,会预申请一块较大的内存空间,自己进行管理,用完之后再申请一块,而不是每次需要的时候去向操作系统申请.Memcached将对象保存在一个巨大的Hash表中,它还使用NewHash算法来管理Hash表,从而获得进一步的性能提升。

所以当分配给Memcached的内存足够大的时候,Memcached的时间消耗基本上只是网络Socket连接的时间了。

Memcached也有它的不足。

首先它的数据是保存在内存当中的,一旦服务进程重启(进程意外被关掉,机器重启等),数据会全部丢失。

其次Memcached以root权限运行,而且Memcached本身没有任何权限管理和认证功能,安全性不足。

第一条是Memcached作为内存缓存服务使用无法避免的,当然,如果内存中的数据需要保存,可以采取更改Memcached的源代码,增加定期写入硬盘的功能。

对于第二条,我们可以将Memcached服务绑定在内网IP上,通过Linux防火墙进行防护.

1.7.镜像

镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新.

镜像网站具体是指将一个完全相同的站点放到几个服务器上,分别有自己的URL,这些服务器上的网站互相称为镜像网站。

镜像网站和主站并没有太大差别,或者可以视为主站的拷贝.镜像网站的好处是:

如果不能对主站作正常访问(如服务器故障,网络故障或者网速太慢等),仍能通过镜像服务器获得服务.不便之处是:

更新网站内容的时候,需要同时更新多个服务器;

需要用户记忆超过一个网址,或需要用户选择访问多个镜像网站中的一个,而用户选择的,不一定是最优的。

在用户选择的过程中,缺乏必要的可控性。

在互联网发展的初期,互联网上的网站内容很少,而且大都是静态内容,更新频率底。

但因为服务器运算能力低,带宽小,网速慢,热门网站的访问压力还是很大.镜像网站技术在这种情况下作为一种有效解决方案,被广泛采用。

随着互联网的发展,越来越多的网站使用服务器端脚本动态生成内容,同步更新越来越困难,对可控性要求越来越高,镜像技术因为不能满足这类网站的需要,渐渐的淡出了人们的视线。

但有一些大型的软件下载站,因为符合镜像网站的条件—-下载的内容是静态的,更新频率较低,对带宽,速度要求又比较高,如国外的SourceForge(http:

//www。

SourceForge。

net,著名开源软件托管网站),Fedora(http:

//fedoraproject。

org,RedHat赞助的Linux发行版),国内的华军软件园(http:

//),天空软件站(http:

//)等,还在使用这项技术。

在网站建设的过程中,可以根据实际情况,将静态内容作一些镜像,以加快访问速度,提升用户体验。

在镜像的细节技术方面,有很多专业的现成的解决架构和产品可选。

也有廉价的通过软件实现的思路,比如Linux上的rsync等工具。

1.8.CDN内容分发网络

CDN的全称是ContentDeliveryNetwork,即内容分发网络。

其目的是通过在现有的互联网中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,分散服务器的压力,解决互联网拥挤的状况,提高用户访问网站的响应速度。

从而解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题。

 CDN与镜像网站技术的不同之处在于网站代替用户去选择最优的内容服务器,增强了可控制性。

CDN其实是夹在网页浏览者和被访问的服务器中间的一层镜像或者说缓存,浏览者访问时点击的还是服务器原来的URL地址,但是看到的内容其实是对浏览者来说最优的一台镜像服务器上的页面缓存内容。

这是通过调整服务器的域名解析来实现的。

使用CDN技术的域名解析服务器需要维护一个镜像服务器列表和一份来访IP到镜像服务器的对应表.当一个用户的请求到来的时候,根据用户的IP,查询对应表,得到最优的镜像服务器的IP地址,返回给用户。

这里的最优,需要综合考虑服务器的处理能力,带宽,离访问者的距离远近等因素。

当某个地方的镜像网站流量过大,带宽消耗过快,或者出现服务器,网络等故障的时候,可以很方便的设置将用户的访问转到另外一个地方。

这样就增强了可控制性。

图2CDN原理示意图

  CDN网络加速技术也有它的局限性。

首先,因为内容更新的时候,需要同步更新多台镜像服务器,所以它也只适用于内容更新不太频繁,或者对实时性要求不是很高的网站;

其次,DNS解析有缓存,当某一个镜像网站的访问需要转移时,主DNS服务器更改了IP解析结果,但各地的DNS服务器缓存更新会滞后一段时间,这段时间内用户的访问仍然会指向该服务器,可控制性依然有不足.

  目前,国内访问量较高的大型网站如新浪、网易等的资讯频道,均使用CDN网络加速技术,虽然网站的访问量巨大,但无论在什么地方访问,速度都会很快.但论坛,邮箱等更新频繁,实时性要求高的频道,则不适合使用这种技术。

1.9.负载均衡

负载均衡将是大型网站解决高负荷访问和大量并发请求采用的常用解决办法。

1.9.1.负载均衡主要应用技术

1、DNS负载均衡

最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。

DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。

  

2、代理服务器负载均衡

使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度.然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的.  

3、地址转换网关负载均衡

支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。

4、协议内部支持负载均衡

除了这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力等,HTTP运行于TCP连接的最高层.  

5、NAT负载均衡NAT(NetworkAddressTranslation网络地址转换)

简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的InternetIP地址间进行转换.适用于解决InternetIP地址紧张、不想让网络外部知道内部网络结构等的场合下。

6、反向代理负载均衡

普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。

反向代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。

7、混合型负载均衡在有些大型网络

由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,我们可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到最佳的性能.我们将这种方式称之为混合型负载均衡。

此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。

1.9.2.负载均衡的分类

1、软/硬件负载均衡

软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNSLoadBalance,CheckPointFirewall—1ConnectControl等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。

软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键;

软件可扩展性并不是很好,受到操作系统的限制;

由于操作系统本身的Bug,往往会引起安全问题。

硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备我们通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。

负载均衡器有多种多样的形式,除了作为独立意义上的负载均衡器外,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将这一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上.  

一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。

2、本地/全局负载均衡

负载均衡从其应用的地理结构上分为本地负载均衡(LocalLoadBalance)和全局负载均衡(GlobalLoadBalance,也叫地域负载均衡),本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。

本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成数据流量的损失。

其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。

即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。

全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司通过Intranet(企业内部互联网)来达到资源统一合理分配的目的。

全局负载均衡有以下的特点:

A、实现地理位置无关性,能够远距离为用户提供完全的透明服务。

B、除了能避免服务器、数据中心等的单点失效,也能避免由于ISP专线故障引起的单点失效。

C、解决网络拥塞问题,提高服务器响应速度,服务就近提供,达到更好的访问质量。

1.10.硬件四层交换

第四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。

 第四层交换功能就象是虚IP,指向物理服务器.它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。

这些业务在物理服务器基础上,需要复杂的载量平衡算法。

在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定.

在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力.Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了.

1.11.软件四层交换

大家知道了硬件四层交换机的原理后,基于OSI模型来实现的软件四层交换也就应运而生,这样的解决方案实现的原理一致,不过性能稍差。

但是满足一定量的压力还是游刃有余的,有人说软件实现方式其实更灵活,处理能力完全看你配置的熟悉能力。

软件四层交换我们可以使用Linux上常用的LVS来解决,LVS就是LinuxVirtualServer,他提供了基于心跳线heartbeat的实时灾难应对解决方案,提高系统的鲁棒性,同时可供了灵活的虚拟VIP配置和管理功能,可以同时满足多种应用需求,这对于分布式的系统来说必不可少。

一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2