高并发架构 第一章大型网站数据演化——核心解释与说明。大型网站技术架构——核心原理与案例分析
创始人
2024-05-26 08:33:08
0
  1. 大型网站架构烟花发展历程

      • 1.1.1初始阶段的网站构架
      • 1.1.2应用服务和数据服务分离
      • 1.1.3使用缓存改善网络性能
      • 1.1.4使用应用服务器集群改善网站的并发处理能力
      • 1.1.5数据库读写分离
      • 1.1.6使用反向代理和cdn加速网站相应
  • 1.1.1初始阶段的网站构架

  • 大型网站都是由小型网站一步步发展而来,网站构架也是一样,也是从小型网站构架逐步演化而来的。一开始写网站都是从一台服务器开始,应用程序、数据库、文件等所有资源都在一台服务器上。通常服务器操作系统用Linux,应用程序使用PHP,部署在apache上,数据库使用MySQL,汇聚各种免得的开源软件就开始网站的发展之路了。

  • 初始阶段的网站架构

  • 1.1.2应用服务和数据服务分离

  • 随着网站业务的发展,一台服务器逐渐不能满足需求:越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。这时就需要将应用和数据 分离。应用和数据分离后整个网站使用三台服务器:应用服务器、文件服务器、文件服务器和数据库服务器,这三台服务器对硬件资源的要求各不相同,应用服务器需要处理大量的业务逻辑,因此需要更快更强大的CPU;数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存;文件服务器需要存储大量用户上传的文件因此需要更大的硬盘。

  • 应用服务和数据服务的分离

  • 应用和数据分离后,不同特性的服务器承担不同的服务角色,网站的并发处理能力和数据存储空间得到了很大的改善,支持网站业务进一步发展,但是随着用户逐渐增多,网站有一次面临挑战:数据库压力太大导致访问延迟,进而影响整个网站的性能,用户体验收到影响。这是需要对网站进行下一步优化。

  • 1.1.3使用缓存改善网络性能

  • 一般网站使用的缓存可以分为两种:存储再应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。本地缓存的访问速度更快一些,但是受应用服务器内存限制,其缓存数据量有限,而且会出现和应用程序争用内存的情况。远程分布式缓存可以使用集群的方式,部署大内存的服务器作为专门缓存服务器,可以再理论上左到捕兽内存容量限制的缓存服务。

  • 缓存改善网站性能的示意图

  • 分布式缓存的作用?

  • 使用缓存后,数据库访问压力得到有效缓解。

  • 但是单一应用服务器能过够处理的请求连接有限,在网站访问高峰期,应用服务器成为整个网站的瓶颈。

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

  • 使用集群是网站解决高并发海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时,不要尝试去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求。而更好的办法是增加一台服务分担袁勇服务器的访问及存储压力。

  • 对网站架构而言只要通过增加一台服务器的方式改善负载压力,就可以 以同样的方式持续增加服务器不断改善系统性能,从而实现系统的可伸缩性。应用服务器实现集群是网站可伸缩集群架构设计中较为简单成熟的一种

  • 负载均衡应用服务器集群部署

  • 负载均衡是为了做什么?

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

  • 1.1.5数据库读写分离

  • 使用网站缓存后使绝大部分数据 读操作访问都可以不通过数据库就可以完成,但是仍有一部分 读操作比如缓存访问不命中/缓存过期。或者全部的 写操作需要访问数据库,在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。

  • 目前大部分的主流数据库都提供主从热备功能,就是通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。而网站则可以利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力。

  • 数据库读写分离

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

  • 1.1.6使用反向代理和cdn加速网站相应

  • 随着网站业务不断发展,用户规模越来越大,由于中国复杂的网络环境,不同地区网站访问越慢,用户越容易失去耐心离开。所以,为了提供更好的用户体验,留住用户,网站需要加速网站访问速度。主要手段有使用CDN和反向代理。

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

  • CDN和方向代理的原理都是缓存,区别在于CDN部署在网络提供商的机房,使用户载请求网站服务时,可以从距离自己最近的网络提供上级房获取数据;而反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存者用户请求的资源,就将其直接返回给用户。

  • 使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。

后续文章请关注以下内容

该文章出自 《大型网站技术架构核心原理与案例分析》 李智慧 著
注:因并非我自己的文章,写的时候方便大家理解,故此文章稍有篆改。后续如作者大大要求删除 我会第一时间删除该文章(毕竟画风确实low)。
如果有想要深入了解的小伙伴可以购买该书 也可以通过该渠道下载该书的pdf电子版。(免费)
链接:百度网盘
密码:u9bg

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...