大型网站架构系列笔记(一)——大型网站架构演化


——本文结合《大型网站技术架构》(李智慧著)一书,与自身经验撰写,仅做学习使用。如有侵权,请联系本人。

大型网站架构演化

  • 本节是《大型网站技术架构》笔记第一节,主要介绍大型网站软件技术特点、发展历程、设计思想等。
  • 随着互联网技术的不断发展,互联网技术不断渗透进人们生活的各个角落,但在互联网火热的背后隐藏着大量的问题,并反推着技术的快速更新。如何实现高并发性、安全性、高可用性、易扩展性、可升缩性等,成为了众多企业最关心的指标。

1.大型网站软件系统特点

大型网站或应用系统有以下特点:

  1. 高并发,大流量: 需要面对大量用户同时访问造成的搞并发、大流量。
  2. 高可用: 需要实现7*24小时不间断的服务,不能发生宕机事件,且在系统升级维护时需要实现业务层面无感知。
  3. 海量数据: 需要存储、管理海量的数据,设计到大量数据服务器。
  4. 用户分布广泛,网络情况复杂: 许多大型网站都为全球用户提供服务,由于用户分布广泛,网络情况天差地别,故一些大型网站在各地建立数据中心。
  5. 安全环境: 由于互联网具有很强的开放性,使得互联网站更容易受到攻击,安全问题不容忽视。
  6. 需求变更快,发布周期短: 互联网产品为了快速适应市场,满足用户需求,紧跟热点,通常具有较高的发布频率。
  7. 渐进式发展: 互联网产品通常不是从一开始就具有全部功能的,绝大多数的大型互联网站都是从一个小网站开始渐进式发展起来的,如阿里巴巴、Google、Facebook等。绝大部分功能都是随着产品的发展与运营慢慢增加的,这正好与网站架构的发展演化过程相对应。

2.大型网站架构发展历程

2.1最简单的网站架构

网站一般分为应用服务器、文件服务器、数据库服务器三部分,在实际的使用过程中,三种服务器的配置侧重各不相同:

  • 应用服务器侧重于更强的运算能力;
  • 文件服务器侧重于更大的硬盘;
  • 数据库服务器侧重于更快的读写速度。

但在最开始的阶段,网站一般没有什么访问量、也不会面临攻击等问题,所以通常对上述三类服务器没有明显的划分,甚至都集中在一台服务器上,且只需要最简单的配置即可。

  • LWIP: 我所接触过的最简单的是LWIP,它是一个小型、开源的TCP/IP协议栈,甚至能部署在单片机上。
    在这里插入图片描述
  • BOA: 稍微大一点的是以BOA服务器为代表的嵌入式服务器,通常搭建在嵌入式开发板上,系统为linux,通过CGI与H5程序搭建简单的网站。在嵌入式BOA服务器上,甚至可以不存在数据库服务器,由于数据量较少,更多采用数据文件保存相应的数据。
    在这里插入图片描述
  • Apache与MySQL: 常用的初始阶段的网站通常采用PHP开发应用程序,由于PHP是一种可以嵌入HTML的脚本语言,可以很好的部署于Apache上。使用MySQL作为数据库,由于MySQL是关系型数据库,所以它允许多人同时在线操作,所有操作均基于SQL语句实现,开发人员可通过Navicat实时操作数据库。MySQL底层采用C,C++编写,为多种编程语言提供了API接口。同时几乎支持所有主流的操作系统,支持多线程操作,使得CPU资源可以得到充分的利用,并提高数据的读写速度。

2.2提高网站性能基本操作

  • 将应用服务器与数据服务器分离
    将三种服务器在物理上分离,各司其职,改善网站的并发处理能力和数据存储能力。
  • 使用缓存
    根据网站访问特点,80%的访问量集中在20%的用户上,可以采用缓存服务器缓存核心用户的数据,改善网站访问速度。
  • 使用应用服务器集群
    随着网站的不断发展,如何解决用户访问的高并发与海量数据的处理成为了亟待解决的问题,使用应用服务器集群可以很好的解决这一问题,当一台服务器在处理能力与存储空间维度无法满足日益增长的业务需求时,增加一台或者多台服务器甚至组件应用服务器集群分担压力是最好的做法。
  • 分离数据库读写功能
    当网站用户数量达到一定规模后,缓存不能覆盖的一部分读操作与全部的写操作都需要访问数据库。此时将数据库读写功能分离,配置主从两台数据库,写操作时写入主数据库,主数据库通过主从复制机制将数据同步到从数据库,读操作时,只需要访问从数据库即可,以此缓解数据库负载压力。

2.3进一步提高网站性能

  • 使用反向代理与CDN加速
    随着网站规模越来越大,用户数量也越来越多,用户的分布也越来越广,用户的网络环境也天差地别。依靠上述的方法已经不足以提供完美的用户体验,可以使用CDN加速与反向代理等手段进行优化。
    CDN与反向代理都是基于缓存的技术手段,CDN部署于网络提供商的机房,用户请求数据时,可以从距离最近的网络提供商的机房中获取数据。而反向代理部署与中心机房,收到用户请求时,首先访问反向代理服务器,若反向代理服务器中有相关缓存,直接返回给用户。加快了用户访问速度,提升了用户体验。
  • 业务拆分与分布式系统
    当业务量增大到一定程度,单表数据规模非常庞大时,考虑使用按照业务分库,将不同业务的数据部署在不同的物理服务器上,实现分布式数据库与文件系统。同时当系统越来越复杂、功能越来越多时,可以将应用服务器按照业务拆分开,形成子系统独立部署运维,首页上与子应用间通过超链接关系进行跳转。

3.大型网站发展思路与价值观

  • 业务驱动
    大型网站的建设从来不是一蹴而就的,而是随着网站业务需求的不断发展一步一步反推技术的演化、更新的。在更新的过程中慢慢将一个只有一台服务器,并发量几十、几百的小网站进化为上万台服务器,上亿用户的大型网站。目前我们看到的百度、阿里、腾讯都是沿着这条路线发展的。
  • 技术是一种手段,不是目的
    技术是在解决不断增长的业务量导致的问题中的一种手段,不能为了技术而技术,方案选择应紧密围绕着实际业务的需求进行。否则技术变成了镜中花、水中月。同时,技术是一种解决问题的工具,但不是全部,不能过分依赖技术,有时当技术解决不了问题时,调整一下业务逻辑,也许就会有新的发现与收获。

4.云平台在网站建设中的作用

中小网站需要构建自己的网站架构是一个比较麻烦的事情,对于很多小型网站来说,其实无需自己搭建的网站架构、一步一步去演化更新。选择一个靠谱的云平台就可以解决所有的问题,不仅节约了硬件成本、运维成本,还缩短了开发周期,甚至在安全性与灾备等方面都有了最强有力的保证。尤其是使用云平台的便捷性是无与伦比的,所有的计算、存储、网络、数据库、安全及CDN加速都可以按需租用,弹性伸缩,所使用的资源随着业务量需求的变化灵活变化。也无需再关心技术架构的问题,只需要按需调整租用的资源即可,为今后网站的不断发展提供了更大的空间与更便捷的开发方式。
下面是中国电信集团天翼云产品链接与四川电信云产品链接,提供了大量的相关云产品及相关资源,以备各位不时之需。
天翼云:www.ctyun.cn
四川天翼云,云锦天府官网:www.sctyun.cn

猜你喜欢

转载自blog.csdn.net/qq_38470434/article/details/105981959