教程由JAVA中文网整理校对发布(javaweb.cc)
千万级的注册用户,千万级的帖子,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和广告服务器等等)、全文检索、搜索、等等。会在以后介绍。
大型网站采用什么系统架构保证性能稳定性(本教程仅供研究和学习,不代表JAVA中文网观点)
本篇文章链接地址:http://www.javaweb.cc/internet/website/25816.shtml
如需转载请注明出自JAVA中文网:http://www.javaweb.cc/
本篇文章来自Java中文网:http://www.javaweb.cc/internet/website/25816.shtml
分享到:
相关推荐
总之,《大型网站技术架构演进与性能优化》一书揭示了互联网行业中大型网站如何从简单架构逐步演进到复杂的分布式体系,以及如何通过各种优化手段提高系统性能和用户体验。对于从事互联网行业的开发者和技术管理者来...
在大型网站的技术架构中,我们首先要理解的是“分层架构”,这种架构模式将复杂系统划分为若干个独立的层次,如表现层、业务逻辑层、数据访问层等,以提高代码的可维护性和可扩展性。Java作为一种广泛应用于服务器端...
大型网站架构-高性能网站架构 在大型网站架构设计中,选择合适的操作系统、Web 服务器、数据库和脚本语言是至关重要的。以下是对大型网站架构的详细分析: 选择高性能 OS 在选择操作系统时,我们需要考虑多个因素...
它不仅需要处理大量的并发访问,还要保证数据的高效传输和系统的稳定性。以下将详细阐述大型门户网站系统架构的关键知识点: 1. **高并发处理**:大型门户网站必须能够处理成千上万的并发用户请求。这通常通过采用...
在处理大量数据的过程中,选择合适的数据存储方案是保证系统高效运行的基础。该广告系统采用了多种存储技术来满足不同的需求: - **Oracle**:作为核心广告数据的存储介质,负责存储广告相关的元数据和业务数据。 -...
- **可靠性要求高:**对系统稳定性和安全性有极高要求。 - **扩展性需求强:**能够适应业务增长和技术变革的需求。 **2. 架构设计原则** - **分层架构:**将系统划分为不同的层次,如表示层、业务逻辑层和数据访问...
【大型网站动态应用系统架构】是指使用诸如C/C++、PHP、Java、Perl...总结来说,大型网站动态应用系统架构通过优化各个子系统,实现了高性能、高可用性和可扩展性的目标,确保了大型网站在面对高并发访问时的稳定运行。
《大型分布式网站架构设计与实践》主要介绍了大型分布式网站架构所涉及的一些技术细节,包括SOA架构的实现、互联网安全架构、构建分布式网站所依赖的基础设施、系统稳定性保障和海量数据分析等内容;深入地讲述了...
数据库的选择和设计对系统的性能和稳定性有着深远的影响。根据不同的应用需求,可以选择关系型数据库管理系统(如MySQL、PostgreSQL)或非关系型数据库(如MongoDB、Redis)。 服务器是运行应用逻辑和业务代码的...
这两本书——《大型网站技术架构:核心原理与案例分析》和《亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统》提供了宝贵的指导,帮助我们构建稳定、高效且可扩展的系统。 首先,我们要讨论的是高并发处理...
Java大型架构设计主要涵盖的是构建高可用、高性能、可扩展的分布式系统的技术和实践,这在互联网行业中至关重要。三本书分别关注大型分布式网站架构设计、大型网站系统与Java中间件的实践以及分布式Java应用的基础与...
10. **大型高并发高负载网站系统架构.mht**:对于处理高并发请求的网站,需要特殊的设计来确保稳定性和性能。此文件可能涵盖了如缓存策略、数据库优化、异步处理和消息队列等技术。 通过学习这个资源集合,开发者和...
此外,采用分布式服务治理框架如Dubbo或Spring Cloud,实现服务注册与发现、熔断和降级策略,提升系统的整体稳定性。 2. **可扩展性**:随着业务的增长,系统需要具备水平扩展的能力。这可能涉及到微服务架构,将...
这类书籍通常会深入探讨如何构建能够处理海量用户访问、高并发请求的系统,以及如何通过合理的技术架构来保障系统的稳定性和可扩展性。 在描述中提到的“结合实例全面解析”,意味着这些书籍将理论知识与实际案例相...
综合来看,大型网站动态应用系统架构的设计旨在通过合理的组件组合和优化,以应对高并发访问、海量数据处理和系统复杂性的挑战。各个子系统的协同工作,构建出一个可靠、安全、可扩展且易于维护的平台,是保证大型...
这本书深入浅出地介绍了大型网站在应对高并发、大数据量、高可用性等挑战时所采用的技术策略和实践经验,是IT行业中尤其是互联网开发者和架构师的重要参考资料。 首先,书中详细讲解了网站架构的基础知识,包括软件...