架构师训练营第 4 周学习总结
4.1 系统架构:系统技术挑战与方案
互联网架构面临的挑战:
高并发,大流量
高可用
海量数据
用户分布广泛,网络情况复杂
安全环境恶劣
需求快速变更,发布频繁
渐进式发展
应对高并发挑战:
垂直伸缩:增强单一服务器的功能。通过升级硬件和网络吞吐能力可以实现垂直伸缩。
成本和花费
物理和操作系统及应用程序的限制
水平伸缩:通过增加服务器提升计算能力
应对互联网系统的渐进式发展的要求
分布式技术的关键技术方案
4.2 分布式架构演化
互联网架构演化
0:最简单的互联网应用架构 - 单一应用服务器(应用程序,文件系统,数据库)
1:应用和数据分离 - 应用程序,文件系统,数据库部署在三台服务器
2:使用缓存改善系统性能 - 本地缓存和远程分布式缓存
3:使用应用服务器集群改善系统的并发处理能力 - 通过负载均衡调度服务器将请求分发给不同的应用服务器
4:数据库读写分离 - 使用主从分离的方式,设置主服务器和从服务器
5:使用反向代理和CDN加速网站响应 - CDN是指内容分发网络,是部署在网络运营服务商机房里的服务器。反向代理服务器主要承担缓存的职责
6:使用分布式文件系统和分布式数据库系统
7:使用NoSQL和搜索引擎 - 提高数据的存储能力和查询速度
8:业务拆分 - 可以通过异步的消息队列通信
9:微服务及中台化 - 关键的公用服务由微服务来提供
10:大数据与智能化
4.3 架构模式与要素
架构模式
互联网架构模式就是试图去描述那些为解决互联网系统高性能、高可用、易扩展、可伸
缩、安全等目标,被很多互联网应用重复使用的一些解决方案,这些解决方案是互联网
软件系统的重要组成部分。
分层
视图层,应用层,服务层,基础设施层,存储层
不同的层次部署在不同的服务器集群上,实现一个分布式的分层架构。
分割
分割是在纵向方面对软件进行切分
分割以后的功能模块也部署在不同的服务器上
分布式
分布式意味着解决同样的问题,可以使用更多的计算机。计算机越多,CPU,内存,存储资源也越多。能够处理的并发访问和数据量也越来越大。
集群
多台服务器部署成相同的应用,构成一个集群,通过负载均衡,共同对外提供服务。
集群是将相同功能的多台服务器构成一个集群。这个集群里每一台服务器承担的职责是一样的。
缓存
CDN
反向代理
本地缓存
远程缓存
异步
将一个业务操作分成多个阶段,每个阶段通过共享数据而不是直接调用的方式进行操作。
主要的手段就是消息队列。一个应用当作消息的生产者,将数据通过消息发送给消息队列。而另一个应用当作消息的消费者,从消息队列中获取数据,去消费消息。
没有直接调用,没有耦合,通过共享数据,完成依赖调用,完成业务处理流程。
通过异步的方式,可以提高系统的可用性,加快网站的响应速度。当访问并发高峰的时候,系统处理不过来,消息就会缓存(Buffer)在消息队列里,不会立即处理,缓解了高并发的压力。
冗余
应用部署在多台服务器上,一台服务器宕机了,其他可以提供服务。
数据备份在多台服务器上,一台硬盘损坏了,数据丢失了,其他还有备份。
自动化
一切都可以自动化,是互联网应用的理想状态。
主要应用在运维方面,自动监控,自动部署,自动剔除问题服务器,自动做集群扩容。
安全
身份识别,验证
网络通讯加密
敏感数据加密
防止XSS,SQL注入
垃圾信息过滤
互联网系统架构核心要素
高性能
用户无法忍受一个响应缓慢的应用。
性能指标有很多种,TPS响应时间,并发数,性能计数器等。
系统性能优化是互联网系统设计的一个关键点。
高并发访问必然导致系统资源不足,需要优化系统性能,提升系统在高并发情况下的响应特性。
高可用
系统高可用的主要手段是冗余
对于互联网应用,高可用是一个硬指标,也就是缓冲余地比较低的指标。
可伸缩
是否容易向集群添加服务器
是否提供无差别的服务
分布式关系数据库做伸缩比较困难,成本较大。NoSQL伸缩性更友好。
可扩展
关注的是功能性需求
主要手段是事件驱动架构和分布式微服务
安全
互联网架构技术一览
前端架构
网关及应用层架构
服务层架构
存储层架构
后台架构
运维与安全
评论