当前课程知识点:面向对象分析与设计 >  描述分布式系统架构 >  描述分布式系统架构概述 >  描述分布式系统架构概述

返回《面向对象分析与设计》慕课在线视频课程列表

描述分布式系统架构概述在线视频

描述分布式系统架构概述

下一节:用例设计描述

返回《面向对象分析与设计》慕课在线视频列表

描述分布式系统架构概述课程教案、知识点、字幕

同学们

下面我们讲一下面向对象分析与设计这门课的第19节

描述分布式系统架构

同学们 在这节课里面

我们讲一下描述分布式系统架构这个活动的目的以及在RUP的哪个环节里面来执行它

我们来描述如何把系统的功能分配到不同的计算节点上去

怎样采用部署模型来描述系统的分布式部署决策

以及在做分布式部署架构设计的时候有哪些主要的考虑因素

分布式系统架构的设计主要是在软件体系架构精化阶段 由架构师来完成

在分布式部署时我们主要考虑的是非功能性需求

所以附加规格说明书是它的主要输入

在分布式架构的描述中是需要对我们在分析阶段所定义的初始体系架构进行精化

所以软件的架构文档和设计模型也是它的主要输入

当然还包括要考虑软件最终实现的实现模型

它的最终输出结果就是这里的部署模型

在UML里面 我们采用的是4+1视图

其中我们采用部署视图来描述系统的分布式架构

有时我们也把它称之为部署模型

为什么要做分布式部署呢?

首先在分布式部署中 我们的系统的功能会分配在不同的计算节点上

这可以降低单个计算节点的负载

比如说降低单个节点的负载压力

第二 有一些程序部分可能对处理器有特殊的要求

比如需要一些FPGA(现场可编程门阵列)DSP(数字信号处理技术)等等

这样一些特殊的信号处理处理器

那么这部分任务就需要进行分布式部署

第三点 考虑可伸缩性

当我的用户数量上来以后 为了处理更多的并发请求 我可能需要更多的处理器

这种情况下 我们就必须对软件进行分布式部署

再一个我们需要考虑经济性 如果我的任务很重 我要给它一个处理能力很强的

比如说服务器 来处理它

我们知道服务器是非常昂贵的

但是采用分布式部署我们就可以把同样的任务拆分成很多小任务 交由很多便宜的计算机来协同处理

那么可以降低整个系统的成本

最后一点 有些软件系统可能需要进行分布式访问

比如我们的用户可能在不同的地点 都要去访问系统

那么这种情况下 也就要求我们的软件必须分布式部署

分布式部署模式主要分为两大类

第一类我们称之为客户服务器模式

它又包括有三层架构、胖客户端的、胖服务器的和分布式的

第二类我们称之为P2P的 或者叫端到端的

我们先看客户服务器的

客户服务器最典型的有三种 最左边的是胖客户端的

我们知道它的客户端除了进行用户交互以外还负责进行业务逻辑处理

第二种是三层架构的

在客户端部署 主要处理用户交互 然后所有业务逻辑处理放在中间的业务服务器里面

最后数据的存储管理放在数据服务器里面

第三类是B/S架构的

客户端不安装任何软件 用浏览器所有的业务逻辑处理全放在Web服务器上

最终数据存储在数据服务器里面

这是胖客户端模式

在胖客户端模式下 需要在客户端安装部署大量的软件 所以客户端的安装维护功能非常的困难

第二点 客户端程序会直接访问数据库 这样会把数据库的密码和地址 暴露给客户端

这样存在一定的数据泄密的安全隐患

在它改进之下 三层架构的情况下

客户端不再访问数据库了 可以对数据库进行有效的保护

但同样的 客户端需要安装部署程序 在用户量多的情况下 工作量仍然很大

到了B/S结构的情况下 可以看到客户端不需要安装任何程序了

所以B/S架构下系统的安装部署工作量最少

第二类是P2P的

在P2P的情况下 每个计算节点既作为客户端向别的计算节点请求服务

同时又作为服务器为别的计算节点提供服务

P2P的架构在一些下载软件里面被广泛采用

像我们常用的迅雷 既可以作为客户端 从别的主机上下载应用

同时可以作为服务器提供给别的主机来下载它上面的电影或其他的软件和数据

如何来描述分布式主要有三个步骤

首先来定义网络配置 第二点是把进程分配给计算节点 第三点来描述分布式机制

