架构师训练营第 1 期第 4 周学习总结

用户头像
du tiezheng
关注
发布于: 2020 年 10 月 18 日



一、互联网系统的挑战



高并发、大流量

高可用

海量数据

用户分布广泛、网络复杂

安全环境恶劣

需求快速变更、发布频繁

渐进式发展



高并发是最核心的挑战,几乎大部分的挑战都是由高并发引起的。当用户并发量越高是,需要消耗的系统资源越多,如何提供这些资源,如何构建系统,使这些资源有效地整合,为用户提供服务,这就是高并发对系统架构的挑战。



应对高并发的两种解决方法:

1)垂直伸缩:

通过增强单一服务器能力解决高并发的方法。不需要改变架构,是最简单的短期伸缩方案。通过升级硬件和网络吞吐可实现垂直伸缩。

垂直伸缩的缺点:

计算能力的增加和成本增加并不总是线性的。硬件升级有物理极限。操作系统和应用程序本身的复杂性也有极限。

大部分情况下不会使用垂直伸缩,但当某些情况下水平伸缩不能解决问题,会尝试使用垂直伸缩,特别是计算成本处于线性增加的情况。



2)水平伸缩:

通过增加更多服务器来解决高并发的方法。初始阶段水平伸缩成本更高,当过了某个点,垂直伸缩成本急速升高,水平伸缩变得更有优势。水平伸缩架构即分布式系统架构,是互联网架构的关键架构方法。

水平伸缩对架构技术,开发要求提出了更多的挑战。



二、互联网的架构演化



阶段0 单一服务器

应用、数据库、文件部署在单一服务器上



阶段1 应用数据分离

应用、数据、文件各自部署在一台服务器,构成简单集群。

这种架构下,数据、文件不会跟应用程序争用CPU,内存,系统的计算能力,并发处理能力会成倍提升。

这个阶段虽然简单,却代表了互联网系统架构最核心的思路:不断地增加服务器,提升系统处理能力。通过增加服务器,分摊现有系统的计算需求,减轻当前服务器的计算压力,是系统能够处理更高的并发要求,服务更多用户。



阶段2 缓存改善性能

缓存:加快数据访问速度。减少重复计算。减轻数据库访问压力。

系统的访问速度加快,访问压力减小,将提高系统的并发处理能力。



阶段3 应用服务器集群

当系统访问速度加快,将增加应用服务器用户连接数、内存占用,对应用服务器又提出了挑战。

使用应用服务器集群改善并发处理能力,使每台应用服务器分摊一部分的并发请求。



阶段4 数据库读写分离

实现了应用服务器集群,所有应用服务器共同访问同一数据库。虽然缓存承担了部分读操作,但还是有部分读操作和所有写操作由数据库承担,数据库本身速度比较慢,所有应用服务器依赖数据库响应,数据库将成为系统的性能瓶颈。

通过读写分离(主从分离)降低数据库访问压力,主库承担写操作,并同步到从库,从库承担读操作。



阶段5 反向代理和CDN

使用反向代理和CDN加速网站响应速度,减轻系统服务器压力。

大部分静态资源都可以通过CDN加速访问,只有CDN不存在资源才会访问系统数据中心。

系统数据中心最前端服务器是反向代理服务器,反向代理服务器时代里整个机房对外服务的,主要承担的依然是缓存职责。



阶段6 分布式数据库和文件系统

读写分离分开了单库的读写压力,但对并发能力的提升是有限的。整个数据库的存储能力没有提升,每个库数据是一样的,并且写操作只能写到主库。

当数据量巨大时,需要对数据库进行分片处理。每个库存储和承担一部分数据,整个数据库的存储能力和并发处理能力得到成倍提升。



阶段7 NSQL和搜索引擎

数据库对复杂查找支持的不好,操作较慢,通过NSQL和搜索引擎可进一步提高系统的存储能力、查询速度和并发处理能力。



阶段8 业务拆分

