本周主要讲述互联网架构面临的挑战以及发展的几个阶段,以及架构模式,架构核心要素,偏理论
1.互联网架构面临的挑战
1.1:高并发,大流量(需要面对高并发用户,大流量访问)
1.2:高可用(系统7×24小时不间断服务)
1.3:海量数据(需要存储、管理海量数据)
1.4:用户分布广泛,网络情况复杂(许多大型互联网都是为全球用户提供服务的,用户分布范围广,)
1.5:安全环境恶劣(站更容易受到攻击)
1.6:需求快速变更,发布频繁(满足用户需求,其产品发布频率极高)
1.7:渐进式发展(乎所有的大型互联网站都是从一个小网站开始,渐进的发展起来的)
2.应对方式:
2.1:垂直伸缩(加配置,不需要改架构,最快速的解决紧急问题,性价比低,太贵,有极限)
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:分布式
对于大型网站,分层和分割的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着解决同样的问题可以使用更多的计算机,计算机越多,CPU、内存、存储资源也就越多,能够处理的并发访问和数据量就越大。• 分布式应用和服务• 分布式静态资源• 分布式数据和存储• 分布式计算
4.4:集群
使用分布式虽然已经将分层和分割后的模块独立部署,但是对于用户访问集中的模块,比如网站的首页,还需要将独立部署的服务器集群化,即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务
4.5:缓存
缓存就是将数据存放在距离计算最近的位置以加快处理速度。缓存是改善软件性能的第一手段,现代 CPU 越来越快的一个重要因素就是使用了更多的缓存,在复杂的软件设计中,缓存几乎无处不在。大型网站架构设计在很多方面都使用了缓存设计。• CDN• 反向代理• 本地缓存• 远程缓存
4.6:异步
计算机软件发展的一个重要目标和驱动力是降低软件耦合性。事物之间越少直接关系,那么就越少被彼此影响,越可以独立发展。大型网站架构中,系统解耦合的手段除了前面提到的分层、分割、分布等手段,还有一个重要手段是异步,就是将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作。• 提高系统可用性• 加快网站响应速度• 消除并发访问高峰
4.7:冗余
互联网应用需要7×24小时连续运行,但是服务器总有可能会出现故障,特别是服务器规模比较大的时候,服务器宕机是必然事件。要想保证在服务器宕机的情况下网站依然可以继续服务,数据不会丢失,就需要一定程度的服务器冗余运行,数据冗余备份。
4.8:自动化
在无人值守的情况下网站可以正常运行,一切都可以自动化是网站的理想状态。目前互联网的自动化架构设计主要集中在运维方面。
4.9:安全
互联网的开放特性使得其从诞生起就面对巨大的安全挑战,网站在安全架构方面也积累了许多模式:通过密码和手机校验码进行身份认证;登录、交易等操作需要对网络通讯进行加密,网站服务器上存储的敏感数据如用户信息等也进行加密处理;为了防止机器人程序滥用网络资源供给网站,网站使用验证码进行识别;对于常见的用于攻击网站的XSS 攻击,SQL 注入,进行编码转换等相应处理;对于垃圾信息、敏感信息进行过滤;对转账交易等重要操作根据交易模式和交易信息进行风险控制