大流量高并发网站架构设计步骤演变

大流量高并发网站架构设计步骤演变

大型网站系统的特点

高并发,大流量:需要面对高并发用户,大流量访问,Google日均PV数为30多亿,日均IP访问数为3个多亿,腾讯QQ最大用户在线数1个多亿,淘宝双11活动一天交易额100多亿,活动开始第一分钟独立访问用户达千万等

PV、UV、IV的概念

PV: PV访问量(Page View),即页面访问量,每打开一次页面PV计   数+1,刷新页面也是。

UV: UV访问数(Unique Visitor)指独立访客访问数,一台电脑终端为一个访客。

IV: IV是IP访问数指独立IP访问数,计算是以一个独立的IP在一个计算时段内访问网站计算为1次IP访问数。在同一个计算时段内不管这个IP访问多少次均计算为1次。计算时段有以1天为一个计算时段,也有以1个小时为一个计算时段。

大流量高并发网站的演变过程

  1. 初始阶段的网站架构
    大型网站都是从小型网站发展起来的,网站架构也是一样,网站刚开始搭建处于雏形阶段,访问量小,一台服务器完全够用
    单一架构

应用程序,数据库,文件都部署在一台Linux服务器上

  1. 应用服务和数据分离
    随着业务的发展,一台服务器不能满足业务需求:越来越多的用户访问导致性能越来越差,越来越多的数据导致服务器存储空间不足,这就需要将应用和数据分离。应用和数据分离(应用服务器,文件服务器,数据库服务器)
    服务分离架构

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

  1. 缓存改善网站性能
    网站的缓存分为两种:缓存在本地服务器上的本地缓存,缓存在远程服务器上的远程缓存,本地缓存的访问速度要比远程缓存的更快。但是受应用服务器的内存限制,往往会存在本地缓存和应用程序竞争内存的情况,这种情况在远程服务器上就不会存在,远程分布式缓存可以使用集群的方式,部署大内存的服务器使用专门的缓存服务器
    缓存架构

使用缓存后,有效的改善了数据库访问的压力,但是单一应用程序的服务器能够处理的连接有限,在网站访问的高峰期间,应用服务器会成为网站的瓶颈

  1. 应用服务器集群改善网站的并发处理能力
    使用集群是解决高并发,海量数据问题的关键手段,当一台服务器的处理能力、存储空间不足的时候,不要尝试去更换一台存储量更大的服务器,而是考虑集群部署,因为对于大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务。
    集群部署架构

应用服务器集群部署,使用负载均衡服务器做负载控制,能够改善流量峰值对应用服务器的压力,避免单一服务器承担更多的请求压力。如果还有更多的请求,那么就在现有的基础上增加更多的应用服务器。

  1. 数据库读写分离
    使用缓存后,能够改善一部分的数据库访问压力,使绝大多数数据读操作访问不用通过数据库就能完成,但是仍有一部分读(缓存访问不命中,缓存过期)和全部的写操作都会直接访问数据库,在网站到达一定的规模后,也会增大数据库的压力

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

应用在写数据的时候,访问主服务器,在读数据的时候,访问从服务器,主数据库通过主从复制的功能将数据同步更新到从服务器,这样当有读操作的时候,就会直接访问从服务器,当有写操作的时候,会直接访问主服务器,为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离对应用透明

  1. 反向代理和CDN加速网站响应
    随着网站规模不断扩大,用户规模越来越大,网络情况复杂,不同地区的用户访问网站时,速度差别也极大。网站访问越慢,用户的流失率越快,所以为了更好的用户体验,留住用户,网站需要更快的访问速度,主要手段有使用CDN和反向代理

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

使用CDN的目的都是尽早返回数据给用户,一方面能够加快访问速度,一方面都能减轻服务器的压力

  1. 分布式文件系统和分布式数据库系统
    任何强大的单一服务器都满足不了大型网站持续增长的业务需求。数据库经过读写分离后,从一台服务器拆分成两台服务器,但是随着网站业务的发展不能满足业务的需求,需要使用分布式的存储服务器,文件系统能够也是一样,需要使用分布式文件系统

    分布式数据库是网站数据库拆分的重要手段,只有在单表数据非常庞大的时候才使用。不到不得已时,网站最常用的数据库拆分手段是业务分库。将不同业务的数据部署在不同的服务器上。
    分布式文件架构

  2. NoSQL和搜索引擎
    随着网站业务的扩大,对数据存储和检索的要求也越来越高,网站需要采用一些非关系型数据库技术如NoSQL和非数据库查询技术和搜索引擎
    搜索引擎

  3. 业务拆分微服务
    根据产品线划分产品,将一个产品拆分成不同的应用。每个应用独立部署和维护,应用之间可以通过超链接简历关系,也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。
    业务拆分

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

    既然每一个应用系统都需要执行许多相同的业务操作,可以把相同的业务提取出来。由这些可服用的业务连接数据库。提供公用业务服务(中台概念)。
    分布式服务架构

发布了12 篇原创文章 · 获赞 8 · 访问量 3817

猜你喜欢

转载自blog.csdn.net/weixin_44739349/article/details/102814127