您的位置:首页 > 运维架构 > 网站架构

漫谈《大型网站技术架构》

2017-04-04 20:37 218 查看
转载请标明出处:

http://blog.csdn.net/forezp/article/details/69196483

本文出自方志朋的博客

本文的内容来自阿里巴巴员工李智慧的著作《大型网站技术架构 核心原理与案例分析》,这本书很值得一看,故整理之。

一、大型网站的架构演化

1.1 大型网站软件的特点

高并发、大流量

高可用:系统7*24小时不间断提供服务

海量数据

用户分布广泛

安全环境恶劣

需求变更快,发布频繁

渐进式发展

1.2 大型网站架构演化发展历程

初始阶段的网站架构:例如 LAMP 架构

应用和数据服务分离:三台服务器:应用服务器,文件服务器和数据库服务器

使用缓存改善网站性能:分为两种,缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器的远程缓存

使用应用服务器集群改善网站并发处理能力:通过负载均衡调度服务器来分发请求到应用服务器集群中的任何一台机器

数据库读写分离: 主写从读。

使用反向代理和 CDN 加速网站响应:这两者基本原理都是缓存。反向代理部署在网站的中心机房,CDN 部署在网络提供商的机房。

使用分布式文件系统和分布式数据库系统: 将不同的业务分布,将不同的业务的数据库部署在不同的机器上。

使用 NoSQL 和搜索引擎: 源自互联网技术,对可伸缩的分布式有更好的支持。

业务拆分:将整个网站通过分而治之的手段将网站业务分成不同的产品线。

分布式服务: 比如最近流行的微服务,横行、纵向切片,将服务集群化,相互关联化。



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

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

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

1.4 网站架构设计误区

一味追随大公司的解决方案

为了技术而技术

企图用技术解决所有问题

二、大型网站架构模式

2.1 网站架构模式

分层

分割

分布式

分布式应用和服务

分布式静态资源

分布式数据和存储

分布式计算

集群

缓存

Cdn

反向代理

本地缓存

分布式缓存

异步

提供系统可用性

加快网站响应速度

消除高并发访问高峰

冗余 服务器冗余运行,数据库冗余备份

自动化

安全 : 防止XSS攻击、sql注入

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

性能

可用性

伸缩性 不断地向服务器集群加服务器

扩张性

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

4.1 网站性能测试

不同视角下网站的性能

用户视角网站性能 响应时间

开发人员视角的网站性能 响应时间、并发亮

运维人员视角的网站性能 资源

性能测试指标

响应时间

并发数

吞吐量 qps tps hps

性能计数器

性能测试方法

性能测试

负载测试

压力测试

稳定性测试

性能测试报告

性能优化策略

性能分析

性能优化

4.2 web前端性能优化

浏览器访问优化

减少http请求

使用浏览器缓存

启用压缩

css放在网页最上面 js最下面

减少cookie传输

CDN加速。(content distribute network)

反向代理

4.3 应用服务器性能优化

分布式缓存

缓存的基本原理

合理的使用缓存

频繁修改数据

没有热点的访问

数据不一致与脏读

缓存可用性

缓存预热

缓存穿透 缓存不存在,直接访问数据库

分布式缓存架构

Memcached

异步操作

使用集群

代码优化

多线程

资源复用

数据结构

垃圾回收

4.4 存储性能优化

机械硬盘 vs. 固态硬盘

B+ 树 vs. LSM 树

RAID vs. HDFS

五、万无一失:网站的高可用架构

5.1 网站可用性的度量和考核

网站可行性度量

网站可用性考核

5.2 高可用的网站架构

5.3 高可用的应用

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

应用服务器集群的session管理

session复制

session绑定

利用cookie记录 session

session服务器

5.4 高可用的应用

分级管理

超时设置

异步调用

服务降级 随机拒绝访问(twitter)

幂等性设计

5.5 高可用的数据

CAP原理

数据持久性

数据可访问性

数据一致性

数据强一致性

数据用户一致性

数据最终一致性

数据备份

失效转移

失效确认

访问转移

数据恢复

5.6 高可用软件质量保障

网站发布

自动化测试

预发布验证

代码控制

主干开发,分支发布

分支开发,主干发布

自动化发布

灰度发布

5.7 网站运行监控

监控数据采集

用户行为日志收集

服务器性能检测

运行数据报告

监控管理

系统报警

失效转移

自动优雅降级

六、永无止尽:网站的伸缩性架构

6.1 网站伸缩性设计

不同功能进行物理分离实现伸缩

单一功能通过集群实现伸缩

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

http重定向负载均衡

Dns域名解析负载均衡

反向代理负载均衡

ip负载均衡

数据链路层负载均衡

负载均衡算法

轮询

加权轮询

随机

最少链接

原地址散列

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

Memcached分布式缓存集群的访问模型

Memcached分布式缓存集群的伸缩性挑战

分布式缓存的一致性hash算法

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

关系数据库集群的伸缩性设计

Nosql数据库的伸缩性设计

七、随机应变:网站的可扩展性架构

7.1 构建可扩展性的网站架构

7.2 利用分布式消息队列降低系统耦合性

事件驱动架构

分布式消息队列

7.3 利用分布式服务打造可复用的业务平台

web service与企业级分布式服务

大型网站分布式服务的需求与特点

负载均衡

失效转移

高效的远程通信

整合异构系统

对应用最少侵入

版本控制

实时监控

分布式服务框架设计

7.4 可扩展的数据结构

7.5 利用开放平台建设网站生态圈

api接口

协议转移

安全

审计

路由

流程

8、固若金汤:网站的安全架构

8.1 道高一尺魔高一丈的网站应用攻击与防御

xss攻击

消毒

httponly

注入攻击

开源

错误回显

盲注

消毒

参数绑定

csrf攻击

表单token

验证码

referer check

其他攻击和漏洞

error code

html注释

文件上传

路径遍历

web应用防火墙

网站安全漏洞扫描

8.2 信息加密技术及密钥安全管理

单向散列加密

对称加密

非对称加密

密钥安全管理

8.3 信息过滤与反垃圾

文本匹配

分类算法

黑名单

8.4 电子商务风险控制

风险

账号风险

买家风险

卖家风险

交易风险

风控

规则引擎

统计模型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: