我在CERNET做过离线网络连接平台的构筑,而后在Yahoo&3721从事过浏览器前端开发,又在MOP处理过小型街道社区豆瓣萨温齐的构架升级等工作,同时自己接触和开发过不少特大型中文网站的组件,因此在小型中文网站应对高阻抗和mammalian的软件系统上有许多积累和实战经验,能和我们一起探讨一下。
两个小型的中文网站,比如说个人中文网站,能选用最简单的html动态网页就同时实现了,配合许多图片达到亮化效果,所有的网页均存放。
在两个目录下,这种的中文网站对控制系统构架、操控性的明确要求都很单纯,随着互联网业务的不断完善,中文网站相关的控制技术经过这些年的发展。
已经细分到很细的各个各方面,尤其对小型中文网站而言,所选用的控制技术更是牵涉面非常广,从硬体到软件、C语言、资料库、WebServer、内网等各个各方面都有了极高的明确要求,已经不是原来单纯的html动态中文网站所能相媲美的。
大型中文网站,比如说要道中文网站。在面对大批用户出访、高mammalian请求各方面,基本的软件系统集中在这种两个环节:选用高效能的伺服器、高效能的资料库、高效的C语言、还有高效能的Web罐子。但除这两个各方面,还没法根本化解小型中文网站面临的高阻抗和高mammalian问题。
上面提供的两个化解路子在一定程度上也意味着更大的投入,因此这种的化解路子具有困局,没有很好的可扩展性,下面我从高效率、高效能和高与此相反的角度而言说我的许多实战经验。
1、HTML动态化
只不过我们都知道,效率最高、消耗最小的就是纯动态化的html网页,所以他们尽量使他们的中文网站上的网页选用动态网页来同时实现,这个最单纯的方式只不过也是最有效的方式。但对大批文本因此频密预览的中文网站,他们无法全部全自动去原都同时实现,于是出现了他们常见的重要信息正式发布控制系统CMS,像他们常出访的各个要道公交站点的新闻电视频道,甚至他们的其他电视频道,都是通过重要信息正式发布控制系统来管理工作和同时实现的,重要信息正式发布控制系统能同时实现最单纯的重要信息存档全自动生成动态网页,还能具有电视频道管理工作、权限管理工作、全自动截取等功能,对两个小型中文网站而言,拥有一套高效、可管理工作的CMS是不可或缺的。
除要道和重要信息正式发布类别的中文网站,对互动性明确要求极高的街道社区类别中文网站而言,尽可能的动态化也是提高效能的必要方式,将街道社区内的回帖、文章进行动态的动态化,有预览的时候再重新动态化也是大批选用的路子,像Mop的萨温齐就是选用了这种的路子,腾讯街道社区等也是如此。
同时,html动态化也是某些内存路子选用的方式,对控制系统中频密选用资料库查询但文本预览很小的应用,能考虑选用html动态U260同时实现,比如说论坛中论坛的公用设置重要信息,这些重要信息目前的主流论坛都能进行后台管理工作因此存储再资料库中,这些重要信息只不过大批被前台程序调用,但预览频率很小,能考虑将这部分文本进行后台预览的时候进行动态化,这种避免了大批的资料库出访请求。
2、图片伺服器分离
我们知道,对Web伺服器而言,不管是Apache、IIS还是其他罐子,图片是最消耗资源的,于是他们有必要将图片与网页进行分离,这是基本上小型中文网站都会选用的路子,他们都有独立的图片伺服器,甚至很多台图片伺服器。这种的构架能降低提供网页出访请求的服务器控制系统压力,因此能保证控制系统不会因为图片问题而崩溃,在应用伺服器和图片伺服器上,能进行不同的配置优化,比如说apache在配置ContentType的时候能尽量少支持,尽量少的LoadModule,保证更高的控制系统消耗和执行效率。
3、资料库集群和库表散列
小型中文网站都有复杂的应用,这些应用必须选用资料库,那么在面对大批出访的时候,资料库的困局很快就能显现出来,这时一台资料库将很快无法满足应用,于是我们需要选用资料库集群或者库表散列。
在资料库集群各方面,很多资料库都有自己的软件系统,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是类似的方案,您选用了什么样的DB,就参考相应的软件系统来实施即可。
上面提到的资料库集群由于在构架、成本、与此相反各方面都会受到所选用DB类别的限制,于是他们需要从应用程序的角度来考虑改善控制系统构架,库表散列是常用因此最有效的化解方案。他们在应用程序中安装业务和应用或者功能组件将资料库进行分离,不同的组件对应不同的资料库或者表,再按照一定的路子对某个网页或者功能进行更小的资料库散列,比如说用户表,按照用户ID进行表散列,这种就能够高效率的提升控制系统的操控性因此有很好的可扩展性。sohu的论坛就是选用了这种的构架,将论坛的用户、设置、回帖等重要信息进行资料库分离,然后对回帖、用户按照板块和ID进行散列资料库和表,最终能在配置文件中进行简单的配置便能让控制系统随时增加一台高效率的资料库进来补充控制系统操控性。
4、内存
内存一词搞控制技术的都接触过,很多地方用到内存。中文网站构架和中文网站开发中的内存也是非常重要。这里先讲述最基本的两种内存。高级和分布式的内存在后面讲述。
构架各方面的内存,对Apache比较熟悉的人都能知道Apache提供了自己的内存组件,也能选用外加的Squid组件进行内存,这两种方式均能有效的提高Apache的出访响应能力。
中文网站程序开发各方面的内存,Linux上提供的Memory Cache是常用的内存接口,能在web开发中选用,比如说用Java开发的时候就能调用MemoryCache对许多数据进行内存和通讯共享,许多小型街道社区选用了这种的构架。另外,在选用web语言开发的时候,各种语言基本都有自己的内存组件和方式,PHP有Pear的Cache组件,Java就更多了,.net不是很熟悉,相信也肯定有。
5、镜像
镜像是小型中文网站常选用的提高效能和数据安全性的方式,镜像的控制技术能化解不同网络网络连接商和地域带来的用户出访速度差异,比如说ChinaNet和EduNet之间的差异就促使了很多中文网站在教育网内构筑镜像公交站点,数据进行定时预览或者动态预览。在镜像的细节控制技术各方面,这里不阐述太深,有很多专业的现成的化解构架和产品可选。也有廉价的通过软件同时实现的路子,比如说Linux上的rsync等工具。
6、阻抗均衡
阻抗均衡将是小型中文网站化解高负荷出访和大批mammalian请求选用的终极化解办法。
阻抗均衡控制技术发展了多年,有很多专业的服务提供商和产品能选择,我个人接触过许多化解方式,其中有两个构架能给我们做参考。硬体四层交换
第四层交换选用第三层和第四层重要信息包的报头重要信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用伺服器进行处理。 第四层交换功能就象是虚IP,指向物理伺服器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理伺服器基础上,需要复杂的载量平衡算法。在IP世界,业务类别由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。
在硬件四层交换产品领域,有许多知名的产品能选择,比如说Alteon、F5等,这些产品很昂贵,但物有所值,能够提供非常优秀的操控性和很灵活的管理工作能力。Yahoo中国当初接近2000台伺服器选用了三四台Alteon就搞定了。
软件四层交换
我们知道了硬体四层交换机的原理后,基于OSI模型来同时实现的软件四层交换也就应运而生,这种的软件系统同时实现的原理一致,不过操控性稍差。但满足一定量的压力还是游刃有余的,有人说软件同时实现方式只不过更灵活,处理能力完全看你配置的熟悉能力。
软件四层交换他们能选用Linux上常用的LVS来化解,LVS就是Linux Virtual Server,他提供了基于心跳线heartbeat的实时灾难应对软件系统,提高控制系统的鲁棒性,同时可供了灵活的虚拟VIP配置和管理工作功能,能同时满足多种应用需求,这对分布式的控制系统而言不可或缺。
两个典型的选用阻抗均衡的路子就是,在软件或者硬体四层交换的基础上构筑squid集群,这种路子在很多小型中文网站包括浏览器上被选用,这种的构架高效率、高效能还有很强的与此相反,随时往构架里面增减节点都非常容易。这种的构架我准备空了专门详细整理一下和我们探讨。
对小型网站而言,前面提到的每个方式可能都会被同时选用到,我这里介绍得比较浅显,具体同时实现过程中很多细节还需要我们慢慢熟悉和体会,有时两个很小的squid参数或者apache参数设置,对控制系统操控性的影响就会很大,希望我们一起讨论,达到抛砖引玉之效。
原文:http://www.toplee.com/blog/?p=71
推荐阅读