写点什么

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

用户头像
Arthur
关注
发布于: 2020 年 07 月 02 日

0、本周感想

  • 本周学习到互联网系统架构中遇到的问题,解决思路和手段,为后续工作中解决系统问题提供了很多有效的建议;

  • 更重要的是 系统设计的架构模式,每一个模式描述了一个在我们周围不断【重复发生】的问题该问题解决方案的核心;

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

  • 互联网架构模式就是要试图描述那些为解决互联网系统高性能,高可用,易扩展,可伸缩和安全等目标;


互联网架构主要遇到的问题

1、复杂性 --> 分层,分割;业务逻辑越来越复杂;

2、高并发请求;

3、高并发读;

4、高并发写;

1、分层模式

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

一般软件系统的分层架构:


1-1、分层的好处

  • 无需过多了解其他层次的细节,可以将某一层作为一个【整体】理解;

  • 可以替换某层的具体实现,只要前后提供的服务相同即可;

  • 可以将层次间的依赖降到最低;

  • 分层有利于标准化工作;

  • 一旦构建好某一层,就可以用它为很多上层服务提供支持;


1-2、分层的缺陷

  • 层次不能封装所有东西,有时会带来级联修改;例如增加一个数据域,就必须修改数据库中的字段,还必须在各层之间做修改;

  • 过多的层次影响性能;


2、分割模式

【分层】是软件在【横向】方面的切分,那么【分割】就是【纵向】对软件进行切分;


系统越大,功能越复杂,服务和数据处理的种类也越多,将这些不同的功能和服务分割开来,包装成【高内聚低耦合】的模块单元,这样做的好处有:

  • 有助于软件的开发和维护;

  • 便于不同模块的分布式部署,目的是提高网站的【并发处理能力】和【功能扩展能力】


常用的分割依据:按【业务】进行拆分;

利用分层和分割后,将功能和层次拆分成一个个小模块,各个模块内部由对应的人进行开发;

DDD 是系统分割的主要设计方法;


分割模式的软件,以电商为例(不一定准确):

以阿里的电商体系为例,产品层包含了 淘宝、天猫 等产品,而这些产品都有 会员、订单、商家、物流等功能,根据不同的业务功能对系统进行分割;


3、分布式

对于大型网站,分层和分割的主要目的是为了切分后模块便于【分布式部署】,即将不同模块部署在不同的服务器上,通过远程调用协同工作。

分布式意味着解决同样问题,可以使用更多的计算机,计算机越多,CPU、内存、硬盘资源也就越多,能处理的并发访问和数据量就越大;

分布式系统可以分为:

  • 分布式应用和服务;

  • 分布式静态资源;

  • 分布式数据和存储;

  • 分布式计算;


4、集群

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


5、缓存

缓存就是讲数据存放在【距离计算最近】的位置以加快处理速度(降低响应时间和提升并发访问)

缓存是改善软件性能的第一手段,在复杂软件设计中,缓存几乎无处不在;

大学网站架构设计在很多方面都使用缓存设计;


缓存的种类:

  • CDN;

  • 反向代理;

  • 本地缓存;

  • 远程缓存;


6、异步

软件发展的一个重要目标和驱动力就是【降低软件耦合性】。

事物之间越少直接关系,就越少被彼此影响,越可以独立发展;

异步就是将一个业务操作分成多个阶段,每个阶段之间通过【共享数据】而不是直接调用方法进行协作;

同步处理是【强耦合】,如果服务端系统出现问题,通过同步方式造成请求超时或失败,导致业务处理异常;


异步的好处有:

  • 提高系统可用性,因为对外依赖变少,外部服务宕机对系统本身影响较小;

  • 加快网站响应速度,通过异步方式,与其他系统的交互时间变短,从而提升整个网站的速度;

  • 消除并发访问高峰;在业务突然出现高峰,如电商中的秒杀或抢券,依赖的服务或数据库都可能出现瓶颈,通过异步方式可以降低系统压力;


  • 常见的异步技术实现方式:

  • Java 多线程异步处理;

  • 消息队列;


7、冗余

背景:

互联网应用需要 7X24 小时连续运行,但是服务器总有可能出现故障,特别是服务器规模较大时,服务器宕机时必然事件;

要想保住服务器在宕机情况下系统依然可以服务,数据不丢失,就需要一定城府的服务器冗余运行,数据冗余备份(如 数据库主从复制,如果主机挂了,从机可以代替主机继续提供服务);

这样做的目的是提高系统的可用性;


8、自动化

自动化运维;


总结

提升系统高性能的方法

1、缓存;

2、集群;

3、异步调用;

4、分布式数据库和分布式文件系统;


提供系统高可用的方法:

1、冗余;

2、数据层主从复制;


用户头像

Arthur

关注

还未添加个人签名 2018.08.31 加入

还未添加个人简介

评论

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