一、大型网站的架构演化
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 电子商务风险控制
风险
账号风险
买家风险
卖家风险
交易风险
风控
规则引擎
统计模型
关于:中科研拓
深圳市中科研拓科技有限公司专注提供软件外包、软件开发、软件定制、app外包、智能硬件开发、O2O电商平台、手机应用程序、大数据系统、棋牌游戏、物联网项目等开发外包服务,通过IT技术实现创造客户和社会的价值,成为优秀的软件公司,通过客户需求导向、开放式创新、卓越运营管理等战略的实施,全面打造公司的核心竞争力。优秀软件外包公司、软件开发公司,联系电话400-0316-532,邮箱sales@zhongkerd.com,网址www.zhongkerd.com