互联网系统架构——总结(架构师训练营 week4)
1.互联网系统面临的挑战
高并发、大流量
高可用:系统 7 x 24小时不间断工作。
海量数据:存储以及管理
用户分布广,网络情况复杂
安全环境恶劣
需求变更快,发布频繁
2.应对高并发挑战的两个技术方向
2.1 垂直伸缩
2.1.1 概述
通过升级硬件和网络吞吐能力来进行垂直伸缩,由于不用改变软件系统架构,所以这也是最简单的短期伸缩方案。
其中硬件可升级的模块如下:
通过使用RAID(独立冗余磁盘阵列)增加 I/O 吞吐能力
通过切换SSD硬盘,提升硬盘的访问速度
通过增加内存,减少 I/O 操作
通过升级网络接口或者增加网络接口提升网络吞吐能力
通过升级服务器使用更多的处理器或者更多超线程
2.1.2 缺点
达到某个程度后,增加计算能力需要更多花费
有其物理极限
操作系统的设计或者应用程序自身制约着垂直伸缩最多只能达到某种程度
2.2 水平伸缩
水平伸缩是指通过增加服务器数量来提升计算能力的一种架构方法,它克服了垂直伸缩带来的单位计算成本随能力增加而迅速飙升的问题;它理论上没有物理极限,可以随需求增加更多的服务器。
3. 互联网架构演化
3.1 第零阶段:最简单的互联网应用架构
应用程序、文件、数据库系统都在一个单体服务器上
3.2 第一阶段:应用数据分离
应用程序、文件系统、数据库系统分别部署在独自的服务器上
3.3 第二阶段:使用缓存改善性能
在原基础上增长了分布式的缓存服务,以减少访问数据库的频次,提高性能
3.4 第三阶段:应用服务器集群,改善系统的并发处理能力
3.5 第四阶段:数据库读写分离,进一步提高访问数据库的性能
3.6 第五阶段:使用反向代理和CDN加速网站响应
3.7 第六阶段:使用分布式文件系统和分布式数据库系统
3.8 第七阶段:使用NoSQL 和搜索引擎
3.9 第八阶段:业务拆分
将应用服务根据业务进行垂直拆分,使系统更小更内聚,提升处理能力
3.10 第九阶段:微服务以及中台化
根据业务拆分后的服务,通过微服务架构组织起来;中台化是指将能够复用的功能模块抽离出来,统一提供其服务
3.11 第十阶段:大数据与智能化
4. 互联网架构模式
4.1 架构模式概述
每个模式描述了我们周遭不断重复发生的问题以及该问题解决方案的核心。这样,我们就不用重复的去处理同样的问题。
互联网架构模式就是试图那些为解决互联网系统高性能、高可用、易扩展、可伸缩、安全等目标,被许多互联网企业重复使用的一些解决方案,这些解决方案是互联网软件系统的重要组成部分。
4.2 分层
分层是企业应用系统中常用的一种架构模式,将系统横向维度切分为几个部分,每个部分负责一部分比较单一的职责,然后通过上层与下层的依赖来组成整个系统。
4.3 分割
分割是指从纵向方面对软件进行拆分。在系统越大的情形时,系统功能越复杂,服务和数据处理的种类也多,将这些不同的功能和服务分割开来,包装成更内聚低耦合的模块单元,这一方面有助于开发和维护,另一方面便于不同模块进行分布式部署,提高并发处理能力和功能扩展能力。
4.4 分布式
对于大型网站,分层和分割的目的就是为了切分后的模块分布式部署,将不同的模块服务部署的不同的服务器上,通过远程调用协作。分布式意味着可以使用更多的服务器,能够处理更多的并发请求。
分布式应用和服务
分布式静态资源
分布式数据和存储
分布式计算
4.5 集群
分布式已将分割的模块单元分布式部署在不同的服务器上,集群就是将分割的模块单元根据需求集群部署多个节点,通过负载均衡设备共同对外提供服务。
4.6 缓存
缓存就是将数据存放在离计算机最近的位置以加快数据访问速度。现代cpu越来越来的一个重要因素就是使用了更多的缓存(L1、L2、L3),在复杂的软件设计里缓存无处不在。
CDN
方向代理
本地缓存
远程缓存
4.7 异步
计算机软件发展的一个重要目标和驱动力是降低软件的耦合性。事物之间越少直接关系,就越少影响彼此,越可以独立发展。异步就是 将一个业务操作分成了多个阶段,每个阶段之间通过共享数据而不是通过方法调用进行协作。
提高系统可用性
加快网站响应速度
消除并发访问高峰
4.8 冗余
互联网系统需要7 x 24 不间断的提供服务,但是服务器总是有可能会出现故障的,所有应用服务就需要准备一定的冗余,系统正常时冗余的系统不提供服务,在系统发生故障后,冗余系统马上顶上。以及数据冗余备份。
4.9 自动化
在无人值守的情况下网站可以正常运行,一切都可以自动化是网站的理想状态。目前主要集中在运维方面。
评论