写点什么

架构师训练营 04 周 -- 学习总结

用户头像
骏马
关注
发布于: 2020 年 10 月 10 日



系统架构:系统技术与方案

  1. 互联网应用面对的挑战

  • 高并发、大流量

  • 高可用:7*24小时不间断服务

  • 海量数据:存储管理海量数据

  • 用户分布广泛、网络情况复杂:提供全球服务

  • 安全环境恶劣:互联网的开放性,使其易受攻击

  • 需求变更快,发布频繁:发布频率高,以周为时间单位发布

  • 渐进式发展:好的互联网产品都是慢慢运营出来的

  1. 应对高并发挑战的两个技术方向

a. 垂直伸缩

  • 升级硬件和网络吞吐能力

  • 最简单的短期伸缩性方案

  • 缺点:

  • 有物理极限

  • 到达某一点后,成本增加快速

b. 水平伸缩

  • 增加服务器数量,以提升计算能力

  • 不会遭遇单台服务器的极限



分布式架构演化

  1. 互联网架构演化

a. 第0阶段

  • 主要目的是,试探用户反映,快速实现和快速改变

  • 架构简单,都放在一个服务器上

  • 架构图:

b. 第1阶段:应用数据分离

  • 随着用户的增加,单台服务的计算能力无法满足需求

  • 解决方法是,增加服务器,组件部署在不同的服务器上,分摊计算压力

  • 架构图



c. 第2阶段:使用缓存改善系统性能

  • 随着用户和数据量的增加,单次数据查询的时间变长,影响了用户体验;同时数据库访问压力较大。

  • 解决方法是,引入缓存,提高性能,缓解数据库压力

  • 缓存有两种

1) 本地缓存

2) 分布式缓存

  • 架构图

d. 第3阶段:使用应用服务器集群,改善系统的并发处理能力

  • 用户数量进一步增加,并发量加大,单台应用服务器吞吐量不够,无法及时响应用户请求。

  • 解决方法是,应用程序为无状态服务,并建立应用程服务器集群

  • 架构图



e. 第4阶段:数据库读写分离

  • 当应用中有大量的读操作,并且这些数据无法缓存的时候,这些请求都会落在数据库上,同时所有的写请求也会需要访问数据库,这时单个数据库会成为瓶颈,需要提升数据库处理能力

  • 解决方法是,数据库的读写分离,读操作到一个数据库,写操作到另一个数据库,读写数据库之间通过主从复制同步数据

  • 架构图



f. 第5阶段:使用反向代理和CDN加速网站响应

  • 如果网页中有大量的静态资源,同时用户分布广泛,为了提升用户体验,可以将静态资源和动态资源分开,实现动静分离。

  • 实现方法是,引入反向代理和CDN,使得只有少部分的用户请求到达负载均衡和应用服务器

1) CDN:放在网络运营商机房的缓存服务器,缓存静态资源,将静态资源放在离用户近的地方

2) 反向代理服务器:缓存用户请求

  • 架构图:



g. 第6阶段: 使用分布式文件系统和分布式数据库系统

  • 当数据量巨大(TB级以上数据),增长很快的时候,单个关系型数据库无法存储这么多的数据。

  • 解决方法是,引入分布式数据库,数据分片存储到多个服务器上

  • 架构图



h. 第7个阶段:使用NoSQL和搜索引擎

  • 数据量变大,存储的问题解决,但是查询效率和速度又成为新的问题。

  • 解决方法是,引入nosql数据库做热数据查询,搜索引擎做全文检索,这样可以提高查询速度,并支持复杂的查询。

  • 架构图



i. 第8个阶段:业务拆分

  • 业务种类繁多并且复杂,对于计算资源的需求不一样。而且每个业务需要有专门的团队开发测试运维。单个应用程序将业务耦合在一起,不适合团队协作开发。

  • 解决方法,拆分业务,解耦合

  • 架构图:

j. 第9个阶段:微服务及中台化

  • 进一步拆分业务,发现业务的独立性,实现团队的小型化。

  • 同时,业务拆分后,有部分业务是可以重用的,比如消息推送,用户管理等

  • 解决方法是,微服务和中台化,实现敏捷开发,解决服务重用的问题,避免重复实现。

  • 架构图



k. 第10个阶段:大数据与智能化

  • 当数据积累到一定的数量级,如何分析和应用这些数据为客户服务,为公司带来利润,成为新的问题,

  • 解决方法是,运用大数据和AI,实现客户行为分析,商品推荐等服务。

  • 架构图:



架构模式与要素

  1. 架构模式:被很多互联网应用重复使用的解决方案

  • 分层架构:横向切分,每层负责较为单一的职责,上层依赖下层,比如应用层,数据访问层等

  • 分割架构模式:按业务纵向切分,包装成高内聚低耦合的模块单元,便于开发维护,和部署。

  • 分布式:分层和分割后的模块独立部署。

  • 集群:对访问集中的模块集群化部署。多台服务器构成一个集群,通过负载均衡设备对外提供服务

  • 缓存:将数据放在距离计算最近的地方,是改善性能的第一手段

  1. CDN

  2. 反向代理

  3. 本地缓存

  4. 远程缓存

  • 异步:业务操作的不同阶段之间共享数据,而不是直接调用方法,降低模块耦合

  • 冗余:保证服务的连续性,以及保证数据不会丢失

  • 自动化:自动化运维保证无人值守的情况下应用正常运行

  • 安全性:加解密,认证,垃圾和敏感信息过滤等安全解决方案



  1. 核心要素 -- 互联网架构的衡量标准

  • 高性能 -- 非功能需求

  1. 任何架构都必须考虑性能问题

  2. 性能问题是系统架构升级优化的触发器

  3. 从客户端到数据库,从代码到机房部署,各个环节都有性能优化方案

  • 高可用 -- 非功能需求

  1. 分布式系统必然会出现服务器宕机。要保证服务器宕机时,服务仍然可用。

  2. 高可用的主要手段:冗余(应用服务器冗余,数据库服务器冗余等等)

  3. 是分布式架构设计的硬指标

  • 可伸缩性 -- 非功能需求

  1. 通过添加服务器来满足用户并发访问需求,和数据存储的增长需求

  2. 需要很容易的向集群中添加服务器,并保证新的服务器提供同样的服务。

  3. 与分布式数据库相比,NoSQL数据库伸缩性更好(更容易添加服务服务器)。

  • 可扩展性 -- 功能需求

  1. 为了是架构能有快速响应需求变化

  2. 添加新的功能,而对现有产品透明无影响

  3. 主要手段:事件驱动架构和微服务架构

  • 安全 -- 功能需求

  1. 保护系统,保护数据

  2. 对各种攻击手段,都要有应对策略



  1. 互联网架构总览

  • 前端架构

  • App 及 Web 开发技术

  • 浏览器及 HTTP 优化技术

  • CDN

  • 动静分离

  • 图片服务

  • 反向代理

  • DNS

  • 网关及应用层架构

  • 网关架构

  • 负载均衡

  • 动态页面静态化

  • 业务拆分

  • 服务层架构

  • 微服务框架

  • 分布式消息队列

  • 分布式缓存

  • 分布式一致性(锁)服务

  • 存储层架构

  • 分布式文件

  • 分布式关系数据库

  • NoSQL 数据库

  • 后台架构

  • 大数据平台

  • 搜索引擎

  • 推荐引擎

  • 数据仓库

  • 运维和安全

  • 数据采集与展示

  • 数据监控与报警

  • 攻击与防护

  • 数据加密与解密



发布于: 2020 年 10 月 10 日阅读数: 35
用户头像

骏马

关注

还未添加个人签名 2020.01.15 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 04 周 -- 学习总结