我们首先来看第一点 定义网络配置

在网络配置里面 首先需要定义计算节点 常用的计算节点主要有给客户端用到的工作站

以及处理应用逻辑的应用服务器 或者数据库服务器 也就是我们所谓的服务器节点

另外网络配置可能有多种类型 在开发阶段有开发阶段的网络配置 在软件测试阶段可能有测试阶段的网络配置

到了真正在用户部署的时候还有部署阶段的网络配置

最后一点是有一些特殊的处理程序 可能需要特定的处理器 这些特定的处理器也是我们网络配置里的计算节点

我们把这些节点 就是我们前面讲的客户端 服务器 特殊处理器 都看成一个计算节点

所以每个计算节点描述了一种软件运行状态下的一种计算资源

所以一般情况下每种计算节点最少要有内存 也就是说在它上面运行存储数据或者程序

同时一般情况下还要有处理器能够执行进程或者线程

节点的类型分为两类

一类我们称之为设备

设备实际上是一种物理上的计算节点 它有处理能力 而且它可以是嵌套的

比如说有一个服务器 它里面有多个CPU是可以嵌套起来的

第二种我们称之为执行环境

那么执行环境是在物理设备之上 还要在附加上操作系统

能够给软件提供一个完备的运行环境

第二个概念是连接器 连接器描述了两个计算节点之间的通信机制

在通信机制里面需要从不同层面来定义它

第一个是从物理介质 在这个例子里面这两个客户端和服务器之间采用了100T的以太网作为物理介质进行通信

除了物理介质以外 我们还要描述通信的软件协议

物理介质加上软件协议共同构成了两个计算节点的连接器

这是我们在教学管理系统里面的一个例子

我们可以看到我们共有4个节点 节点之间是通过校园网连接起来的

那么第二步我们要把进程线程分配给这些计算节点

那么在分配的时候主要考虑这么几个因素

第一个是分布式 分布模式

前面我们介绍到的分布模式有胖客户端的 有三层的 有B/S的

在不同分布模式下把执行不同任务的进程要部署在不同的计算节点上

第二点要考虑系统的响应时间和吞吐量

我们知道在网络上通信的时候时延是很大的

为了提高整个系统的性能 降低它的响应时间我们应该减少在网络上数据的通信量 减少整个系统的网络的吞吐

第三点就是减少跨网络的数据流量

另外在部署的时候 考虑节点的计算能力 我们不能把很多任务安排一个处理能力比较差的计算节点

那么在这个计算节点上处理会非常慢

也就是说我们在给每个节点分配任务要根据这个节点的计算能力来分配

把任务重的分配给计算能力强的节点

在一个要考虑通信的带宽 在两个节点之间的通信介质有贷款约束

我们要计算它们之间的通信流量是否超过了物理带宽

另外还要考虑在通信过程中通信电路的可用性

如果通信电路的可用性差 经常有故障或丢包 那么整个系统运行也会同样出现错误或软件响应速度会比较慢

在一个还要考虑通信流量的重路由或再路由的问题

这是一个例子 这个例子就描述了在PC机上部署的客户端程序

在服务器上我们部署有计费系统访问的线程 课程注册的进程 还有课程目录系统访问的进程 共三个进程

那什么是部署 我们讲了很多

什么是部署呢 就是把软件的元素分配或者映射到物理的计算节点上去

我们把它称之为部署

这些部署是我们在软件里所识别或设计的一些实体

例如进程 线程或者类 子系统

我们把它安装部署在客户端或者服务器这样一些计算节点上去

我们所部署的软件元素可能会有不同的表现形式 在软件实现层面或称之为物理实体

可能就是软件最终开发完成以后它的表现形式 可能是程序源文件 头文件 可执行文件 数据库表 web页面等等

当然也可能是配置文件等等

在部署到每个节点上 每个计算节点相应的有计算能力或计算资源 主要有处理器 存储等等

这是几个例子 上面例子描述了把学生应用部署在客户端计算节点上 我们可以用这几种方式描述都是可以的 或者说是等价的

下面我们讲一个概念 叫表名或说明

说明是什么意思呢? 就是我们描述一个模型元素它所对应物理实现

也就是说我们把模型元素和他的最终软件开发完成的物理实现程序对应起来

我们知道模型元素是抽象的 我们所开发的软件实现是具体的

