说道网站的硬构架,首先说到的就是机房的选择,然后就是宽带的大小,然后就是服务器的划分,服务器通常分为图片服务器、页面服务器、数据库服务器、应用服务器、日至服务器等等。而对于网站的软架构,首先可以有框架的选择,然后还有逻辑的分层。
对于网站优化,第一要考虑的就是html静态化,对于一个大型的网站来说,使用一套高效的CMS是很重要的,第二要考虑的就是图片服务器分离,因为图片服务器是最消耗资源的,第三个要考虑的就是数据库集群和库表散列,第四个就是缓存,首先就是软件层的缓存,比如apache的缓存模块和squid进行缓存,都可以提高apache对访问的响应能力,然后就是编程语言也可以使用自己的缓存模块。第五个就是镜像,镜像技术可以解决不同网络接入商和地域带来的用户访问速度带来的差异,第六点就是负载均衡,负载均衡是大型网站解决高负载、高并发请求的终极方法。
其中Linux服务器可以提供邮件、web、文件缓存、数据库等服务,而且Linux服务器的成本也比较低,因为它不需要买专用的硬件设备,它可以运行在普通的PC机上。对于Linux集群,通常分为三类:第一类就是高可用性集群,它的目的是在某个节点出现鼓掌的时候仍然可以提供相应的服务,第二类就是负载均衡集群,它的目的就是平衡各个节点的负载能力,它的目的是应对大访问量的web服务,负载均衡集群通常也拥有一定的高可用特点。第三类就是超级计算集群,根据计算关联程度,可以分为任务片方式和并行计算方式。
通常来说高可用集群并不要求负载均衡功能,它的目的是提高系统的可靠性,并不提升负载的能力,高可用集群可以运行多种服务,比如节点A提供mysql服务,节点B提供oracle服务。负载均衡可以用于提供相对静态的数据服务,比如http服务,因为负载均衡集群的各个节点通常没有公用的存储介质,我们的数据通常被复制为多个部分,存放在每个节点上。
很多硬件生产商都有自己的专门用于负载均衡的设备,而这些负载均衡设备的形式也是多种多要那个,比如有些把负载均衡功能放到交换设备中,也就是至于服务器与internt之间,而某些厂商则是把这些功能集成到计算机上,一块可以连接到前端的交换机上,另一块则通过路由器或者其他设备连接到internet上。而且负载均衡设备都普遍支持路径外返回模式,也就是可以绕过流量分配器,为那些需求数据量较大的用户提供更快的响应。
负载均衡设备可以分为内本地和远程两种,本地负载均衡器能够平衡服务器集群中所有的服务器和应用之间的负载,将请求交给负载最轻的服务器进行处理,来提高服务器性能。而且这些负载均衡设备也可以通过记录来了解流量的分布情况。
而对于远程负载均衡技术,就是有多个网站地址的企业进行的专门设计,它能够根据单个的URL地址将通信路由到最方便的站点,从而实现防御网范围的负载均衡。当然这个负载均衡系统的工作量是很大的,他需要在后台收集多个站点的状态信息,比如服务器的响应时间、通信量、本地系统状态、从而使得设备能够立即确定每个数据中心的状态,并且将访问导向到最佳站点。
最早的软件负载均衡技术是通过DNS轮询来完成的,在DNS中配置多个A记录,查询这个域名的客户机将得到其中一个A记录所对应的地址,从而使得不同的客户访问不同的服务器,从而达到负载均衡的目的。但是它无法区分服务器的差异,而且他也不能反映当前服务器的运行状态。
除去DNS轮询之外,另一种有效的方式就是代理服务器,将请求发送给内部的服务器,他可以提升静态网页的访问速度,也可以将请求均匀地转发给多台服务器,从而达到负载均衡的目的。但是这种代理不是普通的代理,他是代理多个用户访问内部服务器,因此被称为反向代理。标准的代理方式是客户端使用代理访问外部服务器。
对于每一次请求,代理服务器都必须维护两个连接,一个是对外的连接,一个是对内的连接,因此对于连接数很高的时候,代理服务器的负载也很大。反向代理应该使用一些优化,每次访问的时候都请求最空闲的内部服务器,代理服务器也可能会称为服务的瓶颈。
当一个网站的点击率达到每秒钟上千次的时候,tcp连接、http报头信息以及进程的时延就很重要了,在http请求和报头中偶很多对负载均衡有用的信息。