大型网站技术架构

本文是我读《大型网站技术架构》一书的总结。

一 大型网站架构的演化

1.大型网站的特点:高并发、高可用、海量数据、用户分布广泛,网络情况复杂、安全环境恶劣、需求快速变更,发布频繁、渐进式发展

2.网站的演化过程

1)Linux+PHP+apache+MySQL

2)服务器分离,变成三台服务器:应用XXX、文件服务器、数据库服务器

3)因网站访问特点:80%的业务访问集中在20%的数据上。所以网站使用缓存,有两种:1;缓存在应用服务器上的本地缓存;2 缓存在专门的分布式缓存服务器上的远程缓存

4)应用服务器不堪重负后,使用集群解决网站的高并发的问题,同时在前面搞个负载均衡调度服务器

5)数据库主从分离,从而实现读写分离,但是会导致一定的延迟。

6)使用反向代理和CDN(content delivery network 内容分发系统)加速网站响应

7)分布式文件系统和分布式数据库系统

8)使用NoSQL和搜索引擎

9)业务拆分,应用之间通过超链接建立关系,或者通过消息列队进行数据分发

10)分布式服务

二、大型网站架构模式

1)分层   应用层、服务层、数据层

2)分割 纵向的切分,将网站不同的功能和服务分割开来

3)分布式 分层和分割的一个主要目的便是为了切分后的模块便于分布式部署

4)集群 多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务

5)缓存 将数据存放在距离计算最近的位置以加快处理速度

CDN:内容分发网络,部署在距离终端用户最近的网络资源服务商,缓存的一般是一些静态资源

反向代理:属于网站前端架构的一部分,在这里缓存网站静态资源

本地缓存:在应用服务器本地缓存数据热点

分布式缓存:大型网站数据太多,单机缓存肯定不够,需要分布式缓存,将数据缓存在一个专门的分布数缓存集群中

6)异步 生产者消费者模式,两者不存在直接调用

提高系统可用性。系统故障后,数据会在消息列队服务器中存储,生产者服务器可以继续处理业务,系统表现无故障,等消费者好了后在继续处理

加快网站响应速度。不需要等待消费者就可以返回,响应延迟减少

消除并发访问高峰。

7)冗余 数据进行冗余备份。访问和负载很小的服务也必须部署至少两台服务器构成一个集群,其目的就是通过冗余实现服务的高可靠

8)自动化 比如自动化管理,发布过程自动化,自动化测试等

9)安全  手机短信验证

三、大型网站核心架构要素

软件架构:有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计

1)性能 2)可用性3)伸缩性4)扩展性5)安全性

四、瞬时响应:网站的高性能架构

4.1 Web前端性能优化

4.1.1浏览器访问优化
1)减少http请求  主要手段:合并Css、合并JavaScript、合并图片
2)使用浏览器缓存  通过设置HTTP头中的Cache-Control和Expires的属性,来设置浏览器缓存的时间。
3)启用压缩
4)CSS放在页面最上面、JavaScript放在页面最下面  原因:浏览器下载完css后才会对页面进行渲染,javascript加载后会立即执行,会阻塞整个页面。但如果解析页面时就需要用到js就不要放在最下面
5) 减少Cookie传输  原因:太大的cookie会严重影响数据传输
4.1.2 CDN加速
content distribute network (内容分发网络)的本质仍然是一个缓存。CDN部署在网络运营商机房,用户请求的第一跳就达到了CDN服务器,从CDN直接返回给浏览器。
CDN能够缓存的一班是静态资源,如图片、文件、CSS、Script脚本、静态网页等。
4.1.3 反向代理
提升安全性、给代理服务器配置缓存,加速web请求。
反向代理还可以实现负载均衡,而通过负载均衡构建的应用集群可以提高系统的总处理能力。

4.2 应用服务器性能优化

主要优化手段:缓存、集群、异步、代码优化
缓存:memcache
集群:使用负载均衡技术,为一个应用构建一个由多台服务器组成的集群
异步:消息列队
代码优化:1、多线程2、资源复用3、数据结构4、垃圾回收

4.3 存储性能优化

1、机械硬盘VS固态
2、B+树vsLSM树
3、RAIDvsHDFS

五、网站的高可用架构

5.1高可用的应用

1、通过负载均衡进行无状态服务的失效转移

2、有状态的服务存进session。session的方案有四种:1)、使用session复制,把每一个session复制到每一个应用服务器中,但是这种在集群规模较大时,占用过多的带宽,导致没法使用;2)session绑定,利用均衡负载的原地址hash算法实现,使同一ip的请求总是访问同一个ip服务器,但是这个方案不符合我们高可用的要求;3)利用cookie记录session,缺点在于cookie有限制。4)独立部署session服务器

5.2 高可用的服务

1、分级管理 核心应用服务优先使用更好的硬件

2、 超时设置

3、异步调用  消息列队

4、 服务降级  一个是拒绝一部分人的服务 另一个是关闭部分功能

5、 幂等性设计

5.3 高可用的数据

 1、CAP原理:存储系统无法同时满足数据一致性、数据可用性、分区耐受性

数据一致性分为:数据强一致、数据用户一致、数据最终一致

2、数据备份  分为热备冷备 热备又分异步方式和同步方式

3、转移失效 分三步:确认失效-》访问转移-》数据恢复

5.4 高可用的网站软件质量

网站发布可以使用火车发布模型,每过一关就是过一个站,不行的就下来。

灰度发布模式:将集群服务器分成若干部分,每天只发布一部分服务器

5.5 网站运行监控

1、用户行为日志收集  2、服务器性能监控 3、运行数据报告

六、网站的伸缩性架构

6.1网站架构的伸缩性设计

1、将不同功能进行物理分离
    纵向分离:将业务处理流程上的不同部分分离部署
    横向分离:将不同业务模块分离部署
2、单一功能通过集群实现伸缩性

6.2 应用服务器集群的伸缩性设计

关键在于: 实现负载均衡
方法有:1、HTTP重定向负载均衡  :修改IP地址重定向
               2、DNS域名解析负载均衡:域名解析的时候解析成不同的IP
               3、反向代理负载均衡
               4、IP负载均衡  :在网络层修改IP地址
               5、数据链路层负载均衡 :在数据链路层修改MAC地址
最好的是第5种,前面四个的负载均衡服务器成了其发展的瓶颈
实现负载均衡的算法: 轮询、加权轮询、随机、最少链接、源地址散列

6.3 分布式缓存集群的伸缩性设计

6.4 数据存储服务器集群的伸缩性设计

1、支持分片的分布式关系数据库:Cobar
2、NoSQL :HBase

七、网站的可扩展架构

Key:分布式消息列队

八:网站的安全架构

8.1 攻击与防御

1、XSS攻击
跨站点脚本攻击,黑客通过篡改网页,注入恶意HTML脚本,在用户浏览网页时,控制用户浏览器进行恶意操作
应对手段是:消毒、HttpOnly
2、注入攻击
3、CSRF攻击

8.2 信息加密技术及秘钥

1.单向散列加密
2.对称加密:加密解密用的是同一个秘钥 如:DES、RC
3.非对称加密 如:RSA








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值