天猫网站内容架构分析(1.初始阶段的网站架构如下图,你了解多少?)

优采云 发布时间: 2022-02-16 12:33

  天猫网站内容架构分析(1.初始阶段的网站架构如下图,你了解多少?)

  1. 初始阶段 网站 架构

  一般来说,*敏*感*词*的网站是从小规模的网站发展而来的,一开始架构比较简单。随着业务复杂性和用户量的增加,已经进行了许多架构改进。小的时候网站,访客不多,一般一台服务器就够了。此时应用、数据库、文件等所有资源都在一台服务器上,网站架构如下图所示:

  

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

  随着网站业务的发展和用户数量的增加,一台服务器已经不能满足需求。大量的用户访问导致访问速度越来越慢,数据的逐渐增加也会导致存储空间不足。这时候就需要把应用和数据分开。应用和数据分离后,整个网站使用了三个服务器:应用服务器、文件服务器和数据库服务器。三台服务器有不同的硬件资源要求:

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

  

  3. 使用缓存提高网站 性能

  随着用户数量的增加,网站将再次面临挑战:数据库压力过大会导致整个站点的访问效率再次下降,影响用户体验。一个网站,往往80%的业务访问都集中在20%的数据上。比如,请求最多的微博,肯定是那些拥有百万粉丝的大V的微博,还有你的,几乎没人关注。主页根本不会打开,除非你想到它。由于大部分业务访问都集中在一小部分数据上,所以这小部分数据应该提前缓存在内存中,而不是每次都去数据库读取,这样可以减轻数据库的访问压力并提高 网站 的整体访问速度。

  网站使用的缓存一般分为缓存到应用服务器或者缓存到专用的分布式缓存服务器。缓存对应用服务器本身的访问速度要快很多,但由于自身内存的限制,往往不适用。远程分布式缓存使用缓存服务专用的集群,在内存不够的情况下可以轻松动态扩展。

  

  4. 使用应用服务器集群提高网站 并发性

  使用缓存后,数据访问压力得到缓解,但单个应用服务器所能处理的请求连接受到限制。在网站的访问高峰期,应用服务器成为整个网站的效率瓶颈。使用分布式集群是网站解决高并发和海量数据问题的常用方法。当服务器处理能力和存储空间不足时,不要尝试更换更强大的服务器。对于大型网站来说,再强大的服务器也无法满足网站日益增长的业务需求。. 在这种情况下,增加一台服务器来分担原服务器的访问和存储压力更为合适。对于网站架构,只要增加一台服务器可以提高负载压力,可以以同样的方式不断增加服务器,不断提高系统性能,从而实现系统的可扩展性。应用服务器实现集群是网站可扩展架构设计中比较简单成熟的一种形式,如下图所示:

  

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

  5. 数据库读写分离

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

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

  

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

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

  

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

  没有一台强大的服务器可以满足大型网站 不断增长的业务的需求。数据库读写分离后,从一台服务器拆分为两台服务器。但是随着网站业务的发展,还是不能满足需求。这时候就需要使用分布式数据库了。文件系统也是如此,它需要使用分布式文件系统。如下所示:

  

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

  8. 使用 NoSQL 和搜索引擎

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

  

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

  9. 业务拆分

  大网站为了应对日益复杂的业务场景,整个网站业务通过分而治之的方式划分为不同的产品线。比如一个大型的购物交易网站会将首页、店铺、订单、买家、卖家等拆分成不同的产品线,分配给不同的业务团队。

  在技​​术上,一个网站会根据产品线拆分成很多不同的应用,每个应用独立部署。应用程序之间可以通过超链接建立关系(主页上的导航链接每个指向不同的应用程序地址),也可以通过消息队列分发数据。当然,它们大多是通过访问同一个数据存储系统而形成的。相关的完整系统如下图所示:

  

  10. 分布式服务

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

  由于每个应用系统都需要执行许多相同的业务操作,例如用户管理、商品管理等,这些共享服务可以独立提取和部署。这些可复用的服务与数据库相连,提供通用的业务服务,而应用系统只需要管理用户界面,通过分布式服务调用通用的业务服务,即可完成具体的业务操作。如下所示:

  

  大网站的架构到这里进化了,基本可以解决大部分技术问题。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线