架构演化
互联网系统面临的挑战
高并发, 大流量: 海量用户的并发访问
高可用 系统7x24小时不间断服务。
要求在系统正在运行时候,进行维护和升级。
要求某个服务器挂了,系统还能正常服务
海量数据
需要存储,管理海量数据。
用户分布广泛,网络情况复杂
国内复杂的网络环境,各地网络情况千差万别
安全环境恶劣
由于互联网的开发性, 使得互联网站更容易受到攻击,大型网站几乎每天都会遭到黑客攻击情况;网站泄露用户密码。
需求快速变更,发布频繁
互联网产品为了快速适应市场,满足用户需求,发布频繁,一周一个版本, 有时甚至一天几十次发布。
渐进式发展
几乎所有的大型互联网站都是从一个小网站开始, 渐进的发展起来的。
Facebook 是在伯克扎克在哈佛大学宿舍开发的
Google 的第一台服务器部署在斯坦福大学的实验室
阿里巴巴则是在马云的客厅里诞生
应对高并发挑战的两个技术方向
垂直伸缩
垂直伸缩概述
通过升级硬件和网络吞吐能力可以实现垂直伸缩。由于不需要改变应用架构,所以通常被认为是最简单的短期伸缩方案。
通过使用RAID(独立冗余磁盘阵列)增加I/O 吞吐量
通过切换到SSD(固态硬盘)改善I/O访问速度
通过增加内存减少I/O操作
通过升级网络接口 或 增加网络接口提高网络吞吐能力
更新服务器使用更多处理器或更多线程
垂直伸缩有优点与缺点
优点
升级速度快
能让系统快速适应需求的变化
缺点
达到某个程度后, 增加计算能力需要更多花费
垂直伸缩有物理极限
操作系统或者应用程序自身限制了垂直伸缩只能达到某个点
水平伸缩
水平伸缩概述
水平伸缩是指通过增加服务器的数量, 提升计算能力的一类架构方法
水平伸缩提升服务能力与花费几乎是线性变化的, 不会出现单台服务器的极限
架构演化
最简单架构: 一台服务器搞定
第一阶段: 应用数据分离
第二阶段: 使用缓存改善系统性能
第三阶段: 使用应用服务器集群改善系统的并发处理能力
第四阶段: 数据库读写分离
第五阶段: 使用反向代理 和 CDN加速网站响应
第六阶段: 使用分布式文件系统 和 分布式数据库系统
第七阶段: 使用NoSQL 和 搜索引擎
第八阶段: 业务拆分
第九阶段: 微服务及中台化
评论