比如说对应的源程序 头文件等等

一般来讲向模型里面的类 子系统 在软件里面对应过来就是对应的源文件 可执行文件 还有配置文件等等 和其他的一些文档

我们用Manifestation 也就是说明来描述它

我们看这个例子 我们把学生应用进程部署在学生客户端PC上

那么学生应用这个进程 对它进行说明 就采用设计里面的主学生表格类

而这个类又由一个源文件和头文件所实现 或说明为源文件和头文件

在部署的时候我们还要写部署规约

部署规约详细描述了软件开发的软件成品元素 是如何部署在节点上去的

描述了部署在节点上计算运行的时候 所需要的参数

我们把它称之为部署规约

举个例子 我们这里把学生应用部署在客户端PC机上我们这里就定义了它的参数

它需要执行的时间 优先级等等

最后是定义部署机制 分布式机制

把软件部署在不同的节点之间 不同的节点之间需要通信 我们把这个通信模式称作分布式机制

那么分布式机制也属于之前讲的分析机制的一种 所以在概念阶段我们把它统一为分布式

到了设计阶段我们要给出具体的分布式模式 比如说常用的RMI(远程方法调用) 像Cobar(提供分布式数据库服务的中间件) SOAP(简单对象访问协议)都可以

到了实现阶段我们还具体给出如何具体实现的程序 程序包或者叫程序组件

比如说以RMI为例 我们给出我们采用了java1.2规范的RMI的程序包来实现分布式访问机制

好了 同学们

今天我们的课就介绍了一下软件的分布式体系架构的描述方式

我们给出了为什么要进行分布式体系架构的原因 介绍了一些基本概念

比如像节点 通信链接 通信

最后讲了一下如何把进程等软件成品来部署给这些节点以及如何描述它们

谢谢大家

面向对象分析与设计课程列表:

面向对象概述

-软件开发过程中的主要问题和好的解决方法

--软件开发过程中的主要问题和好的解决方法

--软件开发过程中的主要问题和好的解决方法

统一软件开发(RUP)

-RUP软件开发模型的特点

--RUP软件开发模型的特点

--RUP软件开发模型的特点

面向对象建模

-四个基本原则

--四个基本原则

--四个基本原则

-对象和类

--对象和类

--对象和类

-类之间的关系

--类之间的关系

--类之间的关系

需求概述

-用例模型

--用例模型

--用例模型

-用例之间的关系

--用例之间的关系

--用例之间的关系

-用例建模

--用例建模

--用例建模

分析与设计概述

-分析与设计概述

--分析与设计概述

--分析与设计概述

架构分析

-架构分析基本概念

--架构分析基本概念

--架构分析基本概念

-定义模型的高层组织结构

--定义模型的高层组织结构

--定义模型的高层组织结构

-确定分析机制、确定关键概念、创建用例实现

--确定分析机制、确定关键概念、创建用例实现

--确定分析机制、确定关键概念、创建用例实现

用例分析概述

-用例分析概述

--用例分析概述

--用例分析概述作业

-控制类

--控制类

--控制类

-用例行为和类的关系

--用例行为和类的关系

--用例行为与类的关系

识别设计类

-识别设计元素概述

--识别设计元素概述

--识别设计元素概述

-识别子系统及接口

--识别子系统和接口

--识别子系统及接口

描述运行态软件体系架构

-描述运行态软件体系架构

--描述运行态软件体系架构

--描述运行态软件体系架构

描述分布式系统架构

-描述分布式系统架构概述

--描述分布式系统架构概述

--描述分布式系统架构概述

用例设计

-用例设计描述

--用例设计描述

--用例设计描述

子系统设计

-子系统设计概述

--子系统设计概述

--子系统设计概述

类设计

-创建初始设计类、定义类操作方法

--创建初始设计类、定义类操作方法

--创建初始设计类、定义类操作方法

-定义类状态

--定义类状态

--定义类状态

-定义类之间的依赖关系、关联关系以及多重性设计

--定义类之间的依赖关系、关联关系以及多重性设计

--定义类之间的依赖关系、关联关系以及多重性设计

-定义类的泛化关系、解决用例冲突、非功能性需求

--定义类的泛化关系、解决用例冲突、非功能性需求

--定义类的泛化关系、解决用例冲突、非功能性需求

描述分布式系统架构概述笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。