【第四周】系统架构
互联网系统的挑战
高并发、大流量
高可用: 系统7✖️24小时不间断服务
海量数据: 存储、管理海量数据
用户分布广泛、网络情况复杂:全球用户、全球服务、数据中心多地部署
安全环境恶劣: 黑客攻击
需求快速变更,发布频繁:以小时或者天为单位发布
渐进式发展:小步快跑、快速迭代,从小发展,逐步完善
应对挑战的技术方向
垂直伸缩
水平伸缩
垂直伸缩
实现方法:
通过使用RAID(独立冗余磁盘阵列)增加I/O吞吐能力
通过切换到SSD(固态硬盘)改善I/O访问速度
通过增加内存减少I/O操作
通过升级网络接口或者增加网络接口提高网络吞吐能力
更新服务器使用更多处理器或者更多超线程
优点:
通过升级硬件和网络吞吐能力来实现,不需要改变应用架构,被认为是最简单的短期伸缩方案
缺点:
达到某个程度后,增加计算能里需要更多的成本
垂直伸缩有物理极限
操作系统的设计或者应用程序自身制约着垂直伸缩最多只能达到某个性能点
水平伸缩
定义:
通过增加服务器提升计算能力的一类架构方法
优点:
可以克服垂直伸缩带来的单位计算成本随计算能力增加而迅速飙升的问题
不会遇到单台服务器的极限
互联网架构演化
STEP0: 最简单的应用架构
STEP1: 应用和数据分离
STEP2: 应用缓存改善系统性能
STEP3: 应用服务器集群提升并发处理能力
STEP4: 数据库读写分离
STEP5: 使用反向代理和CDN加速网站响应
STEP6: 分布式文件系统、分布式数据库系统
STEP7: 使用NoSQL和搜索引擎
STEP8: 业务拆分
STEP9: 微服务及中台化
STEP10: 大数据与智能化
互联网架构模式
分层:将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,通过上层对下层依赖和调用组成一个完整的系统。
分割:在纵向方面(根据功能和服务)对软件进行切分,有助于软件的开发和维护,也方便不同模块的分布式部署,提高系统的并发处理能力和功能扩展能力。
分布式:
分布式应用和服务
分布式静态资源
分布式数据和存储
分布式计算
集群:多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。
缓存:将数据存放在距离计算最近的位置以加快处理速度
CDN
反向代理
本地缓存
远程缓存
异步: 将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方式进行协作。作用于系统解耦。
提高系统可用性
加快网站响应速度
消除并发访问高峰
冗余:冗余服务器,冗余数据备份。用于容灾。
自动化: 保证网站在无人值守的情况下可以正常运行。
安全
互联网系统架构核心要素
高性能
高可用:主要手段是冗余
可伸缩:标准是是否可以用多台服务器构建集群,是否容易向集群中添加新服务器
可拓展:关注系统的功能需求,新增业务时,不需要或者需要很少改动既有功能。不同产品之间很少额偶合。主要手段是事件驱动架构和分布式服务。
安全:标准是针对现存和潜在的各种攻击和窃密手段,是否有可靠的应对策略。
互联网架构技术
总览
前端架构
APP及Web开发技术
浏览器及HTTP优化技术
CDN
动静分离
图片服务
反向代理
DNS
网关及应用层架构
网关架构
负载均衡
动态页面静态化
业务拆分
服务层架构
微服务架构
分布式消息队列
分布式缓存
分布式一致性(锁)服务
存储层架构
分布式文件
分布式关系数据库
NoSQL数据库
后台架构
大数据平台
搜索引擎
推荐引擎
数据仓库
运维与安全
数据采集与展示
数据监控与报警
攻击与防护
数据加密与解密
评论