大型网站技术架构--读书笔记



讲解了一些常用的概念及方法,讲的比较浅显,但是知识点还是比较全的,里面有些重复内容。


读书笔记
第一章:大型网络架构演化
初步架构:应用程序+文件+数据库
应用程序处理逻辑,文件存储数据,如录像文件,图片信息。数据库存储逻辑数据
改善方案步骤,根据业务发展不断改善,最初只需要部署在一台服务器上即可
1.各个程序分离到不同pc上
2.使用缓存改善
3.使用集群改善(集群:所有服务器提供的相同服务)
4.数据库读写分离,主数据库做写,定时同步到副服务器上。副服务器进行读操作
5.使用反向代理和cdn加速网站相应(反向代理:客户端访问方向代理,方向代理根据当前负载情况访问后面的真正服务器,反向代理也可以做缓存数据。cdn加速:cdn即部署在离客户端最近的机房内
让客户端能够最快的访问到数据信息)
6.使用分布式文件系统和分布式数据库系统(分布式:将数据部署在不同的服务器上,减少存储压力)
7.使用Nosql和搜索引擎
8.业务拆分:将业务进行横向拆分,将不同的业务拆分到不同的服务器上.

第二章:大型网站的架构模式
1.网站架构模式
1.1 分层:纵向-应用层,服务层,数据库层
1.2 分割:横向-进行业务拆分
1.3 分布式:将不同的模块部署在不通的服务器上,通过远程调用协调工作。带来的问题:A-调用的服务必须通过网络,可能对性能造成比较严重的影响。B-服务器越多,挂机的概率越大。C-保持数据一致性非常困难。D-导致网站依赖错综复杂。分布式设计应该量力而行,不要为了分布式而分布式
分布式应用和服务,分布式静态资源,分布式数据和存储,分布式计算。
1.4 集群:多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务
1.5 缓存:CDN,反向代理,本地缓存,分布式缓存。使用缓存有两个前提条件:A-数据访问热点不平衡,某些数据被频繁的访问。B-数据在某个时间段内有效,不会很快过期。
1.6 异步:提高系统可用性,加快网站相应速度,消除并发访问高峰。
1.7 冗余:冗余服务器进行备份
1.8 自动化
1.9 安全

第四章:瞬时响应:网站的高性能架构
1. 性能测试指标
1.1 相应时间:执行一个操作需要的时间
1.2 并发数:同时请求的数目
1.3 吞吐量:单位时间内系统处理的请求数量
2. web前端优化
2.1 减少http请求
2.2 使用浏览器缓存
2.3 启用压缩
2.4 css放在页面最上面,javascript放在页面最下面
2.5 减少cookie传输
2.6. CDN加速
2.7. 反向代理
3. 应用服务器优化
3.1 分布式缓存(jboss cache的需要同步更新的分布式缓存,memcached的不需要互相通信的分布式缓存)
3.2 异步操作:消息队列MQ
3.3 使用集群
3.4 代码优化:多线程,对象为无状态
4.存储性能优化
raid0:将磁盘数据分成N份,数据同时并发写入N块磁盘。具有极快的写速度,但是不支持数据备份
raid1:将一块数据同时写入两块磁盘,具有极高的可靠性
raid10:raid0和raid1的综合版本,将磁盘平分成2份,并发的写入
raid3:并发写入N-1块磁盘中,在第N块磁盘上记录校验数据,任何一块磁盘坏了,都可以利用其它N-1块磁盘进行数据修复。但是第N块磁盘损坏了,则比较麻烦
raid5:校验数据不写入第N块磁盘,而是螺旋式的写入所有磁盘。
raid6:与raid5类似,但是数据只写入n-2块磁盘,在另外两块磁盘中写入校验数据
raid5与raid6有明显优势

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

第六章:永无止境:网站的伸缩性架构
1.集群负载均衡方案
1.1 HTTP重定向负载均衡
1.2 DNS域名解析负载均衡
1.3 反向代理负载均衡
1.4 IP负载均衡(网络层,需要路由器可用实现)
1.5 数据链路层负载均衡
2.负载均衡算法
2.1 轮训
2.2 加权轮训
2.3 随机
2.4 最少连接
2.5 原地址散列:根据源的IP地址进行key值保存,每次同一个ip地址的请求总到同一台服务器上处理
3.数据库集群

第八章:固若金汤:网站的安全架构
1.网络应用攻击与防御
1.1 XSS攻击
反射型:诱使用户点击一个嵌入恶意脚本的链接
持久性:提交恶意脚本给服务器,保存到web站点的数据库中,用户浏览网页,恶意脚本本身被包含在了正常的页面中
防御手段:消毒,httponly
1.2 注入攻击
sql注入和os注入攻击
防御手段:消毒,参数绑定(不暴露SQL语句函数)
1.3 csrf攻击
跨站点伪造请求:攻击者通过跨站请求,以合法用户的身份进行非法操作
防御手段:单表Token,验证码,referer check
2.信息加密技术及秘钥安全管理。
2.1 单向散列加密
通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个过程是单向的,不可逆的。常用的有MD5,SHA
2.2 对称加密
加密和解密使用的密钥是同一个秘钥。可以相互推算。常用的有DES,RC算法
2.3 非对称加密
加密秘钥和解密秘钥不是同一个秘钥。其中一个对外界公开,称为公钥。另一个为所有者知道,称为私钥。常用的如数字签名,RSA算法

你可能感兴趣的:(大型网站技术架构--读书笔记)