应用系统早期功能比较简单,随着功能需求增加,系统业务会变得更加复杂庞大。

对系统进行业务拆分,使得开发维护更加简单,各个服务的扩容更加灵活。



阶段9 微服务和中台化

拆分后的业务,可能会依赖一些相同服务,这些共用服务可拆分出来构建成公共的微服务集群,提供更复杂、更通用的产品调用。各种产品都依赖于微服务,就是所谓微服务中台化。

新产品开发时,只需要依赖中台提供的服务和定制规范,包装产品前端,基础服务由微服务中台提供。

微服务架构是互联网的主要架构模式。



阶段10 大数据和智能化

前面的阶段都是对用户提供统一服务。

大数据和智能化可以根据用户特点提供不同服务。通过大数据分析挖掘,发现用户偏好,内容关联,为不同用户提供个性化内容,从而实现系统智能化。



三、互联网架构模式

互联网架构模式就是为解决互联网系统高并发、高可用、易扩展、可伸缩、安全等目标,被互联网应用重复使用的一些解决方案。



分层

系统在横向维度上分成几个部分,每一层负责完成一部分职责,通过层之间的依赖调用,组成完整的系统。系统的每一层可单独进行分布式部署。

体现分层的设计:MVC 依赖倒置



分割

在纵向方面对系统进行切分,将不同的功能和服务分割包装成高内聚低耦合单元,有助于软件的开发维护,也有助于不同模块的分布式部署,提高系统的并发能力和功能扩展能力。



分布式

分层和分割主要为了切分后便于分布式部署,分布式意味着解决相同问题,可以使用更多计算机,处理更大的并发量和数据量。



集群

分布式已经将分层分割后的模块独立部署,但还需要将具有相同功能的服务器集群化,通过负载均衡设备共同对外服务。



缓存

将数据放在距离计算更近的位置。缓存是改善系统性能的第一手段。

大型系统架构中使用的缓存包括:

CDN 反向代理 本地缓存 远程缓存



异步

大型系统架构中,解耦手段包括:分层、分割、分布式,异步。将一个业务操作分成多个阶段,每个阶段通过共享内存(MQ)方式而不是直接调用方式协作。

异步的其它优势:

提高系统可用性。加快系统响应速度。消除并发访问高峰。



冗余

当服务规模较大时,服务器宕机是必然事件,因此需要添加服务冗余和数据冗余。



自动化

在无人值守下维护系统正常运行。

目前互联网自动化主要在运维方面:监控,部署,扩容



安全



四、互联网架构核心要素



高性能

系统性能是系统架构优化的触发器,任何架构设计都必须考虑带来的性能问题。

性能问题无处不在,优化手段遍布客户端,数据库,代码,部署。影响用户请求的所有环节都可以进行性能优化。

性能指标有多种,并发数、TPS响应时间等等。

随着系统并发提高,性能必然降低,也就需要对系统架构和性能进行不断优化重构。



高可用

高可用主要手段是冗余,应用部署在多台服务器同时提供服务,数据存储在多台服务器相互备份,任何服务器宕机,不会影响系统对外整体可用和数据丢失。

高性能是系统的一个弹性指标,而高可用是系统的一个硬指标,没有缓冲余地。



可伸缩

如何衡量系统的伸缩性:

是否可以用多台服务器构建集群。是否容易向集群添加新的服务器。加入新的服务器是否能提供跟原来无差别的服务。

伸缩性时NSQL数据库强于关系数据库的一个重要方面。



可扩展

其他要素关注非功能性需求,可扩展性关注功能性需求。

系统增加新业务时,对现有产品无影响,不需要或很少改动现有产品,就可将新功能上线。

产品间少耦合,一个产品改动不牵连其他产品。

可扩展架构主要手段:事件驱动架构和分布式,典型代表:微服务架构。



安全



用户头像

du tiezheng

关注

还未添加个人签名 2018.08.16 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第 1 期第 4 周学习总结