《从0开始学架构》-第1部分-架构基础

本文深入探讨了软件架构的基础,包括架构的定义、历史背景和目的。文章强调了高性能、高可用性和可扩展性作为复杂度来源,并详细分析了冗余在实现高可用性中的角色。此外,介绍了架构设计的三个原则:合适原则、简单原则和演化原则,并概述了架构设计流程,如识别复杂度、设计备选方案和评估选择。
摘要由CSDN通过智能技术生成

目录

01架构到底是指什么?

02架构设计的历史背景

03架构设计的目的

04复杂度来源:高性能

单台计算机内部为了高性能带来的复杂度

多台计算机集群为了高性能带来的复杂度

05复杂度来源:高可用

高可用方案的本质

冗余”带来的复杂性

一、计算高可用

二、存储高可用

高可用状态决策

1)独裁式

2)协商式

3)民主式

思考题:高性能和高可用哪个更难?

06复杂度来源:可扩展性

07复杂度来源:低成本、安全、规模

08架构设计三原则

合适原则

简单原则

演化原则

09架构设计原则案例

10架构设计流程:识别复杂度

11架构设计流程:设计备选方案

12架构设计流程:评估和选择备选方案

13架构设计流程:详细方案设计


01架构到底是指什么?

“架构”到底指什么?

 

涉及到的关键概念分析:

 

区别与联系

系统与子系统

系统

系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。

关键点:关联、规则、能力

 

子系统

模块与组件

  • 模块和组件都是系统的组成部分,只是从不同角度拆拆分系统而已

  • 从逻辑角度拆分,得到的单元叫模块。划分模块的主要目的是职责分离。

  • 从物理角度拆分,得到的单元叫组件。划分组件的主要目的是单元复用。

举例:学生信息管理系统。从逻辑角度拆分,分为“登录注册模块”、“个人信息模块”、“个人成绩模块”。从物理角度拆分,可分为Nginx、WebServer、MySQL

框架与架构

  • 框架(FrameWork)关注的是规范。

  • 架构(Architecture)关注的是结构。

 

重新定义架构:

架构:软件架构指软件系统的顶层架构。

 

02架构设计的历史背景

20 世纪 60 年代第一次软件危机引出了“结构化编程”,创造了“模块”概念;20 世纪 80 年代第二次软件危机引出了“面向对象编程”,创造了“对象”概念;到了 20 世纪 90年代“软件架构”开始流行,创造了“组件”概念。我们可以看到,“模块”“对象”“组件”本质上都是对达到一定规模的软件进行拆分,差别只是在于随着软件的复杂度不断增加,拆分的粒度越来越粗,拆分的层次越来越高。

 

03架构设计的目的

架构设计的目的:架构设计的主要目的是为了解决软件系统复杂度带来的问题

 

04复杂度来源:高性能

单台计算机内部为了高性能带来的复杂度

  • 单机如何高性能?多进程、多线程、进程间通信、多线程并发

  • 如何选择?Nginx可以多进程也可多线程、Redis采用单进程、Memchache采用多线程,都实现了高性能

 

多台计算机集群为了高性能带来的复杂度

多台机器配合达到高性能的方式有

任务分配:(业务比较简单的情况)每台机器都可以处理完整的业务,不同任务分配到不同机器上执行

任务分解:(业务很复杂)将复杂的业务系统,拆分为多个简单但需要配合的业务系统

 

05复杂度来源:高可用

高可用方案的本质

高可用方案本质都是通过“冗余”实现高可用

  • 一台不够两台

  • 一个机房可能断点,那就两个机房

  • 一台通道可能故障,那就两条,两条不够就三条(移动、联通、电信)

 

高性能与高可用的区别

高可用的“冗余”解决方案,单纯从形式上来看,和之前讲的高性能是一样的,都是通过增加更多机器来达到目的,但其实本质上是有根本区别的:高性能增加机器目的在于“扩展”处理性能;高可用增加机器目的在于“冗余”处理单元。

 

冗余”带来的复杂性

一、计算高可用

特点:无论从哪台机器上进行计算,同样的算法和输入,产出都是一样的。

复杂度分析举例:双机架构

 

 

 

1)任务分配器的选择,性能、成本、可维护性、可用性等因素

2)任务分配器和计算服务器交互。什么连接方式、如何进行连接管理(连接建立、连

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值