大型网站架构--核心原理与案例分析总结(一)---网站架构发展史篇

引言

在geek time上面订阅了一门李智慧老师的从《从0开始学习大数据》课程,于是就拜读了老师的一步著作《大型网站架构—核心原理和案例分析》,于是就做了个总结和一些思考、主要是帮助自己梳理清楚知识的脉络、不会包含特别细节。书中的书中的内容非常的多,而且覆盖面也是非常的广的,不可能全面,所以只能树立梳理一个大致的框架,当然遇到自己感触比较深的地方也会加入自己的理解,好了废话不多说


结构

文章的内容主要包括5大部分

1:网站架构发展史:网站是怎么从一步步演化成一个大型网站的包括单机、分离、拆分、集群等

2:架构模式:包括分层、分割、集群、缓存、异步、冗余、自动化等

3:性能优化:前端、服务器、数据库

4:三高:简单谈谈高可用、高性能、伸缩性

5:web 安全:XSS、SQL注入、CSRF等


网站架构发展史

1:应用程序、数据库、文件等都在一台服务器上面

网站的初始阶段前端页面、服务器程序、和数据库都集中在一台服务器上面、最常见的就是php(包含html、css、js)+linux+apahce,我大学做项目就是这么干的,集中在一台服务器上面,只不过用的是django+centos+mysql+html-css-js,为什么要这样呢,因为这个时候的项目小,需要的就是要尽快上线只需要能跑起来,基本能用就可以了

架构图

2:三台服务器各司其职,应用服务和数据服务分离

这个时候需要三台服务器,分别放应用程序、数据库、文件(主要是指用户上传的文件),造成这么分离的原因主要有两点:

1:用户访问越来越多,访问的性能下降(应用服务器需要更快的CPU)

2: 用户的数据越来越多,需要更大的储存空间,数据库需要更快的磁盘检索(快源硬盘)和数据缓存(大内存),文件服务器需要更大的硬盘

所以根据不同性能需要而购买不同类型的服务器,简单的说就是

  • 应用程序服务器-----快的CPU

  • 数据库服务器----快的检索和大的缓存

  • 文件服务器----大的硬盘

架构图

3: 2,8原则,数据冷热分离

网站的数据访问和现实中的财富一样遵循2,8原则,所以我们增加一个缓存层、将经常访问的数据缓存起来,这样急增加的检索数据的速度又减小了数据库服务器的压力

架构图

4: nginx反向代理,负载均衡

随着访问的增加,因为现在访问都是从单机(应用服务器)进入的,这个时候可以的应用服务器的外层加一层反向代理,使用nginx来代理请求、让nginx来决定使用哪一台应用服务器来处理我们的请求

架构图

5:读写分离

随着访问的进一步增加,数据库成为整个系统的瓶颈,这个时候我们可以用两台数据库,一台负责写入,另一台负责读取,写入的数据会同步到从数据库、也就是主从架构,

架构图

6:CDN加速

缓存、动静分离

架构图

7:分布式

使用分布式之后,可以将不同的业务拆分(水平拆分、垂直拆分),然后部署到不同的服务器上面去,比如大型的电商网站会讲商家、首页、订单、卖家、买家、物流等拆分到不同的业务当中去,然后交给不同的团队负责、每个业务单独部署、业务之间可以通过微服务(服务驱动架构)、消息队列(事件驱动架构)来建立联系

架构图

8:引入NoSQL和搜索引擎

随着业务的发展,对业务的储存和检索越来越复杂,需要引入非关系数据库和非数据库查询技术,引用服务器通过统一的方式访问数据

架构图

9:分布式服务

架构图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值