最近拜读了《大型网站技术架构核心原理与案例分析》,从整体上进一步了解了软件架构中的方法论,关注的核心要素,以及在每个架构模式中涉及到的技术。重新梳理后记录下来,然后时刻通过深入研究里面的每个方案和技术来提高自己能力。
架构的模式:
分层(应用层,服务层,数据层)、分割(将业务,服务分成细粒度独立的模块)、
分布式:分布式应用和服务,分布式静态资源,分布式数据和存储,分布式计算
集群(应用,服务,数据的集群提供高可用)、
异步(分布式队列)、缓存(CDN,反向代理,本地缓存,分布式缓存)、冗余、自动化、安全
一般网站架构有以下几个核心要素:
一、高性能
1.性能指标:
响应时间:指发出请求开始到接收全部数据所用的时间
并发数:同时处理请求的数目),
吞吐量 :单位时间系统能处理的请求数,TPS 每秒事务数,HPS 每秒http请求数,QPS每秒查询数
2.web前端性能优化
浏览器访问优化:减少http请求,合并css文件和javascript文件,静态资源用其他域,让浏览器可以发起多个并发请求
启用压缩(gzip)和浏览器缓存,将css放在页面最上面javascript放在页面最下面 ,减少cookie传输
CDN(content distribute network)加速、反向代理(Nginx,Apache)
3.应用服务器性能优化 (优化手段主要有 缓存、集群、异步)
分布式缓存 (membercache,redis)
异步:消息队列 集群:使用负载均衡
代码优化:多线程(将对象设计为无状态、使用局部对象、使用锁) 资源复用
存储优化:机械硬盘、固态硬盘 B+树LSM树 RAID和HDFS
二、高可用性
高可用的网站架构,分层(应用层,服务层,数据层)、分割(每一层再分模块)
高可用的应用:通过负载均衡进行无状态服务的失效转移,
应用的集群session管理(session复制,session绑定,用cookie记录session,session服务器统一管理session)
高可用的服务:可复用的服务模块为业务产品提供基础公共服务,可以分布式部署和无状态的服务可以通过负载均衡的失 效转移策略实现高可用的服务,还有其他的服务策略:分级管理(根据应用和服务的权重分配硬件、网 络、运维响应资源)、超时设置、异步调用
高可用的数据服务:CAP原理(数据一致性,数据可用性,数据一致性)
数据备份,失效转移,主从分离
三、伸缩性
通过改变部署的服务数量就可以扩大或者缩小网站的服务处理能力
不同功能通过物理分离实现伸缩,单一功能通过集群实现伸缩
应用服务器集群的伸缩性设计:
应用服务器是无状态的,通过增减集群中的机器就可以实现伸缩性,再通过负载均衡策略将请求路由到对应的服务 器上处理: http重定向负载均衡,DNS域名解析负载均衡,反向代理负载均衡,ip负载均衡,数据链路层负载均 衡。 负载均衡算法:轮询,加权轮询,随机,最少连接,源地址散列
分布式缓存集群伸缩性设计:
因为存放数据的原因,不能用简单的负载均衡手段来实现分布式缓存集群。
memcached 访问模型,通过路由算法决定访问集群中的哪台机器,分布式缓存一致性hash算法
数据存储的伸缩性设计: Cobar
四、扩展性
系统功能可持续扩展或提升的能力。
五、安全性
XSS攻击即跨站点脚本攻击(cross site script)
注入攻击
CSRF攻击(cross site request forgery 跨站点请求伪造)
信息加密和密钥管理:
1.单向散列加密
2.对称加密
3.非对称加密
4.密钥安全管理