`
j2eeli
  • 浏览: 45821 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

大型网站采用的具有稳定性的系统构架

阅读更多

千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性?

首先讨论一下大型网站需要注意和考虑的问题。

数据库海量数据处理:负载量不大的情况下select、delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。

高并发死锁:平时我们感觉不到,但数据库死锁在高并发的情况下的出现的概率是非常高的。

文件存储的问题:大型网站有海量图片数据、视频数据、文件数据等等,他们如何存储并被有效索引?高并发的情况下IO的瓶颈问题会迅速显现。也许用RAID和专用存贮服务器能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者新疆的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。

接下来讨论大型网站的底层系统架构,来有效的解决上述问题。

毋庸置疑,对于规模稍大的网站来说,其背后必然是一个服务器集群来提供网站服务,例如,2004年eBay的服务器有2400台,估计现在更多。当然,数据库也必然要和应用服务分开,有单独的数据库服务器集群。对于像淘宝网这样规模的网站而言,就是应用也分成很多组。

下面,就从服务器操作系统与Web服务器、数据库、服务器集群与负载均衡、缓存、独立的图片服务器、其它等几个方面来分析大型网站的系统架构。

服务器操作系统与Web服务器

最底层首先是操作系统。好的操作系统能提高好的性能、稳定性和安全性,而这些对大型网站的性能、安全性和稳定性都是至关重要的。

淘宝网(阿里巴巴): Linux操作系统 + Web 服务器: Apache

新浪:FreeBSD + Web 服务器:Apache

Yahoo:FreeBSD + Web 服务器:自己的

Google: 部分Linux + Web 服务器:自己的

百度:Linux + Web 服务器: Apache

网易:Linux + Web 服务器: Apache

eBay: Windows Server 2003/8 (大量) + Web 服务器:Microsoft IIS

MySpace: Windows Server 2003/8 + Web 服务器:Microsoft IIS

由此可见,开源操作系统做Web应用是首选已经是一个既定事实。在开源操作系统中Linux和FreeBSD差不太多,很难说哪个一定比另外一个要优秀很多、能够全面的超越对手,应该是各有所长。但熟悉Linux的技术人员更多些,利于系统管理、优化等,所以Linux使用更广泛。而Windows Server和IIS虽然有的网站使用,但不开源,而且需要购买微软的一系列应用产品,限制了其使用。总之,开源操作系统,尤其是Linux做Web应用是首选已经是一个既定事实。

常用的系统架构是:

Linux + Apache + PHP + MySQL

Linux + Apache + Java (WebSphere) + Oracle

Windows Server 2003/2008 + IIS + C#/ASP.NET + 数据库

数据库

因为是千万人同时访问的网站,所以一般是有很多个数据库同时工作的,说明白一点就是数据库集群和并发控制,数据分布到地理位置不同的数据中心,以免发生断电事故。

主流的数据库有Sun的是MySQL和Oracle。

Oracle是一款优秀的、广泛采用的商业数据库管理软件。有很强大的功能和安全性,可以处理相对海量的数据。而MySQL是一款非常优秀的开源数据库管理软件,非常适合用多台PC Server组成多点的存储节点阵列(这里我所指的不是MySQL自身提供的集群功能),每单位的数据存储成本也非常的低廉。用多台PC Server安装MySQL组成一个存储节点阵列,通过MySQL自身的Replication或者应用自身的处理,可以很好的保证容错(允许部分节点失效),保证应用的健壮性和可靠性。可以这么说,在关系数据库管理系统的选择上,可以考虑应用本身的情况来决定。

MySQL数据库服务器的master-slave模式,利用数据库服务器在主从服务器间进行同步,应用只把数据写到主服务器,而读数据时则根据负载选择一台从服务器或者主服务器来读取,将数据按不同策略划分到不同的服务器(组)上,分散数据库压力。

服务器集群与负载均衡

服务器群集中每个服务结点运行一个所需服务器程序的独立拷贝,而网络负载均衡则将工作负载在这些主机间进行分配。负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。它主要完成以下任务:解决网络拥塞问题,服务就近提供,实现地理位置无关性 ;为用户提供更好的访问质量;提高服务器响应速度;提高服务器及其他资源的利用效率;避免了网络关键部位出现单点失效。

常用的服务器集群和数据库集群负载均衡实现方法:

Citrix NetScaler的硬件负载均衡交换机做服务器集群的负载均衡。

MySQL Proxy做MySQL服务器集群的负载均衡并实现读写分离。其实现读写分离的基本原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。

CDN (Content Delivery Network): 几乎在各大网站都有使用该技术。例如,使得你的网站在各省市访问更快,其原理是采取了分布式网络缓存结构(即国际上流行的web cache技术),通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的cache服务器内,通过DNS负载均衡的技术,判断用户来源就近访问cache服务器取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度,如同提供了多个分布在各地的加速器,以达到快速、可冗余的为多个网站加速的目的。

缓存

众所周知,使用缓存能有效应对大负载,减少数据库的压力,并显著提高多层应用程序的性能,但如何在集群环境中使多个缓存、多层缓存并保存同步是个重大问题。大型网站一般都使用缓存服务器群,并使用多层缓存。业内最常用的有:

Squid cache,Squid服务器群,把它作为web服务器端前置cache服务器缓存相关请求来提高web服务器速度。Squid将大部分静态资源(图片,js,css等)缓存起来,直接返回给访问者,减少应用服务器的负载

memcache,memcache服务器群,一款分布式缓存产品,很多大型网站在应用; 它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。

e-Accelerator,比较特殊,PHP的缓存和加速器。是一个免费开源的PHP加速、优化、编译和动态缓存的项目,它可以通过缓存PHP代码编译后的结果来提高PHP脚本的性能,使得一向很复杂和离我们很远的 PHP脚本编译问题完全得到解决。通过使用eAccelerator,可以优化你的PHP代码执行速度,降低服务器负载,可以提高PHP应用执行速度最高达10倍。

独立的图片服务器

无论从管理上,还是从性能上看,只要有可能,尽量部署独立的图片服务器。这几乎成为常识了。具备独立的图片服务器或者服务器集群后,在 Web 服务器上就可以有针对性的进行配置优化。

其他

一个互联网应用,除了服务器的操作系统,Web Server软件,应用服务器软件,数据库软件外,我们还会涉及到一些其他的系统,比如一些中间件系统、文件存储系统(图片服务器,视频服务器,管理服务器,RSS和广告服务器等等)、全文检索、搜索、等等。会在以后介绍。

分享到:
评论
2 楼 jerrybeckf 2010-04-20  
学习了~~~
1 楼 fxsc 2010-03-26  
eBay 是在用windows server吗,不是早期php,后期linux+JavaEE吗

相关推荐

    大型互联网广告应用系统架构

    在大型互联网广告应用中,面对每天数以亿计的API调用请求,如何保障系统的稳定性和响应速度至关重要。以下是一些关键技术点: - **Tengine/Nginx**:作为反向代理服务器,能够提供高效的HTTP缓存、负载均衡等功能,...

    大型分布式网站架构设计与实践.rar

    总的来说,《大型分布式网站架构设计与实践》是一本全面解析分布式系统设计的宝典,它不仅介绍了各种核心技术,还分享了实际项目中的经验教训,对于想要提升分布式架构设计能力的IT从业者来说,具有极高的参考价值。...

    高并发高负载大型网站系统架构

    这种系统架构必须具备高安全性、高稳定性、高并发处理能力和高负载承受能力,以应对如淘宝等大型电商平台所面临的海量数据和用户流量。 在硬件层面,为应对高并发高负载,首先可以选择高性能的硬件设施,包括多核、...

    大型网站技术架构核心原理与案例分析.pdf

    大型网站技术架构是指为满足大型网站高性能、高可用性、可伸缩性、安全性、快速迭代和低成本等需求,所采用的一系列技术解决方案和策略的集合。为了深入理解大型网站技术架构的核心原理,我们可以从以下几个方面展开...

    说说大型高并发高负载网站的系统架构.txt

    ### 大型高并发高负载网站的系统架构 随着互联网技术的发展与普及,越来越多的大型网站如门户网站等面临着巨大的挑战,特别是在处理高并发请求时。本文将深入探讨这些大型网站如何通过采用一系列技术和策略来应对高...

    大型分布式网站架构设计与实践.pdf

    2. **增强系统可靠性**:分布式架构可以通过冗余备份机制实现故障转移,提高系统的稳定性和可靠性。 3. **扩展性**:当业务量增加时,可以通过增加新的服务器节点轻松扩展系统容量。 4. **负载均衡**:合理分配请求...

    超大型电商系统架构解密

    分布式架构让1号店能够有效地处理高并发的请求,保证了系统的稳定性和可靠性。 Hedwig作为1号店平台的核心中间件,其重要性不言而喻。Hedwig主要由RPC框架、异步消息平台和服务治理平台组成。其完全分布式架构的...

    大型机操作系统

    此外,大型机操作系统强调安全性与稳定性,以满足企业级业务需求。 二、大型机操作系统的特点 1. 高性能:大型机操作系统能够处理极高的数据吞吐量,支持复杂的数据分析和事务处理。 2. 可靠性:具备高度的故障...

    大型网站系统与java中间件实践 pdf下载 高清完整版

    ### 大型网站系统与Java中间件实践 #### 一、大型网站系统概述 大型网站系统是指能够支撑千万甚至上亿级用户同时在线访问的互联网应用系统。这类系统的构建不仅需要考虑高性能、高并发处理能力,还要具备良好的...

    [网盘]大型网站系统与java中间件实践 pdf下载 高清完整版

    大型网站系统是指那些具有海量用户访问量、复杂业务逻辑以及高性能需求的互联网应用程序。这类系统通常具备以下几个特征: - **高并发性**:每天可能面临成千上万甚至更多的用户同时在线访问。 - **海量数据处理**...

    大型网站分布式架构高并发高可用可扩展技术

    总结,大型网站的分布式架构通过合理的设计和实施,可以有效应对高并发挑战,确保系统的高可用性,并具备良好的扩展性。这些技术涵盖了从基础架构到应用层面的多个方面,包括但不限于服务的模块化、负载均衡、缓存...

    大型网站技术架构:核心原理与案例分析-李智慧.pdf

    4. **微服务架构**:为了提高开发效率和系统可扩展性,微服务架构成为现代大型网站的首选。书中可能涵盖服务拆分原则、API Gateway、服务注册与发现、熔断和降级策略等内容。 5. **消息队列**:MQ(Message Queue)...

    某中大型网站系统架构--实战案例研究.pdf

    一个优秀的网站架构设计不仅要能够确保服务的稳定性和高可用性,还需要在预算有限时具有良好的可扩展性和成本效益。以下是对这个实战案例研究中的关键知识点的详细说明: 1. **冗余性**:在网站架构设计中,冗余是...

    大型高并发高负载网站的系统架构

    以上这些技术和策略的综合运用,可以帮助大型高并发高负载网站应对复杂的挑战,构建出稳定、快速且易于扩展的系统架构。在实际操作中,需要根据网站的具体业务需求和资源条件,灵活选择和组合这些技术,才能达到最优...

    大型高并发高负载网站的系统架构.pdf

    【大型高并发高负载网站的系统架构】 ...在设计系统架构时,不仅需要关注技术选型,还需要考虑系统的可扩展性、容错性和维护性,确保在应对高并发、高负载的同时,也能保证系统的稳定性和用户体验。

    高并发网站系统架构的解决方案

    本文旨在深入探讨如何构建能够应对大规模并发请求的网站系统架构,从多个维度出发,提供一套实用性强、易于理解和实践的解决方案。 #### 一、HTML静态化 在众多提升网站性能的技术手段中,**HTML静态化**是最为...

    大型门户网站架构设计

    通过采用服务器分离、缓存技术、集群、负载均衡和CDN等多种技术和方法,不仅可以有效提升系统的性能和稳定性,还能为用户提供更佳的服务体验。对于大型门户网站而言,这些高级架构组件和技术的选择和组合至关重要。

    大型超市销售连锁管理系统(三层架构) Delphi源码

    《大型超市销售连锁管理系统(三层架构) Delphi源码》是一个专为大型超市设计的高效、稳定且可扩展的管理软件。系统采用先进的三层架构设计,即表现层、业务逻辑层和数据访问层,旨在提高系统的灵活性、可维护性和可...

    收集的大型网站架构实例

    运维监控对于确保系统的稳定性和性能至关重要,它允许团队实时了解系统状态,并及时发现和解决问题。 3. **Flickr的服务器架构** Flickr的架构设计由前架构师Cal Henderson详细阐述。Flickr重视LAMP(Linux、...

Global site tag (gtag.js) - Google Analytics