1.概述
1.大型网站架构演化
1.大型网站软件系统的特点
高并发 大流量,高可用,海量数据,
用户分布广泛 网络情况复杂,安全环境恶劣
需求快速变更 发布频繁,渐进式发展
2.大型网站架构演化发展历程
1.初始阶段的网站架构:从小型网站演化而来
2.应用服务和数据服务分离
3.使用缓存改善网站性能
4.使用应用服务器集群改善网站的并发处理能力
5.数据库读写分离
6.使用反向代理和CDN加速网站响应
7.使用分布式文件系统和分布式数据库系统
8.使用NoSQL和搜索索引:对可伸缩的分布式特性有更好的支持
9.业务拆分
10.分布式服务
3.大型网站架构演化的价值观
1.大型网站架构技术的核心价值是随网站所需灵活应对
2.驱动大型网站技术发展的主要力量是网站的业务发展
4.网站架构设计误区
1.一味追随大公司的解决方案
2.为了技术而技术
3.企图用技术解决所有问题
技术是用来解决业务问题的 同样的 业务的问题 也可通过业务的手段去解决
2.大型网站架构模式
"每一个模式描述了一个在我们周围不断重复发生的问题及解决该问题解决方案的核心
这样 你就能一次又一次地使用该方案而不必做重复的工作"
1.网站架构模式
1.分层
2.分割
3.分布式
常见的分布式解决方案:
分布式应用和服务 分布式静态资源 分布式数据和存储 分布式计算
4.集群
5.缓存(CDN:内容分发网络 反向代理 本地缓存 分布式缓存等)
6.异步
使用异步消息队列有如下特征:
提高系统可用性 加快网站响应速度 消除并发访问高峰
7.冗余
8.自动化
9.安全
2.架构设计在新浪微博的应用
系统分为三个层次
1.最下层是基础服务层 提供数据库 缓存 存储搜索等数据服务 以及其他一些基础技术服务。
2.中间层是平台服务和应用服务层 新浪微博的核心服务是微博 关系和用户 它们是新浪微博业务大厦的支柱
3.最上层是API和新浪微博的业务层 各种客户端(包括Web网站)和第三方应用
通过调用API集成到新浪微博的系统中 共同组成一个生态系统
3.大型网站核心架构要素
架构:"最高层次的规划 难以改变的决定"
软件架构:"有关软件整体结构与组件的抽象描述 用于指导大型软件系统各个方面的设计"
一般说来 除了当前的系统功能需求外
软件架构还需要关注性能 可用性 伸缩性 扩展性 安全性这五个架构要素
1.性能:性能是一个网站的重要指标
2.可用性:存在服务不可用问题时 是一件大事 所以要尽量避免
3.伸缩性:指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储要求
4.扩展性:网站快速发展 功能不断扩展
如何设计网站的架构使其能够快速响应需求变化
是网站可扩展架构主要的目的
5.安全性:网站的安全架构就是保护网站不受恶意访问和攻击 b保护网站的重要数据不被窃取