您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

大型网站架构设计 10 步骤,大流量高并发不用慌

时间:2019-10-22 09:23:42  来源:  作者:

一、大型网站系统的特点

高并发,大流量: 需要面对高并发用户,大流量访问,google日均PV数为35亿,日均IP访问数为3亿,2011年腾讯QQ最大用户在线数1.4亿,淘宝2012年双11活动一天交易额191亿,活动开始第一分钟独立访问用户达1000万

拓展: PV、UV、IV的概念

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

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

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

高可用: 7 * 24小时不间断提供服务。大型网站的宕机一般会成为焦点,例如2010年百度域名被黑客劫持事件,双11淘宝宕机事件,12306网站并发数过高的宕机事件,微博流量明星宕机事件。

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

海量数据:需要存储管理海量的数据,同时需要大量服务器,Facebook 每周上传的照片数目接近10亿,百度收录的网站有百亿,Google有接近百万台服务器为全球用户提供服务。

用户分布广泛,网络情况复杂:许多大型互联网公司都是为全球用户提供服务,各地网络情况千差万别,在国内,还有各个运营商网络互通难的问题,而中美光缆的数次故障,也让很多互联网公司不得不考虑在海外建立数据中心。

安全环境恶劣: 由于互联网的开放性,使大型互联网公司更易遭到黑客的攻击,例如facebook用户泄漏事件。

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

需求快速变更,发布频繁: 和传统的企业级应用不同,互联网公司为快速适应市场,满足用户需求,其产品发布频率是极高的。至于中小型互联网公司的发布频率,那就更高了,有时候一天会发布十几次

渐进式发展: 与传统行业一开始规划好全部的功能和非功能的需求不同,很多大型互联网公司都是从小公司开始做起,渐进的发展起来的。Facebook的创始人扎克伯克在哈佛的宿舍开发出来的,阿里巴巴是诞生在马云家的客厅的,好的互联网产品都是迭代出来的,不是一开始就发展的很好的。

二、大型网站的演变过程

1. 初始阶段的网站架构

大型网站都是从小型网站发展起来的,网站架构也是一样,网站刚开始搭建处于雏形阶段,访问量小,一台服务器完全够用,也是大部分企业级应用的选择

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

应用程序,数据库,文件都部署在一台服务器的,通常服务器选用linux,应用程序选用php,然后部署在Apache 上,数据库使用MySQL,汇集各种开源软件以及一架廉价的服务器就可以进行开发

2. 应用服务和数据分离

随着业务的发展,一台服务器不能满足业务需求:越来越多的用户访问导致性能越来越差,越来越多的数据导致服务器存储空间不足,这就需要将应用和数据分离。应用和数据分离后整个网站使用三台服务器,应用服务器,文件服务器,数据库服务器

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

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

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

网站访问特点和现实世界的财富分配通常符合二八定律: 80%的业务访问集中在20% 的数据上,淘宝买家浏览的商品集中在少部分成交数多、评价良好的商品上;百度搜索的关键词集中在少部分热门词汇上,搜索出来的词条你也会浏览前两页的内容。

既然大部分的浏览都只会放在一小部分数据上,那么是否能把这些数据缓存起来放在内存中,是不是就可以减少数据库的压力,从而提高整个网站的数据访问速度,改善数据库的写入性能了呢?

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

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

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

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

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

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

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

5. 数据库读写分离

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

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

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

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

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

随着网站规模不断扩大,用户规模越来越大,由于国内网络情况复杂,不同地区的用户访问网站时,速度差别也极大。有研究表明,网站访问延迟和用户流失率正相关,网站访问越慢,用户的流失率越快,所以为了更好的用户体验,留住用户,网站需要更快的访问速度,主要手段有使用CDN和反向代理

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

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

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

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

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

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

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

8. 使用NoSQL和搜索引擎

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

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

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

9. 业务拆分

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

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

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

10. 分布式服务

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

既然每一个应用系统都需要执行许多相同的业务操作,可以把相同的业务提取出来。由这些可服用的业务连接数据库。提供公用业务服务。

 

