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

常见的网站架构分析

 
阅读更多
1. 初始阶段的网站架构

一般来讲,大型网站都是从小型网站发展而来,一开始的架构都比较简单,随着业务复杂和用户量的激增,才开始做很多架构上的改进。当它还是小型网站的时候,没有太多访客,一般来讲只需要一台服务器就够了,这时应用程序、数据库、文件等所有资源都在一台服务器上,网站架构如下图所示:



2. 应用服务和数据服务分离


随着网站业务的发展和用户量的增加,一台服务器就无法再满足需求了。大量用户访问导致访问速度越来越慢,而逐渐增加的数据也会导致存储空间不足。这时就需要将应用和数据分离,应用和数据分离后整个网站使用 3 台服务器:应用服务器、文件服务器和数据库服务器。这 3 台服务器对硬件资源的要求各不相同:

  • 应用服务器业务逻辑,需要强大的CPU
  • 数据库服务器对磁盘读写操作很多,需要更快的磁盘和更大的内存
  • 文件服务器存储用户上传的文件,因此需要更大的磁盘空间

此时,网站系统的架构如下图所示:




3. 使用缓存改善网站性能

随着用户再增加,网站又会一次面临挑战:数据库压力太大导致整站访问效率再此下降,用户体验受到影响。一个网站,往往 80% 的业务访问集中在 20% 的数据上,比如微博请求量最多的肯定是那些千万级粉丝的大 V 的微博,而几乎没有人关注的你的首页,除了自己想起来之外根本不会被打开。既然大部分业务访问集中在一小部分数据上,那就把这一小部分数据先提前缓存在内存中,而不是每次都去数据库读取,这样就可以减少数据库的访问压力,从而提高整个网站的访问速度。

网站使用的缓存一般分为缓存到应用服务器或者缓存在专门的分布式缓存服务器。缓存到应用服务器自己的访问速度快很多,但是受自身内存限制,往往不太适用。远程分布式缓存使用一个集群专门负责缓存服务,当内存不够还可以轻松得动态扩容。




4. 使用应用服务器集群改善网站的并发处理能力

使用缓存后,数据访问压力得到了缓解,但是单一应用服务器能够处理的请求连接有限,在网站访问高峰期,应用服务器就成了整个网站的效率瓶颈。使用分布式集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力和存储空间不足时,不要尝试去更换更强大的服务器,对大型网站而言,多么强大的服务器,都满足不了网站持续增长的业务需求。这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。 对网站架构而言,只要能通过增加一台服务器的方式改善负载压力,就可以以同样的方式持续增加服务器不断改善系统性能,从而实现系统的可伸缩性。应用服务器实现集群是网站可伸缩架构设计中较为简单成熟的一种,如下图所示:



通过负载均衡调度服务器,可以将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多用户,就在集群中加入更多的应用服务器,使应用服务器的压力不再成为整个网站的瓶颈。




5. 数据库读写分离

网站在使用缓存后,使对大部分数据读操作访问都可以不通过数据库就能完成,但是仍有一部分读操作(缓存访问不命中、缓存过期)和全部的写操作都需要访问数据库,在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。 目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力。如下图所示:

应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务器读数据的时候,就可以通过从数据库获得数据。为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明。




6. 使用反向代理和 CDN 加速网站响应

随着网站业务不断发展,用户规模越来越大,由于中国复杂的网络环境,不同地区的用户访问网站时,速度差别也极大。有研究表明,网站访问延迟和用户流失率正相关,网站访问越慢,用户越容易失去耐心而离开。为了提供更好的用户体验,留住用户,网站需要加速网站访问速度。主要手段有使用 CDN 和反向代理。如下图所示:




7. 使用分布式文件系统和分布式数据库系统


任何强大的单一服务器都满足不了大型网站持续增长的业务需求。数据库经过读写分离后,从一台服务器拆分成两台服务器,但是随着网站业务的发展依然不能满足需求,这时需要使用分布式数据库。文件系统也一样,需要使用分布式文件系统。如下图所示:


分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用。不到不得已时,网站更常用的数据库拆分手段是业务分库,将不同业务的数据部署在不同的物理服务器上。




8. 使用 NoSQL 和搜索引擎

随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如 NoSQL 和非数据库查询技术如搜索引擎。如下图所示:


NoSQL 和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。




9. 业务拆分

大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线。如大型购物交易网站都会将首页、商铺、订单、买家、卖家等拆分成不同的产品线,分归不同的业务团队负责。

具体到技术上,也会根据产品线划分,将一个网站拆分成许多不同的应用,每个应用独立部署。应用之间可以通过一个超链接建立关系(在首页上的导航链接每个都指向不同的应用地址),也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据存储系统来构成一个关联的完整系统,如下图所示:


10. 分布式服务

随着业务拆分越来越小,存储系统越来越庞大,应用系统的整体复杂度呈指数级增加,部署维护越来越困难。由于所有应用要和所有数据库系统连接,在数万台服务器规模的网站中,这些连接的数目是服务器规模的平方,导致数据库连接资源不足,拒绝服务。

既然每一个应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些共用的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。如下图所示:




