Week 4 学习总结
4.1 系统架构:系统技术挑战与方案
挑战:
高并发(高性能)、大流量
高可用
海量数据
用户分布广泛,网络情况复杂
安全环境恶劣
版本周期短,版本更新频繁
渐进式发展(演化原则)
高并发:
垂直伸缩:升级单台服务器的硬件、网络
1. 单台服务器有物理极限
2. 硬件升级到一定程度后,每单位性能需要的硬件成本指数上升
3. 单个应用也有性能瓶颈
4. 架构、程序不需要改动
水平伸缩:增加服务器数量
1. 成本低
2. 扩展简单
3. 性能瓶颈高
4. 对架构、程序需求更高
4.2 分布式架构演化
单台服务器
应用数据分离
增加缓存系统
应用服务器集群
数据库读写分离
反向代理和 CDN
分布式数据库
NoSQL 和搜索引擎
业务拆分
微服务和中台化
大数据与智能化
4.3 架构模式与要素
架构模式,就是对重复的系统架构问题的通用解决方案。
架构模式:
分层
服务拆分
分布式
集群
缓存
异步
冗余
自动化
安全
架构核心要素:
高性能
高可用(硬指标)
可伸缩
可扩展
安全
互联网架构技术
前端架构
- App 及 Web 开发技术
- 浏览器及 HTTP 优化技术
- CDN
- 动静分离
- 图片服务
- 反向代理
- DNS
网关及应用层架构
- 网关架构
- 负载均衡
- 动态页面静态化
- 业务拆分
服务层架构
- 微服务架构
- 分布式消息队列
- 分布式缓存
- 分布式一致性(锁)服务
存储层架构
- 分布式文件
- 分布式关系数据库
- NoSQL 数据库
后台架构
- 大数据平台
- 搜索引擎
- 推荐引擎
- 数据仓库
运维与安全
- 数据采集与展示
- 数据监控与报警
- 攻击与防护
- 数据加密与解密
4.4 维基百科技术架构
DNS(数据中心)
LVS
缓存
图片服务器
搜索服务
MySQL
4.5 案例:淘宝业务发展及技术架构
2003:买网站
1. LAMP:Linux + Apache + MySQL + PHP
2. MySQL 读写分离
3. 应用服务集群
2004:Oracle + Java
1. 转 Oracle + IBM 小型机(垂直伸缩)
2. 转为 Java
3. 引入雅虎搜索引擎
2006:spring
1. CDN
2. JBoss
3. 缓存
2007:分布式
对成熟技术的努力与收获不成正比!
4.6 案例:宅米网技术变迁
架构 1.0
Nginx
应用服务器集群
MySQL
挑战:
数据库压力大
请示响应慢
50 万峰值订单
架构 2.0
CDN
分布式文件系统
应用服务集群
Redis 集群
Kafka
大数据平台
MySQL(1 主多从)
挑战:
代码耦合严重,相似代码多
订单表数据量达到数据库存储极限
200 万峰值订单
架构 3.0
独立基本服务
MongoDB
批处理任务
数据量大:冷热分离
评论