系统架构师 week 04 - 互联网架构总结
1. 互联网系统面临的挑战
1.1 面临的挑战
高并发,大流量
面对高并发用户,大流量的访问。Google、微信、天猫双十一活动等
高可用
7x24小时不间断服务。
海量数据
需要存储、管理海量数据。
用户分布广泛,网络情况复杂
用户分布范围广,网络情况千差万别。全球用户、海外建立数据中心。
安全环境恶劣
互联网的开放性,更容易受到攻击。用户密码泄露等问题。
需求快速变更,发布频繁
快速适应市场,满足用户需求,版本发布频率极高。
渐进式发展
不能一开始规划好全部功能和非功能需求,几乎都是从一个小网站开始,逐渐发展起来。
1.2 应对高并发挑战的两个技术方向
1.2.1 垂直伸缩
升级硬件和网络吞吐能力实现垂直伸缩,不需要改变应用架构,为最简单的短期伸缩方案。
例如:使用RAID增加I/O吞吐能力,切换到SSD改善I/O访问速度,增加内存减少I/O操作,升级或增加网络接口提供网络吞吐能力,升级服务器(更多处理器)。
缺点:有物理极限,达到某个程度后,增加计算能力需要更多的花费。应用程序自身制约垂直伸缩所能达到的目标点。
1.2.2 水平伸缩
通过增加服务器提升计算能力的架构方法
可以克服垂直伸缩架构中单位计算能力提升带来的计算成本的飙升。
总是可以增加更多服务器,不会遭遇单台服务器的极限问题。
2. 互联网架构的演化
第〇阶段:最简单互联网用架构
第一阶段:应用数据分类
第二阶段:使用缓存改善系统性能
第三阶段:使用应用服务器集群改善系统并发处理能力
第四阶段:数据库读写分离
第五阶段:使用反向代理和CDN加速网站响应
第六阶段:使用分布式文件系统和分布式数据库系统
第七阶段:使用NoSQL和搜索引擎
第八阶段:业务拆分
第九阶段:微服务及中台化
3. 互联网架构模式
3.1 互联网架构模式概述
模式:是一个不断重复发生的问题及解决该问题的解决方案的核心。关键在于模式的可重复性,即问题的重复性带来解决方案可重复使用。
互联网架构模式:描述为解决互联网系统高性能、高可用、易扩展、可伸缩、安全等目标而被很多互联网应用重复使用的一些解决方案,这些方案也是互联网软件系统重要组成部分。
3.2 分层
横向维度切分,每个部分负责一部分相对单一的职责,通过上层对下层依赖和调用组成系统;
3.3 分割
纵向维度切分,切分不同功能和服务,包装为高内聚低耦合的模块单元,有助于软件开发和维护,各模块可以分布式部署,提高并发处理能和功能扩展能力。
3.4 分布式
分层和分割的主要目的是为了切分后的模板便于分布式部署,不同模块部署不同服务器通过远程调用协同工作。可以使用更多的计算机,处理更大的并发访问量和数据量;
3.5 集群
分布式之后各模块独立部署,单对于集中访问的热点模块,需要将该独立部署的模块集群化,多台服务器部署相同模块构成集群,通过负载均衡设备共同提供对外服务
3.6 缓存
将数据存储在离计算最近的位置以加快处理速度。包括不限于如下缓存:CDN、反向代理、本地缓存、远程缓存。
3.7 异步
将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方式进行协作。以提高系统可用性、加快网站响应速度、消除并发访问高峰。
3.8 冗余
保证服务器宕机的情况下,网站依然可以继续服务,数据不丢失,需要对服务器冗余运行,数据冗余备份。
3.9 自动化
主要集中在运维方面,无人值守的情况下网站正常运行。
3.10 安全
身份校验、密码加密、通讯加密、验证码识别、XSS攻击、SQL 注入、垃圾信息过滤、转账交易风险控制等
4. 互联网系统架构核心要素
4.1 高性能
性能是互联网的一个指标,性能问题几乎无处不在,优化手段也很多:用户端到数据库、代码到机房部署等影响用户请求的所有环节都可以进行优化。
4.2 高可用
主要手段是冗余,应用多台服务器部署同时提供服务,数据存储多台服务器相互备份。
4.3 可伸缩
可以通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和数据增长的存储需求。
主要标准:
是否可以用多台服务器构建集群
是否容易向集群中添加新的服务器
加入新的服务器后是否可以提供和原来的服务器无差别的服务
集群可以容纳的总的服务器数量是否有限制
4.4 可扩展
可扩展性架构直接关注系统功能需求,衡量标准是在系统增加新业务产品是,是否可以实现对现有产品透明无影响。主要手段是事件驱动架构和分布式服务。
4.5 安全
保护系统不受恶意访问和攻击,保护重要数据不被窃取,针对现存和潜在的各种攻击与窃密手段,要有可靠的应对策略。
5. 互联网架构技术一览
5.1 前端架构
主要涉及以下方面:
App及Web开发技术
浏览器及HTTP优化
CDN
动静分离
图片服务
反向代理
DNS
5.2 网关及应用层架构
包括网关架构、负载均衡、动态页面静态化、业务拆分
5.3 服务层架构
微服务、分布式消息队列、分布式缓存、分布式一致性(锁)服务
5.4 存储层架构
分布式文件系统、分布式关系数据库和NoSQL
5.5 后台架构
大数据平台、搜索引擎、推荐引擎、数据仓库
5.6 运维与安全
数据采集与展示、数据监控与报警、攻击与防护、数据加密解密
小结
本周课程从互联网系统面临的挑战为引,介绍了应对高并发挑战的两个技术方向: 垂直伸缩和水平伸缩。回顾互联网架构的演化的每一个阶段应对的问题和解决方案,对互联网架构模式进行了阐述,梳理了当前互联网架构的主要模式:分层、分割、分布式、集群、缓存、异步、冗余、自动化及安全,解释了高性能、高可用、可伸缩、可扩展、安全这5个互联网系统架构核心要素;最后对互联网架构技术进行了简要描述。后面的课程应该会针对互联网架构核心要素和主要技术进行详细的说明。
评论