Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们。但Web2.0以用户为导向的理念,使得新生的网站有了新的特点——高并发,高流量,数据量大,逻辑复杂等,对网站建设也提出了新的要求。
本文围绕高并发高流量的网站架构设计问题,主要研究讨论了以下内容:
首先在整个网络的高度讨论了使用镜像网站,CDN内容分发网络等技术对负载均衡带来的便利及各自的优缺点比较。然后在局域网层次对第四层交换技术,包括硬件解决方案F5和软件解决方案LVS,进行了简单的讨论。接下来在单服务器层次,本文着重讨论了单台服务器的Socket优化,硬盘级缓存技术,内存级缓存技术,CPU与IO平衡技术(即以运算为主的程序与以数据读写为主的程序搭配部署),读写分离技术等。在应用层,本文介绍了一些大型网站常用的技术,以及选择使用该技术的理由。最后,在架构的高度讨论了网站扩容,容错等问题。
本文以理论与实践相结合的形式,结合作者实际工作中得到的经验,具有较广泛的适用性。
1 引言
1.1 互联网的发展
最近十年间,互联网已经从一个单纯的用于科研的,用来传递静态文档的美国内部网络,发展成了一个应用于各行各业的,传送着海量多媒体及动态信息的全球网络。从规模上看,互联网在主机数、带宽、上网人数等方面几乎一直保持着指数增长的趋势,2006年7月,互联网上共有主机439,286,364台,WWW 站点数量达到 96,854,877个 [1]。全球上网人口在2004 年达到 7 亿 2900万 [2],中国的上网人数在 2006 年 12 月达到了约 1亿3700 万[3]。另一方面,互联网所传递的内容也发生了巨大的变化,早期互联网以静态、文本的公共信息为主要内容,而目前的互联网则传递着大量的动态、多媒体及人性化的信息,人们不仅可以通过 互联网阅读到动态生成的信息,而且可以通过它使用电子商务、即时通信、网上游戏等交互性很强的服务。因此,可以说互联网已经不再仅仅是一个信息共享网络,而已经成为了一个无所不在的交互式服务的平台。
1.2 互联网网站建设的新趋势
互联网不断扩大的规模,日益增长的用户群,以及web2.0[4]的兴起,对互联网网站建设提出了新的要求:
高性能和高可扩展性。2000 年 5 月,访问量排名世界第一(统计数据来源[5])的Yahoo [6]声称其日页浏览数达到 6 亿 2500 万,即每秒约 30,000 次HTTP 请求(按每个页面浏览平均产生 4 次请求计算) 。这样大规模的访问量对服务的性能提出了非常高的要求。更为重要的是, 互联网受众的广泛性,使得成功的互联网服务的访问量增长潜力和速度非常大,因此服务系统必须具有非常好的可扩展性,以应付将来可能的服务增长。
支持高度并发的访问。高度并发的访问对服务的存储与并发能力提出了很高的要求,当前主流的超标量和超流水线处理器能处理的并发请求数是有限的,因为随着并发数的上升,进程调度的开销会很快上升。互联网广域网的本质决定了其访问的延迟时间较长,因此一个请求完成时间也较长,按从请求产生到页面下载完成 3 秒计算, Yahoo 在 2000 年 5 月时平均有 90,000 个并发请求。而且对于较复杂的服务,服务器往往要维护用户会话的信息,例如一个互联网网站如果每天有 100 万次用户会话,每次 20分钟的话,那平均同时就会有约 14000 个并发会话。
高可用性。互联网服务的全球性决定了其每天 24 小时都会有用户访问,因此任何服务的停止都会对用户造成影响。而对于电子商务等应用,暂时的服务中止则意味着客户的永久失去及大量的经济损失,例如ebay.com[7]1999 年 6 月的一次 22小时的网站不可访问,对此网站的 380万用户的忠诚度造成巨大影响,使得 Ebay 公司不得不支付了近500万美元用于补偿客户的损失,而该公司的市值同期下降了 40 亿美元[8]。因此,关键互联网应用的可用性要求非常高。
1.3 新浪播客的简介
以YouTube[9]为代表的微视频分享网站近来方兴未艾,仅2006年一年,国内就出现近百家仿YouTube的微视频分享网站[10],试图复制YouTube的成功模式。此类网站可以说是Web2.0概念下的代表网站,具有Web2.0网站所有典型特征:高并发,高流量,数据量大,逻辑复杂,用户分散等等。新浪[11]作为国内最大的门户网站,在2005年成功运作新浪博客的基础上,于2006年底推出了新浪播客服务。新浪播客作为国内门户网站中第一个微视频分享服务的网站,依靠新浪网站及新浪博客的巨大人气资源,在推出后不到半年的时间内,取得了巨大的成功:同类网站中上传视频数量第一、流量增长最快、用户数最多[12],所有这些成绩的取得的背后,是巨大的硬件投入,良好的架构支撑和灵活的应用层软件设计。
2.1 镜像网站技术
镜像网站是指将一个完全相同的站点放到几个服务器上,分别有自己的URL,这些服务器上的网站互相称为镜像网站[13]。镜像网站和主站并没有太大差别,或者可以视为主站的拷贝。镜像网站的好处是:如果不能对主站作正常访问(如服务器故障,网络故障或者网速太慢等),仍能通过镜像服务器获得服务。不便之处是:更新网站内容的时候,需要同时更新多个服务器;需要用户记忆超过一个网址,或需要用户选择访问多个镜像网站中的一个,而用户选择的,不一定是最优的。在用户选择的过程中,缺乏必要的可控性。
在互联网发展的初期,互联网上的网站内容很少,而且大都是静态内容,更新频率底。但因为服务器运算能力低,带宽小,网速慢,热门网站的访问压力还是很大。镜像网站技术在这种情况下作为一种有效解决方案,被广泛采用。随着互联网的发展,越来越多的网站使用服务器端脚本动态生成内容,同步更新越来越困难,对可控性要求越来越高,镜像技术因为不能满足这类网站的需要,渐渐的淡出了人们的视线。但有一些大型的软件下载站,因为符合镜像网站的条件——下载的内容是静态的,更新频率较低,对带宽,速度要求又比较高,如国外的SourceForge (http://www.SourceForge.net,著名开源软件托管网站),Fedora(http://fedoraproject.org,RedHat赞助的Linux发行版),国内的华军软件园(http://www.onlinedown.net),天空软件站(http://www.skycn.com)等,还在使用这项技术(图1)。
分享到:
相关推荐
在高并发系统设计中,异步是第三种方法,在某些场景下,未处理完成之前,我们可以让请求先返回,在数据准备好之后再通知请求方,这样可以在单位时间内处理更多的请求。异步可以大幅度提升系统的性能,但是也需要考虑...
"java高并发.txt"可能是一份文档或笔记,涵盖了Java并发编程的核心概念和技术。它可能详细解释了线程的生命周期、线程安全问题(如数据竞争、活锁、死锁)、并发工具类(如CountDownLatch、CyclicBarrier、Semaphore...
标题《into100沙龙第17期:高可用高并发网站解决之道-张立刚-***.pdf》和描述《高可用高并发电商核心交易系统应用架构演进及实践》表明本篇文档是一场沙龙的演讲稿或演讲材料,由张立刚主讲,主题聚焦于构建和优化高...
本文档探讨了使用Java实现高并发推送服务的技术和方法,重点分析了如何通过Java NIO(New I/O)技术、消息队列技术、缓存技术等多种手段提升推送服务的处理能力和性能。 首先,高并发推送服务的主要目的是为了向...
总的来说,并发测试调优文档旨在提供一个详细的指导,帮助测试人员有效地模拟并发用户负载,监控系统性能,并根据测试结果进行系统优化,确保软件在高并发情况下能够稳定、高效地运行。在实际操作中,测试人员需要...
本文档深入探讨了在设计能够处理高并发的互联网系统时,需要考虑的关键技术点和实践策略。 ## 互联网高并发架构设计的关键点 ### 服务器架构设计 首先,服务器架构的设计是支持高并发的基础。高性能的服务器集群...
在这一部分,作者可能深入探讨了如何使用eventlet这样的异步框架来处理网络请求,通过异步IO操作来提升并发性能,以及如何通过Python简洁的语法快速开发出高并发的网络应用。 总结来说,本文深入研究了不同类型的...
在本课程"计算机后端-Java-Java高并发从入门到面试教程-课程准备"中,我们将深入探讨Java编程语言在处理高并发场景下的核心概念和技术。Java是企业级应用开发的重要选择,尤其是在大型分布式系统中,其强大的并发...
在IT行业中,异步I/O(Asynchronous Input/Output)是一种高效的编程模型,特别是在处理高并发...通过深入学习和实践这个文档,开发者将能够熟练掌握在VC++中利用异步I/O和事件选择模型解决高并发服务器编程中的挑战。
【高并发原则】 在设计高并发系统时,首要原则是保持无状态性,这意味着系统中的每个请求处理完后不会保留任何上下文信息,这样就可以轻松地进行水平扩展,增加服务器来处理更多的并发请求。实现无状态的方式包括...
本教程主要聚焦于Java高并发编程,旨在帮助初学者快速掌握这一领域的核心概念,并为面试做好充分准备。我们将深入探讨以下几个关键知识点: 1. **线程基础**:理解线程的概念,包括如何创建线程、线程的状态(新建...
1. **系统性能**:通过模拟多个并发用户,我们可以测试服务器在处理大量请求时的响应速度和处理能力,评估系统在高并发场景下的性能瓶颈。 2. **稳定性**:长时间的高并发测试可以检测系统的稳定性和持久性,看是否...
在现代网络通信领域,Netty作为一款先进的网络编程框架,以其卓越的性能、稳定性和扩展性,成为了开发高并发网络应用的首选工具。传统的通用协议,如HTTP,虽能满足基本的网络通信需求,但在面对大规模数据传输、...
《网站项目软件文档编写教材说明》是一本专为IT专业人士准备的指南,旨在教授如何高效地撰写和组织软件项目的各种文档。这本书的核心内容是围绕着软件性能概述的编写,通过丰富的实例来阐述文档制作的关键技术和策略...
企业级增强特性是文档中的核心部分,涵盖了多集群统一管理、静默补丁、数据分布式存储、数据分区、数据并行导入、全并行的数据查询处理、向量化执行、行列混合引擎、工作负载管理、高可靠事务处理、多种部署形态、...
此外,压力测试和性能测试则关注系统在高并发情况下的表现,确保服务的稳定性和响应速度。 总之,移动开发接口文档项目是一个涉及到数据库设计、项目构建、接口实现、版本控制、测试等多个方面的工作,需要开发者...
本教程旨在帮助初学者理解并掌握Java高并发的相关知识,同时也为准备面试的开发者提供参考。我们将从基础概念出发,逐步深入到实战技巧,覆盖Java并发的核心知识点。 首先,我们需要了解Java并发的基础概念。这包括...
6. **性能要求**:规定了接口响应时间、并发处理能力等性能指标,保证系统在高负载下的稳定运行。 而《医疗保障信息平台定点医药机构接口接入说明-V1.3.docx》则着重于实际操作层面,为医药机构提供了接入医保系统...
### 知识点一:高并发秒杀系统的设计思路 #### 1.1 架构选择 - **架构概述**:对于高并发秒杀场景,采用`OpenResty + Redis`的技术栈是一种理想的选择。这是因为高并发场景下,传统的关系型数据库如MySQL往往成为...