写点什么

训练营第四周 学习总结

用户头像
Yangjing
关注
发布于: 2020 年 10 月 11 日
训练营第四周 学习总结

本周主要学习了主流的互联网架构,架构都不是一触而就的,是不断地演化而来的。每一次的演化都是为了解决当前出现的问题,为了更好的支持业务的发展。通过学习几个案例中系统架构的演化过程,进一步理解了不同架构的原因。

互联网系统架构

特点-分布式系统架构

挑战

  • 高并发用户、大流量访问

  • 7x24 小时高可用,升级软件代码、升级硬件不能停机

  • 海量数据,存储和管理海量数据

  • 用户分布广泛、网络情况复杂, 多数据中心架构

  • 安全环境恶劣

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

  • 渐进式发展



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

大量用户同时提交请求、访问系统出现高并发。内存空间、CPU处理时间、网络带宽

  • 垂直伸缩。增强单一服务器的处理能力,包括升级硬件和网络吞吐能力实现垂直伸缩,满足对系统资源消耗的请求。更快CPU、更大硬盘。由于不改变应用架构,所以通常被认为是最简单的短期伸缩方案。

缺点:

开始时成本增加时线性的,这个增加是线性的。达到某个程度后,每单位成本价格快速增长。

垂直伸缩有物理极限,互联网应用几乎没有极限

操作系统、应用程序自身制约垂直伸缩

  • 水平伸缩。增加服务器来提升计算能力的架构方法,构成集群提供服务。

成本增加是线性的。水平伸缩是分布式服务的关键点



分布式架构演化

  • 第零阶段,单体服务器。应用程序、数据库、文件系统都部署在单一的应用服务器上。

  • 第一阶段,应用数据分离。应用服务器、文件服务器(mount一个远程的文件系统)、数据库服务器分离(配置一个ip连接)。拆分成3台服务器。技术成本低。思路是增加服务器,使一部分计算移动到其他服务器上。

  • 第二阶段,使用缓存改善系统性能。分布式远程缓存或本地缓存,缓存速度快于数据库和硬盘。

  • 第三阶段,单一应用服务器满足不了高并发的要求,需要使用应用服务器集群改善系统的并发处理能力。使用负载均衡调度服务器。

  • 第四阶段,数据库读写分离。通过数据库主从架构,

  • 第五阶段,使用反向代理和 CDN 加速网站响应。

CDN 服务器,部署在运营商的服务器机房中,通常是离访问者比较近的网络,速度更快,使得应用服务器压力更小。

通常是静态数据,图片、css、js

反向代理服务器,也是一个静态缓存服务器,没有时才会请求到数据中心,通过负载均衡到达应用服务器

  • 第六阶段,使用分布式文件系统和分布式数据库。

  • 第七阶段,使用 NoSQL 和搜索引擎。使用搜索引擎进行模糊查找、复杂查询;NoSQL 更好支持水平伸缩。

  • 第八阶段,业务拆分。不同服务之间通过 RPC、http、消息队列进行服务之间的通信。

  • 第九阶段,微服务及中台化。公用的服务拆分出来给应用提供服务。微服务是现在主流的架构模式。服务之间关系、设计、建模。

  • 第十阶段,大数据与智能化。



架构模式与要素

架构模式,每一个模式描述了一个不断重复发生的问题及该问题的解决方案的核心。这样就能重复使用该方案而不必做重复的工作。

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

互联网的架构模式就是哪些去解决高性能、高可用、易扩展、可伸缩、安全等目标的可重复使用的一些解决方案。



  • 分层

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

常见分层架构:视图层 -> 应用逻辑层 -> 公用服务层 -> 基础设施层 -> 存储层

不同的层次可以部署在不同的服务器集群上,实现一个分布式的分层架构

  • 分割

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

  • 分布式

将不同模块部署在不同的服务器上,

  • 集群

将相同服务功能的多台服务器集群化,通过负载均衡设备共同对外提供服务,每台服务器承担的功能是一样的。

  • 缓存

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

CDN、反向代理(代理数据中心的请求)、本地缓存、远程缓存

  • 异步

降低软件耦合性是软件发展的目标和驱动力,直接联系越少,越可以独立发展。将一个业务操作拆分成多个阶段,每个阶段之间通过共享数据而不是直接调用方法进行协作。

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

  • 冗余

保证在服务器宕机的情况下,服务器和数据的冗余进行备份,提供高可用

  • 自动化

避免人维护系统带来的问题,目前互联网的自动化架构设计主要集中在运维方面。自动监控、部署、剔除不可用服务

  • 安全

密码和手机验证码进行身份认证;登录、交易操作网络通讯进行加密;敏感用户信息进行加密存储;使用验证码识别机器人;编码转换避免 XSS 攻击、SQL 注入;过滤垃圾信息、敏感信息;对转账交易等重要操作根据交易模式和交易信息进行风险控制。



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

  • 高性能。优化性能的手段,从用户端、数据库、代码、机房部署,影响用户请求的所有环节都可以进行。TPS 性能指标,行业平均标准

  • 高可用。服务器本身不保证高可用,前提是必然会出现服务器宕机,在此基础上需要提供可用的系统服务。硬指标,必须要面对的问题

  • 可伸缩性。是否可以容易添加的服务器组成集群来解决不断上升的用户并发访问压力和不断增长的数据存储要求,集群中可容纳的总的服务器数量是否有限制。NoSQL 数据库发展的关键原因

  • 可扩展性。功能性需求。可扩展性的主要手段是事件驱动架构和分布式服务

  • 安全。如何面对各种攻击和窃密手段。



用户头像

Yangjing

关注

还未添加个人签名 2017.11.09 加入

还未添加个人简介

评论

发布
暂无评论
训练营第四周 学习总结