大型网站架构设计 10 步骤,大流量高并发不用慌

 

 

大型网站演化到这里,基本上大多数的技术问题都可以解决,诸如跨数据中心的实时数据同步和具体网站业务相关的问题都可以通过组合改进现有的技术架构来解决。

三、大型网站架构演化的价值观

1. 大型网站架构技术的核心价值是随网站所需灵活应对

大型网站架构技术的核心价值不是从无到有搭建一个大型的网站,而是能够伴随小型网站业务的逐步发展,慢慢演化成一个大型网站。在这个过程中,不需要放弃什么,不需要推翻什么,技术选型都是非常重要的,所有的大公司例如FaceBook、Google、淘宝无不遵循这样一条发展路线

2. 驱动大型网站技术发展的主要力量是网站业务的发展

创新的业务发展模式对网站架构提出了更高的要求,才使得创新的网站架构得以发展成熟。是业务成就了技术,是事业成就了人。而不是相反。

四、网站架构设计误区

1. 盲目追随大公司的解决方案

2. 为了技术而技术

3.企图用技术解决所有问题



Tags:网站架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
网站架构变迁Intro从最早的 html 的学习到现在从单体应用迁移到微服务架构,所经历的网站架构也一直在变化,想写一篇关于网站架构变迁的文章。单服务器最早的我们的网站只有一...【详细内容】
2020-05-08  Tags: 网站架构  点击:(49)  评论:(0)  加入收藏
为了使网站这个虚拟的大建筑能够应对高并发访问,海量数据处理,高可靠运行等一系列问题,架构要素和分层架构是必不可少的,就犹如盖房子要用建筑材料一层一层盖一样。满山红网站...【详细内容】
2020-01-09  Tags: 网站架构  点击:(71)  评论:(0)  加入收藏
一、大型网站系统的特点高并发,大流量: 需要面对高并发用户,大流量访问,Google日均PV数为35亿,日均IP访问数为3亿,2011年腾讯QQ最大用户在线数1.4亿,淘宝2012年双11活动一天交易额...【详细内容】
2019-10-22  Tags: 网站架构  点击:(74)  评论:(0)  加入收藏
说道大型网站,就的先说大型网站的特点:高并发,大流量,高可用,海量数据等。下面就说说大型网站的架构演化过程吧。1、初始阶段的网站架构初始阶段都比较简单,通常一台服务器就可以...【详细内容】
2019-10-08  Tags: 网站架构  点击:(141)  评论:(0)  加入收藏
大型网站架构设计是一个循序渐进的过程,围绕“性能、可用性、伸缩性、扩展性、安全性”展开,下面是个人关于网站架构方面的一些总结,不到之处请大家多多批评。前端 CDN加速:CSS/...【详细内容】
2019-10-08  Tags: 网站架构  点击:(115)  评论:(0)  加入收藏
最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责。网站一般分为三个层次:应用层、服务层和数据层,其具体结构如下图所示:...【详细内容】
2019-09-10  Tags: 网站架构  点击:(176)  评论:(0)  加入收藏
一、软件负载均衡概述硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级公司长期使用。因此软件负载均衡在互联网领域大量使用。常用的软件负载均衡软件有Ng...【详细内容】
2019-08-08  Tags: 网站架构  点击:(211)  评论:(0)  加入收藏
今天我们来谈谈一个网站一般是如何一步步来构建起系统架构的,虽然我们希望网站一开始就能有一个很好的架构,但马克思告诉我们事物是在发展中不断前进的,网站架构也是随着业务的...【详细内容】
2019-07-30  Tags: 网站架构  点击:(253)  评论:(0)  加入收藏
电商网站:高并发、集群、负载均衡、系统安全、海量数据、高可用、分布式。每一个特点都可能变成痛点!会给系统形成很大的压力,而SOA分布式架构刚好能解决这些问题。什么是SOA?SO...【详细内容】
2019-07-26  Tags: 网站架构  点击:(282)  评论:(0)  加入收藏
前言我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管...【详细内容】
2019-06-17  Tags: 网站架构  点击:(351)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条