漫谈《大型网站技术架构》
2017-04-05 16:26
351 查看
本文的内容来自阿里巴巴员工李智慧的著作《大型网站技术架构 核心原理与案例分析》,这本书很值得一看,故整理之。
一、大型网站的架构演化
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 电子商务风险控制
风险账号风险
买家风险
卖家风险
交易风险
风控
规则引擎
统计模型
相关文章推荐
- 漫谈《大型网站技术架构》
- 漫谈《大型网站技术架构》
- 漫谈《大型网站技术架构》
- SD2.0大会上关于“大型网站架构技术”的讨论
- [转贴] 大型网站架构技术方案集锦
- 大型网站(高访问、海量数据)技术架构
- 大型网站架构设计及技术总结
- 大型网站架构技术方案集锦
- 基于Java技术的大型网站架构方案
- 上周技术关注:大型高并发高负载网站的系统架构
- 大型网站架构技术专家谈
- 大型网站架构技术方案集锦
- 鬼吹灯-漫谈大型网站的架构
- 大型网站架构设计及技术分析(二)
- 大型视频网站的技术架构方案
- 『netbug2009』SD2.0大会上关于“大型网站架构技术”的讨论(笔记)
- 五一技术关注:说说大型高并发高负载网站的系统架构
- 基于Java技术的大型网站架构方案
- 大型网站架构分析系列技术文档合集一
- 大型网站架构分析系列技术文档合集二