国内大型网站开发时的几点建议
从本节开始,我们将结合国内外大型IT网站在技术扩展方面的沉痛教训和成功经验,探讨在如今刚刚开始的Web 2.0时代如何应对国内网站即将面临的数据访问量增加(甚至是急剧膨胀)的问题,并提出一些供参考的策略和建议。
(四) 搭建科学的系统架构
构建大型的商业网站绝对不可能像构建普通的小型网站一样一蹴而就,需要从严格的软件工程管理的角度进行认真规划,有步骤有逻辑地进行开发。对于大
型网站来说,所采用的技术涉及面极其广泛,从硬件到软件、编程语言、数据库、Web服务器、防火墙等各个领域都有了很高的要求,已经不是原来简单的
html静态网站所能比拟的。以著名的Yahoo!为例,他们的每一个大型网站工程都需要大量相应专业人员的参与。
(五) 页面静态化
可不要小看纯静态化的HTML页面!其实在很多情况下,HTML往往意味着“效率最高、消耗最小”,所以我们尽可能使我们的网站上的页面采用静态
页面来实现。但是,对于大量内容并且频繁更新的网站,我们无法全部手动实现,因此可以开发相应的自动化更新工具,例如我们常见的信息发布系统CMS。像我
们经常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的。信息发布系统可以实现最简单的信息录入自动生成静态页
面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。
(六) 存储问题
存储也是一个大问题,一种是小文件的存储,比如图片这类;另一种是大文件的存储,比如搜索引擎的索引。
大家知道,对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网
站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图
片问题而崩溃,在应用服务器和图片服务器上,可以进行不同的配置优化以保证更高的系统消耗和执行效率。
(七) 数据库技术—集群和库表散列
对于大型网站而言,使用大型的数据库服务器是必须的事情。但是,在面对大量访问的时候,数据库的瓶颈仍然会显现出来,这时一台数据库将很快无法满足应用,于是我们需要借助于数据库集群或者库表散列技术。
在数据库集群方面,很多数据库厂商都有自己的解决方案,Oracle、Sybase、SQL Server等都有很好的方案,常用的MySQL提供的Master/Slave也是类似的方案。因此,你使用了什么样的数据库,就参考相应的解决方案来实施即可。
上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用数据库类型的限制,于是我们需要从应用程序的角度来考虑改善系统架构,其中,库
表散列是常用并且最有效的解决方案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略
对某个页面或者功能进行更小的数据库散列,比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。在这一方面一个现
成的例子就是搜狐。它的论坛就是采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行散列数据库和表,
最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。
(八) 缓存策略
这绝对不单指低级的缓存技术相关的编程,应从整个架构角度着眼,深入研究Web服务器、数据库服务器的各层级的缓冲策略,最后才是低级的缓冲技术
的编程。不同的Web服务器、数据库服务器及Web编程语言都有自己不同的缓冲策略。例如数据库存储方面,SQL Serve
2005中的主动式缓存机制,Oracle数据的cache
group技术,Hibernate的缓存包括Session的缓存和SessionFactory的缓存;Web服务器方面,Apache提供了自己的
缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力,IIS缓冲器技术;至于web开发语言,所
用缓存技术更存在很大不同,例如ASP.NET
2.0中提出了两种缓存应用程序数据和缓存服务页输出的策略,这两种缓存技术相互独立但不相互排斥,PHP有Pear的Cache模块,等等。
(九) 镜像
镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异。在镜像的细节技术方面,这
里不阐述太深,有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路,比如Linux上的rsync等工具。
(十) 负载均衡
负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。
负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,基于LAMP解决方案的Lighttped+Squid是相当不错的解决负载均衡和加速系统的有效方式。
(十一) 硬件四层交换
第四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。第四层交换功能
就象是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需
要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口
共同决定。
在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了。
(十二) 软件四层交换
大家知道了硬件四层交换机的原理后,基于OSI模型来实现的软件四层交换也就应运而生,这样的解决方案实现的原理一致,不过性能稍差。但是满足一定量的压力还是游刃有余的。
一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都非常容易。
(十三) 软件投资问题
据报导,目前国内除了一些上市企业和特别大知名大公司以外,很少有企业在成本中考虑正版软件的购置费用。这种思维极有可能给中国互联网带来噩梦。
如果一些公司真正面临软件资金方面的困难,完全可以考虑使用开源世界的LAMP解决方案(Linux+Apache+MySQL+Perl、PHP或者
Python Web编程语言);否则,随着我国加入WTO范围的不断扩大,盗版打击必然越来越严。因此,“苟且偷生”必将自食其果。
另外,随着网络带宽日渐提升,WEB 2.0技术必将影响到网络世界的几乎每一个角落。因此,如何积聚技术人员进行技术攻关并进一步加强安全防范也成为一个日益严峻的问题,宜尽早纳入到公司的议事日程。
分享到:
相关推荐
### 企业信息化的几点思考 #### 一、信息化建设的根本价值和企业信息资源规划的重要性 在探讨企业信息化的过程中,我们首先要明确的是企业信息化建设的根本价值所在。过去,人们普遍认为企业信息化的作用在于...
本书内容将围绕以下几点展开: - **银行业务基础知识**:介绍银行的基本业务类型和服务模式,包括但不限于存款、贷款、支付结算等。 - **IT技术在银行业的应用**:探讨信息技术如何支持银行业务的运作和发展,比如...
3. 一次线对二次线的影响:大型系统和高短路水平下,一次线接地短路产生的电位升可能导致二次设备和电缆受损,引发反击事故,加速电缆绝缘老化,影响控制保护设备的正常工作。 4. 接地材料与腐蚀问题:国外通常使用...
国内著名互联网企业的工程师在批注中可能会结合中国软件行业的特点,提供针对敏捷实践本地化的建议,如如何在中国文化背景下更好地执行敏捷会议,如何处理大型项目中的敏捷挑战,以及如何平衡快速迭代与长期稳定性...
在买方市场环境下,中小银行需凭借优质服务吸引客户,树立良好的公众形象,以区别于大型银行,增强竞争力。 1.3 市场营销的综合展示 通过各种营销手段,如广告、人员推销等,银行可以全面展现其经营理念、服务和...
- 当前,国内电力系统主要采用集中补偿和就地补偿技术,但可能无法应对负荷变化快速的场景,导致补偿效果不理想。 - 存在谐波问题:随着非线性负载(如变频器)的增加,谐波污染严重,单纯补偿无功功率不能解决...
### DBMS开发实战需求文档第一草稿知识点梳理 #### 一、DBMS开发实战概述 - **撰写目的**:本文档旨在为即将开展的DBMS(数据库管理系统)项目确立初步的需求框架,它并非最终版需求文档,而是经过多次迭代与完善...
针对这些资源,开发项目应考虑以下几个关键点: 1. **资源保护与合理利用**:在开发过程中,必须注重环境保护,合理利用自然资源,避免对环境造成不可逆的损害。这包括对火山遗迹、矿泉资源的科学管理和可持续开发...
### 独立游戏开发杂志No.1.pdf关键知识点概览 #### 1. **独立游戏的定义与发展背景** - **定义**:独立游戏通常指的是由个人或小型团队开发,不受大型游戏发行商直接控制的游戏作品。这些游戏往往追求创意、独特性...
为此,文章提出了几点建议: 1. **加强基础研究**:深化对固体推进剂、材料科学和燃烧动力学的理解,为技术创新奠定基础。 2. **技术引进与合作**:通过国际合作和技术交流,快速提升国内技术水平。 3. **创新设计与...
综合来看,大型煤炭企业在新形势下制定融资策略时,需深入分析市场变化和自身发展阶段,灵活运用多种融资渠道,并结合集团的长远发展规划,制定出科学合理的融资策略。同时,还应注重增强企业的核心竞争力,优化产业...
如果你决定投身Android开发,以下几点建议可以帮助你更好地起步: - **编程语言基础**:确保自己至少熟悉一门编程语言,如C语言或Java。对于大多数计算机专业的学生来说,学校通常会提供相关课程,但重要的是要真正...
根据提供的文件内容,可以提炼出以下知识点: ...这些知识点详细地反映了中国黄金矿业在过去几十年中的并购趋势、国际并购的战略转移,以及对全球黄金资源稀缺性、并购市场的变化和未来战略选择的深刻洞察。
五、对社交网站盈利的几点建议 1. 为用户创造价值,提高用户黏性:提供有价值的内容和服务,让用户愿意长期使用并推荐给他人,从而增强用户粘性和忠诚度。 2. 开发个性化服务:通过大数据和人工智能技术,提供个性...
开发时,将JSP文件放在test目录下,Java原文件放在test\WEB-INF\src下,编译后的类文件放在test\WEB-INF\classes下。 <br/> 注册页面:reguser.jsp ;charset=UTF-8" language="java" %> <%...
三、给SEOer的几点建议 1. 地理位置:建议SEOer前往互联网和电子商务行业发达的城市发展,如北京、上海、深圳。 2. 企业选择:选择对SEO有深入理解且重视这一领域的公司,外企通常对SEO的认知更为成熟。 3. 成功...
----------VC应用开发 [Visual.C..编程技巧精选500例]源代码. 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件...