第一章 大型网站架构演化
一、大型网站软件系统的特点:-
高并发、大流量
-
高可用
-
海量数据
-
用户分布广泛、网络情况复杂
-
安全环境恶劣
-
需求快速变更,发布频繁
-
渐进式发展
-
初始阶段的网站架构
-
应用服务和数据服务分离
-
使用缓存改善网站性能
-
使用应用服务器集群改善网站的并发处理能力
-
数据库读写分离
-
使用反向代理和CDN加速网站响应
-
使用分布式文件系统和分布式数据库系统
-
使用NoSQL和搜索引擎
-
业务拆分
-
分布式服务
缓存分为两种,缓存在应用服务器的本地缓存和缓存在专门的分布式缓存服务器的远程缓存。
CDN和反向代理和基本原理都是使用缓存,区别在于CDN部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据;反向代理服务器则部署在网站的中心机房,用户请求到达机房后,首先访问反向代理服务器,若有缓存,直接返回给用户。
三、大型网站架构演化的价值观
-
大型网站架构技术的核心价值是随网站所需灵活应对
-
驱动大型网站技术发展的主要力量是网站的业务发展
-
一味追随大公司的解决方案
-
为了技术而技术
-
企图用技术解决所有问题
第二章 大型网站架构模式
网站架构模式-
分层,应用层、服务层、数据层;注意要合理规划层次边界和接口,禁止跨层次的调用或者逆向调用;横向切分;
-
分割,纵向切分,按照模块/功能/服务来分割
-
分布式,分布式应用和服务、静态资源、数据和存储、计算、配置、锁、文件系统
-
集群。即使是访问量很小的分布式应用和服务,也至少要部署两台服务器构成一个小的集群,目的就是提高系统的可用性。
-
缓存,包括CDN和反向代理;本地缓存和分布式缓存;使用缓存的两个前提条件:1. 数据访问热点不均衡,2. 数据在某个时间段内有效,不会很快过期;
-
异步,系统解耦的手段之一:分层、分割、分布、异步;单一服务器内,通过多线程共享内存队列的方式实现异步,分布式系统通过分布式消息队列实现异步;
-
冗余:数据定期备份、存档保存、冷备份、主从分离、实时同步热备份、灾备数据中心等;
-
自动化。自动代码管理,测试,安全检测,部署,监控,报警,失效转移关闭,自动恢复重启,自动化降级(就是对不合理的访问不重要的服务进行关闭,阻止访问等。将负载维持在正常的水平)
-
安全。加密,检验,阻止攻击,风险控制。
第三章 大型网站核心架构要素
架构要素-
性能,衡量指标:响应时间、TPS、系统性能计数器
-
可用性,手段:冗余、负载均衡
-
伸缩性,集群增加节点,一致性哈希算法
-
扩展性:衡量的主要标准就是:网站在添加新的业务产品时,是否可以实现对现有产品透明无影响;主要手段就是:事件驱动架构和分布式服务。
-
安全性