Week4 学习总结
系统架构概述:互联网系统面临怎样的挑战?
- 高并发,大流量
- 高可用
- 海量数据
- 用户分布广泛,网络情况复杂
- 安全环境恶劣
- 需求快速变更,发布频繁
- 渐进式发展
应对高并发挑战的两个技术方向
- 垂直伸缩
○ 升级硬件和网络吞吐能力
§ RAID(独立冗余磁盘阵列)增加 I/O 吞吐能力
§ SSD(固态硬盘)改善访问速度
§ 增加内存减少 I/O 操作
§ 升级网络接口或增加网络接口提高网络吞吐能力
§ 更新服务器使用更多处理器或者更多超线程
○ 缺点
§ 达到某个程度后,增加计算能力需要更多的花费
§ 垂直伸缩有物理极限
§ 操作系统的设计或者应用程序自身制约着垂直伸缩最多只能达到某个点
- 水平伸缩
○ 增加服务器提升计算能力
○ 水平伸缩可以克服垂直伸缩带来的计算单位成本随计算能力增加而迅速飙升的问题
○ 理论上可以无限增加服务器,没有垂直伸缩计算能力单机受限的问题
- 对比
○
互联网架构演化
- 架构演化第零阶段:最简单的互联网应用架构
○ 应用服务器
§ 应用程序
§ 文件
§ 数据库
- 架构演化第一阶段:应用数据分离
○ 应用服务器
§ 应用程序
○ 文件服务器
§ 文件
○ 数据库服务器
§ 数据库
- 架构演化第二阶段:使用缓存改善系统性能
○ 应用服务器
§ 应用程序
§ 本地缓存
○ 分布式缓存服务器 1…n
§ 远程分布式缓存
○ 文件服务器
§ 文件
○ 数据库服务器
§ 数据库
- 架构演化第三阶段:使用应用服务器集群改善系统的并发处理能力
○ 负载均衡调度服务器
○ 应用服务器 1…n
§ 应用程序
§ 本地缓存
○ 分布式缓存服务器 1…n
§ 远程分布式缓存
○ 文件服务器
§ 文件
○ 数据库服务器
§ 数据库
- 架构演化第四阶段:数据库读写分离
○ 负载均衡调度服务器
○ 应用服务器 1…n
§ 应用程序
§ 本地缓存
§ 数据访问模块
○ 分布式缓存服务器 1…n
§ 远程分布式缓存
○ 文件服务器
§ 文件
○ 数据库服务器(主)(写操作)
§ 数据库
○ 数据库服务器(从)(读操作)
§ 数据库
□ 主->从复制
- 架构演化第五阶段:使用反向代理和 CDN 加速网站响应
○ CDN 服务器 1…n
○ 反向代理服务器 1…n
○ 负载均衡调度服务器 1…n
○ 应用服务器 1…n
§ 应用程序
§ 本地缓存
§ 数据访问模块
○ 分布式缓存服务器 1…n
§ 远程分布式缓存
○ 文件服务器
§ 文件
○ 数据库服务器(主)(写操作)
§ 数据库
○ 数据库服务器(从)(读操作)
§ 数据库
□ 主->从复制
- 架构演化第六阶段:使用分布式文件系统和分布式数据库系统
○ CDN 服务器 1…n
○ 反向代理服务器 1…n
○ 负载均衡调度服务器 1…n
○ 应用服务器 1…n
§ 应用程序
§ 本地缓存
§ 统一数据访问模块
○ 分布式缓存服务器 1…n
§ 远程分布式缓存
○ 分布式文件服务器 1…n
§ 文件
○ 分布式数据库服务器 1…n
§ 数据库
- 架构演化第七阶段:使用 NoSQL 和搜索引擎
○ CDN 服务器 1…n
○ 反向代理服务器 1…n
○ 负载均衡调度服务器 1…n
○ 应用服务器 1…n
§ 应用程序
§ 本地缓存
§ 统一数据访问模块
○ 搜索引擎服务器 1…n
○ NoSQL 服务器 1…n
○ 分布式缓存服务器 1…n
§ 远程分布式缓存
○ 分布式文件服务器 1…n
§ 文件
○ 分布式数据库服务器 1…n
§ 数据库
- 架构演化第八阶段:业务拆分
○ CDN 服务器 1…n
○ 反向代理服务器 1…n
○ 负载均衡调度服务器 1…n
○ A 应用服务器 1…n
§ 应用程序
§ 本地缓存
§ 统一数据访问模块
○ 消息队列服务器 1…n
○ B 应用服务器 1…n
§ 应用程序
§ 本地缓存
§ 统一数据访问模块
○ 搜索引擎服务器 1…n
○ NoSQL 服务器 1…n
○ 分布式缓存服务器 1…n
§ 远程分布式缓存
○ 分布式文件服务器 1…n
§ 文件
○ 分布式数据库服务器 1…n
§ 数据库
- 架构演化第九阶段:微服务及中台化
○ CDN 服务器 1…n
○ 反向代理服务器 1…n
○ 负载均衡调度服务器 1…n
○ A 应用服务器 1…n
§ 应用程序
§ 本地缓存
§ 统一数据访问模块
○ 消息队列服务器 1…n
○ B 应用服务器 1…n
§ 应用程序
§ 本地缓存
§ 统一数据访问模块
○ 分布式服务 i1…in 服务器 1…I
§ 应用程序
§ 本地缓存
§ 统一数据访问模块
○ 搜索引擎服务器 1…n
○ NoSQL 服务器 1…n
○ 分布式缓存服务器 1…n
§ 远程分布式缓存
○ 分布式文件服务器 1…n
§ 文件
○ 分布式数据库服务器 1…n
§ 数据库
互联网架构模式
- 架构模式
○ 每一个模式描述了一个我们周围不断重复发生的问题以及该问题解决方案的核心。
○ 模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用
○ 互联网架构模式就是试图去描述那些为解决互联网系统高性能、高可用、易扩展、可伸缩、安全等目标,被很多互联网应用重复使用的一些解决方案,这些解决方案是互联网软件系统的重要组成部分。
- 分层
○ 分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切成几个部分,每个部分负责相对比较单一的职责,然后通过上层对下层依赖和调用组成一个完整的系统。
- 分割
○ 将软件进行纵向切分
○ 将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元
§ 有助于开发与维护
§ 便于分布式部署,提高并发能力、功能扩展能力
- 分布式
○ 解决同样的问题可以使用更多的计算机
§ CPU、GPU、内存、存储资源也就越多,能处理的并发访问和数据量就越大
○ 分布式应用和服务
○ 分布式静态资源
○ 分布式数据和存储
○ 分布式计算
- 集群
○ 对于集中访问的模块,比如网站,还需要进行服务器集群化
○ 负载均衡提供服务
- 缓存
○ 缓存就是将数据存放在距离计算最近的位置以加快处理速度
○ CDN
○ 反向代理
○ 本地缓存
○ 远程缓存
- 异步
○ 每个业务阶段通过共享数据而不是直接调用的方法进行协作
○ 提高系统可用性
○ 加快网站响应速度
○ 消除并发访问高峰
- 冗余
- 自动化
○ 无人值守可正常运行
- 安全
互联网系统架构核心要素:如何衡量一个系统的架构设计
- 高性能
○ 响应时间
- 高可用
○ 集群
○ 主备
- 可伸缩
○ 集群
- 可扩展
○ 事件驱动架构
○ 分布式架构
- 安全
互联网架构技术一览
-
- 前端架构
○ App、Web
○ 浏览器、HTTP 优化
○ CDN
○ 动静分离
○ 图片服务
○ 反向代理
○ DNS
- 网关及应用层架构
○ 网关架构
○ 负载均衡
○ 动态页面静态化
○ 业务拆分
- 服务层架构
○ 微服务框架
○ 分布式消息队列
○ 分布式缓存
○ 分布式一致性(锁)服务
- 存储层架构
○ 分布式文件
○ 分布式关系数据库
○ NoSQL 数据库
- 后台架构
○ 大数据平台
○ 搜索引擎
○ 推荐引擎
○ 数据仓库
- 运维与安全
○ 数据采集与展示
○ 数据监控与报警
○ 攻击与防护
○ 数据加密与解密
- 推荐书籍
○ 大型网站技术架构——核心原理与案例分析 李智慧
淘宝早期技术演化
- 2003 年
○
- 2004 年
○
- 2005 年
初创互联网公司技术架构
- 宅米业务模式
○ 2014.11 成立,首创寝室便利店模式。校园生活服务平台
- 技术架构 1.0
○ App、Web
○ 负载均衡
○ Web 服务器集群
§ Nginx
○ 应用服务器集群
§ 买家系统集群
§ 卖家系统集群
§ 供应链系统集群
§ 运营系统集群
○ MySQL(主)
- 技术架构 1.0 的挑战
○ 数据库负载压力大
○ 请求响应速度慢
○ 50 万峰值订单
- 技术架构 2.0
○ App、Web
○ CDN 服务
○ 负载均衡
○ Web 服务器集群
§ Nginx
○ 分布式文件系统
○ 应用服务器集群
§ 买家系统集群
§ 卖家系统集群
§ 供应链系统集群
§ 运营系统集群
○ Kafka
○ Redis 集群
○ 大数据平台---》MySQL 从
○ MySQL(主从模式)
- 技术架构 2.0 的挑战
○ 代码耦合严重,相同代码重复开发
○ 订单表达到数据库存储极限
○ 200 万峰值订单
- 技术架构 3.0
○ App、Web
○ CDN 服务
○ 负载均衡
○ Web 服务器集群
§ Nginx
○ 分布式文件系统
○ 应用服务器集群
§ 买家系统集群
§ 卖家系统集群
§ 供应链系统集群
§ 运营系统集群
○ Redis 集群
○ Kafka
○ 大数据平台---》MySQL 从
○ MySQL(主从模式、冷热分离)
○ 分布式服务集群
§ 用户服务
§ 商品服务
§ 订单服务
§ 红包服务
§ 短信服务
○ MongoDB(冷热分离)
○ 批处理任务
- 大数据平台
○ 调度监控
○ 结果集成
§ 多维分析
§ 自助查询
§ 实时展示
§ MySQL
§ Hbase
○ 大数据处理
§ MapReduce
§ Hive
§ Spark
§ HDFS
§ SparkStreaming
○ 数据源 ETL
§ Sqoop
§ 消息队列(Kafka)
§ MySQL
§ 后台系统
§ App 埋点
§ 网络爬虫
§ 日志收集
评论