大型网站的架构演化到这里,基本上大多数的技术问题都可以得以解决了。

分享到:
评论

相关推荐

    国内某知名网站架构分析

    在这个主题中,我们将深入探讨国内某知名网站的架构分析,这将涉及到多个层面的技术和策略。 首先,我们要理解网站架构的基本组成部分,包括前端、后端和数据库。前端是用户与网站交互的部分,主要由HTML、CSS和...

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

    《大型网站技术架构核心原理与案例分析》这本书深入探讨了构建和优化大型网站所需的关键技术和实践,对于希望成为或已经是架构师的专业人士来说,是一本不可或缺的参考书。书中不仅涵盖了理论知识,还通过实际案例...

    [高清]大型网站技术架构 核心原理与案例分析+李智慧.pdf

    《大型网站技术架构:核心原理与案例分析》是李智慧所著的一本关于构建和优化大规模网站架构的重要著作。这本书深入浅出地介绍了大型网站在应对高并发、大数据量、高可用性等挑战时所采用的技术策略和实践经验,是IT...

    大型分布式网站架构设计与实践.带目录书签.完整版 陈康贤

    《大型分布式网站架构设计与实践》主要介绍了大型分布式网站架构所涉及的一些技术细节,包括SOA架构的实现、互联网安全架构、构建分布式网站所依赖的基础设施、系统稳定性保障和海量数据分析等内容;深入地讲述了...

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

    大型分布式网站架构设计与实践.pdf <br/>《大型分布式网站架构设计与实践》主要介绍了大型分布式网站架构所涉及的一些技术细节,包括...架构、构建分布式网站所依赖的基础设施、系统稳定性保障和海量数据分析等内容...

    大数据平台架构设计、大型web网站架构分析、著名金融集团系统详细设计方案文档集合..rar.rar

    在IT行业中,大数据平台架构设计、大型Web网站架构分析以及著名金融集团的系统详细设计方案是至关重要的领域。这些文档集合提供了深入理解如何构建、优化和维护复杂IT系统的宝贵资源。以下将详细介绍这些关键知识点...

    Oracle RAC数据库架构分析与实战攻略

    ### Oracle RAC数据库架构分析与实战攻略 #### 9.1 设计高可用性架构 在设计高可用性架构时,通常需要考虑多种技术和产品,以确保系统的稳定性和连续性。其中,Oracle RAC(Real Application Clusters)是业界领先...

    大型网站技术架构分析

    在开发框架的选择上,多层设计已经成为一种常见的架构模式,这种模式将业务逻辑、数据访问、服务接口等分离,有助于提高系统的可管理性和可扩展性。同时,开发框架的选择也需要考虑到是否支持系统的多层设计和业务的...

    大型网站架构资源集合

    9. **各大型网站架构分析.mht**:对不同知名网站的架构进行案例研究,分析它们如何解决特定的技术挑战,为读者提供了实际应用的参考。 10. **大型高并发高负载网站系统架构.mht**:对于处理高并发请求的网站,需要...

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

    《大型分布式网站架构设计与实践》主要介绍了大型分布式网站架构所涉及的一些技术细节,包括SOA架构的实现、互联网安全架构、构建分布式网站所依赖的基础设施、系统稳定性保障和海量数据分析等内容;深入地讲述了...

    大型分布式网站架构设计与实践.带目录书签.完整版.pdf

    《大型分布式网站架构设计与实践》主要介绍了大型分布式网站架构所涉及的一些技术细节,包括SOA架构的实现、互联网安全架构、构建分布式网站所依赖的基础设施、系统稳定性保障和海量数据分析等内容;深入地讲述了...

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

    《大型网站技术架构:核心原理与案例分析》是李智慧架构师的一本著作,它针对初入架构领域的读者,提供了一条系统学习架构知识的路径。本书深入浅出地介绍了构建大规模网站所需的关键技术和实践经验,旨在帮助读者...

    大型WEB网站架构深入分析.pdf

    综合来看,大型WEB网站的架构分析涉及众多技术点,包括但不限于HTML静态化、图片服务器分离、数据库集群与库表散列、缓存技术、镜像技术和负载均衡等。这些技术的综合应用能够显著提高大型网站的性能和稳定性。

    J2EE常见的四种架构类型

    本文将详细介绍J2EE常见的四种架构类型,并对每种架构的特点和应用场景进行深入分析。 #### 架构类型一:单一JVM中的Web层与业务逻辑层 在这种架构中,用户界面(User Interface, UI)层和中间件(Middle Tier)层...

    5架构分析1

    《5架构分析1》 在软件开发过程中,架构分析是一个至关重要的阶段,它为整个项目的成功奠定了基础。本文将深入探讨架构分析的核心概念、方法和重要性,旨在帮助读者理解和应用对象导向分析与设计(OOAD)以及统一...

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

    《大型网站技术架构:核心原理与案例分析》是由知名IT专家李智慧编著的一本深入探讨大型网站构建和优化的专业书籍。这本书旨在帮助读者理解并掌握构建高效、可扩展、高可用的大型网站所需的关键技术和策略。 在大型...

Global site tag (gtag.js) - Google Analytics