写点什么

第四周总结

用户头像
fmouse
关注
发布于: 2020 年 10 月 11 日

带着问题去学习本周的内容,首先提出了互联网系统面临的问题与挑战

  • 高并发,大流量

  • 高可用

  • 海量数据

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

  • 安全环境恶劣

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

  • 渐进式发展


应对高并发两个解决方案,垂直伸缩和水平伸缩


分布式架构也是一步一步演化来的,课程中举例说明了具体演化过程。

单台应用服务器 -> 应用数据分离 -> 使用缓存改善系统性能 -> 应用服务器集群改善系统的并发处理能力 -> 数据库读写分离 -> 使用反向代理和 CDN 加速网站响应 -> 使用分布式文件系统和分布式数据库系统 -> 使用 NoSQL 和搜索引擎 -> 业务拆分 -> 微服务及中台化 -> 大数据与智能化


当然在解决这些问题中总结出来了架构模式。

  1. 分层

分层将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层依赖和调用组成一个完整的系统

  1. 分割

分割是在纵向方面对软件进行切分,将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护;另一方面,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力

  1. 分布式

分层和分割的一个主要目的是为了切分后的模块便于分布式部署,即将不同模块部署在不同的服务器上,通过远程调用协同工作。分布式意味着解决同样的问题可以使用更多的计算机,计算机越多,CPU、内存、存储资源也就越多,能够处理的并发访问和数据量就越大。

  • 分布式应用和服务

  • 分布式静态资源

  • 分布式数据和存储

  • 分布式计算

  1. 集群

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

  1. 缓存

缓存就是将数据存放在距离计算最近的位置以加快处理速度。缓存是改善软件性能的第一手段。

  • CDN

  • 反向代理

  • 本地缓存

  • 远程缓存

  1. 异步

计算机软件发展的一个重要目标和驱动力是降低软件耦合性。事物之间越少直接关系,那么就越少被彼此影响,越可以独立发展。异步就是将一个业务操作分成多个阶段,每个阶段之间通过共享数据而不是直接调用的方法进行协作。

  • 提高系统可用性

  • 加快网站响应速度

  • 消除并发访问高峰

  1. 冗余

要想保证服务器宕机的情况下网站依然可以继续服务,数据不会丢失,就需要一定程度的服务器冗余运行,数据冗余备份。

  1. 自动化

无人值守的情况下正常运行,一切都可以自动化是网站的理想状态。目前互联网的自动化架构设计主要集中在运维方面。

  1. 安全

互联网的开放特性使其面对巨大的安全挑战

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

  • 登陆、交易等操作需要对网络通讯进行加密

  • 服务器上存储的敏感数据进行加密处理

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

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

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

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

架构的五个核心要素

  • 高性能

  • 高可用

  • 可伸缩

  • 可扩展

  • 安全


最后课程中用三个案例进一步了解架构的演进,以及演化过程中具体使用的技术方案,同时也了解到如何做技术选型和技术架构决策。


感想

  1. 听课的时候感觉这些都了解都知道,写作业的时候一下子被问起来有点懵。

  2. 到目前为止感觉课程偏理论,每个理论里面包含的技术太多了。


用户头像

fmouse

关注

还未添加个人签名 2018.08.07 加入

还未添加个人简介

评论

发布
暂无评论
第四周总结