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

用户头像
郑凯元
关注
发布于: 2020 年 10 月 18 日

互联网系统所面对的挑战

  • 高可用,大流量:面对高并发用户,大流量访问

  • 高可用:系统7X24小时不间断服务器

  • 海量数据:需要存储、管理海量数据

  • 用户分布广泛,网络状况复杂

  • 安全环境恶劣

  • 需求快速变更,发布频繁

  • 渐进式发展

其中核心挑战:高并发



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

垂直伸缩:

增强单一服务器功能,增强单一服务器计算能力,可在基本不用修改系统代码结构基础上增加系统性能



  • 通过RAID(独立冗余磁盘阵列)增加I/O吞吐能力

  • 通过切换SSD(固态硬盘)改善I/O访问速度

  • 通过增加内存减少I/O操作

  • 通过升级网络接口或者增加网络接口提高网络吞吐能力

  • 更新服务器使用更多处理器或者更多超线程

缺点:
  • 达到某个程度后,增加计算能力需要的更多的花费

  • 有物理极限

  • 操作系统的设计或者应用程序自身制约着垂直伸缩最多只能达到某个点



水平伸缩

通过增加服务器提升计算能力,水平伸缩可以克服垂直伸缩带来的单位计算成本随计算 能力增加而迅速飙升的问题,总是可以增加更多服务器,这样,就不会像垂直伸缩那样遭遇到单台服 务器的极限

互联网架构模式

每一个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心,可一次又一次的使用该方案而不必做重复工作

模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用

互联网架构模式就是试图去描述那些为解决互联网系统高性能、高可用、易扩展、可伸缩、安全等目标,被很多互联网应用重复使用的一些解决方案,这些解决方案是互联网软件系统的重要组成部分

分层

分层是企业应用系统中最常用的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完成的系统

分割

在纵向方面对软件进行切分

系统越大,功能越复杂,服务和数据处理的种类也越多,将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护;另一方面,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力

分布式

将不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着解决同样的问题可用使用更多的计算机,计算机越多,CPU、内存、存储资源也就越多,能力处理的并发访问和数据量就越大

  • 分布式应用和服务

  • 分布式静态资源

  • 分布式数据和存储

  • 分布式计算

集群

使用分布式虽然已经将分层和分割后的模块独立部署,但是对于用户访问集中的模块,比如网页的首页,还需要将独立部署的服务器集群化,即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务

缓存

缓存是将数据存放在距离计算最近的位置以加快处理速度。缓存是改善软件性能的第一手段,现代CPU越来越快的一个重要因素就是使用了更多的缓存,在复杂的软件设计中,缓存几乎无处不在。大型网站架构设计在很多方面都使用了缓存设计

  • CDN

  • 反向代理

  • 本地缓存

  • 远程缓存

异步

计算机软件发展的一个重要目标和驱动力就是降低软件耦合性。事物之间越少直接关系,就越少被彼此影响,越可以独立发展

异步是将一个业务操作分层多个解决,每个阶段之前通过共享数据而不是直接调用的方式进行协作

  • 提高系统可用性

  • 加快系统响应速度

  • 消除并发访问高峰

冗余

服务器冗余运行,数据冗余备份以保证在服务器宕机的情况下网站依然可继续服务

自动化

运维自动化,测试自动化

安全

  • 通过密码和手机校验码进行身份验证

  • 登陆、交易等操作需要对网络通讯进行加密,网站服务器上存储的敏感数据如用户信息等也进行加密处理;

  • 为了防止机器人程序滥用网络资源,网站使用验证码进行识别

  • 对常见的用于攻击网站的XSS攻击,SQL注入,进行编码转换等相应处理

  • 对垃圾信息、敏感信息进行过滤

  • 对转账交易等重要操作根据交易模式和交易信息进行风险控制



衡量一个系统的架构设计的互联网系统架构核心要素

高性能

高可用

主要手段:冗余

可伸缩

通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求

衡量架构伸缩性的主要指标就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制

可扩展性

直接关注系统的功能需求。互联网应用快速发展,功能不断扩展,如何设计系统的架构使其能够快速响应需求变化,是系统可扩展架构的主要目的

衡量系统架构扩展性好坏的主要标准是在系统增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。不同产品之间是否很少耦合,一个产品改动对其他产品无影响,其他产品和功能不需要受牵连进行改动

主要手段:事件驱动架构和分布式服务

安全

衡量标准是针对现存和潜在的各种攻击和窃密手段,是否有可靠的应对策略



互联网技术



前端架构

  • APP及Web开发技术

  • 浏览器及HTTP优化技术

  • CDN

  • 动静分离

  • 图片服务

  • 反向代理

  • DNS

网关及应用层架构

  • 网关架构

  • 负载均衡

  • 动态页面静态化

  • 业务拆分

服务层架构

  • 微服务框架

  • 分布式消息队列

  • 分布式缓存

  • 分布式一致性服务

存储层架构

  • 分布式文件

  • 分布式关系数据库

  • NoSQL数据库

后台架构

  • 大数据平台

  • 搜索引擎

  • 推荐引擎

  • 数据仓库



运维与安全

  • 数据采集与展示

  • 数据监控与报警

  • 攻击和防护

  • 数据加密和解密

用户头像

郑凯元

关注

还未添加个人签名 2018.04.28 加入

还未添加个人简介

评论

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