第8章 · 播客 第10集

系统分析与设计方法 · 分布式环境与系统过渡

🎙️ 本集播客第10集(末集):基于实例与基于服务两种协作、近连接与远连接辨析(第 13 题)、大粒度设计;集中式系统三种结构、C/S 与多层、Internet 三件套;最后系统过渡三方式与并行 2.5 到 3 倍(第 10 题),收全章必背清单。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
🎙️ 第8章播客 第10集
⬇ 下载本集 点击播放
阿明
最后一集了,分布式这块从哪开始?
小雅
先讲为什么分布式会流行:网络极大地扩展了计算机的应用范围,而升级到更强的服务器的费用常常远远高于购买多台档次稍低的机器,利用联网的计算机协同工作成为相对成本较低的选择,而且可以完成单台计算机所无法完成的任务。但也要记住另一面:网络本质上并不可靠,特别是远程通信,分布式系统还带来了并发和同步的问题。
小雅
分布式系统可以由两种完全不同的方式来进行协同和合作。第一种是基于实例的协作:这种方式所有的实例都处理自己范围内的数据,这些对象实例的地位是相同的,当一个对象实例必须要处理不属于它自己范围的数据时,它必须和数据归宿的对象实例通信,请求另外一个对象实例进行处理。请求对象实例可以启动对象、调用远程对象的方法,以及停止运行远程实例。
小雅
基于实例的协作的优缺点原文说得很清楚:具有良好的灵活性,但由于实例之间的紧密联系复杂的交互模型,使得开发成本提高;而且由于实例必须能够通过网络找到,所以通信协议必须包括实例的生存周期管理,这使得基于实例的协作大多只限于统一的网络,对于复杂的跨平台的系统就难以应付。所以基于实例的协作适用于比较小范围内网络情况良好的环境中,这种环境常常被称为近连接。
小雅
使用基于实例的协作常常使用被称为代理的方法:某个对象实例需要调用远程对象时,它可以只和代理打交道,由代理完成和远程对象实例的通信工作——创建远程对象,提交请求、得到结果,然后把结果提交给调用的对象实例。这样,这个对象实例甚至可以不知道自己使用了远程对象,当远程对象被替换掉升级时,对本地代码也没有什么需要修改的地方。
阿明
那基于服务的协作就是另一种了?练习题第 13 题考它的适用场景。
小雅
对。基于服务的协作试图解决基于实例的协作的困难:它只提供远程对象的接口,用户可以调用这些方法,却无法远程创建和销毁远程对象实例。这样减少了交互,简化了编程,而且使得跨平台协作成为可能。同样由于只提供接口,这种协作方式使得对象间的会话状态难以确定,而且通信的数据类型也将有所限制,基本上很难使用自定义的类型。
小雅
第 13 题问基于服务的协作适用于什么环境,正确答案是「跨平台的网络,网络响应较慢的远连接环境」。原文:基于服务的协作适用于跨平台的网络、网络响应较慢的情况,这种环境常称为远连接,这时简化交互性更为重要,而频繁的网络交换数据会带来难以容忍的延时。干扰项拆解:A 选项「小范围内网络情况良好的近连接」是基于实例的协作的地盘;B 选项「需要远程对象实例生存周期管理」是实例协作的负担;C 选项「需要大量通信协议包括实例生存周期管理的统一网络」还是实例协作的描述。这题的杀招就是把两种协作的特征互换。
小雅
还有个设计取向要记:分布式系统倾向于使用大粒度的设计方式,往往在一个方法中包含了许多参数,每个方法基本上代表了一个独立的功能。因为在分布式系统中,细致设计所带来的对对象方法的大量调用会严重影响性能。当然大粒度使参数传递变得复杂,修改参数时要修改比较大范围的一段过程代码。一句话——单机宜细、分布宜粗。
阿明
接着是系统运行环境吧?从集中式说起。
小雅
软件的运行环境是指系统运行的设备、操作系统和网络配置。集中式系统:所有的操作都集中于一台主机中,操作员必须在主机的附近操作,结果也在附近给出。这种系统仍然广泛应用于批处理应用系统及更大的分布式系统的一部分,常见于银行、保险、证券行业。但实践中很少单独使用集中式系统,在现代的系统中,集中式系统通常是某个分布式系统的一个环节。
小雅
集中式系统由三种结构组成:单计算机结构,简单、容易维护,但处理能力受到限制;集群结构,由多个计算机组成,这些计算机具有类似的硬件平台、操作系统等,通常采用负载均衡、资源共享等方式实现更大的处理能力和容量;多计算机结构,由多个计算机组成,这些计算机之间操作环境可能不同,适用于当系统可以分解成多个不同的子系统时。单机、集群、多计算机,注意集群与多计算机的分界在操作环境是否相同。
阿明
分布式系统原文也点了名?
小雅
点了:分布式系统由于网络的普遍延伸、费用的不断降低而越来越成为大型系统的首选环境。分布式系统必须基于网络,这个网络可以是在一个地域内的局域网,也可以是跨越不同城市乃至国家的广域网。对比集中式的计算机环境,分布式系统有着多种多样的形式。
阿明
C/S 结构怎么定义?
小雅
系统由提供服务的服务器和发起请求、接受结果的客户机构成。这是一种可以使用很多方式实现的通用结构模型,并非只限于数据库的 C/S 结构,典型的还有网络打印服务系统,现在流行的网络游戏也显然是基于这种结构的。「并非只限于数据库」这句可以做判断题。
小雅
多层结构是 C/S 结构的扩展,典型的分为由存储数据的数据库服务器作为数据层、实现商业规则的程序作为逻辑层、管理用户输入输出的视图层所组成的三层结构,当系统更复杂时可以再增加其他层次构成多层结构。实现多层结构常常需要来实现不同层次间通信的专门程序——管件,也称为中间件,中间件大多数实现远程程序调用、对象请求调度等功能。三层叫法:数据层、逻辑层、视图层;中间件的两个别名:管件和中间件。
阿明
Internet、Intranet、Extranet 这三件套呢?
小雅
逐个定义。Internet 是全球的网络集合,使用通用的 TCP/IP 协议来相互连接,提供电子邮件、文件传输、远程登录等服务。Intranet 是私有网络,只限于内部使用,也使用 TCP/IP 协议。Extranet 是一个扩展的 Intranet,它包括企业之外的和企业密切相关合作的其他企业,允许分离的组织交换信息并进行合作,这样就形成了一个虚拟组织。现在的 VPN 技术允许在公用网络上架构只对组织内部开发服务。三件套的递进关系:Internet 全球、Intranet 内部、Extranet 扩展到合作企业形成虚拟组织。
小雅
原文还给了个评价:Web 同样基于 C/S 结构,实际上 Web 接口是一个通用的接口,不是只能使用浏览器的协议。Internet 和 Web 的优势在于它们已经成为网络的事实上的标准,从某种程度上来说,企业可以把 Internet 当作自己廉价的广域网。不利的一面:Internet 的安全性过去是,现在是,以后仍然是设计者头痛的问题,其他诸如可靠性、系统吞吐量、不断发展的技术和标准都是影响因素。问「Web 是不是只能用浏览器的协议」,答不是。
阿明
环境讲完了,最后是系统过渡计划。三种方式?
小雅
当新系统似乎开发完毕,要取代原来的系统时,系统过渡就是设计者不得不面对的问题。使用不同的系统过渡方案意味着不同的风险、不同的费用及不同的复杂度。设计者需要考虑的问题包括:如果同时运行两个系统,会给客户造成多大的开销;如果直接运行新系统,客户面对的风险有多大;对新系统试运行时的查错和纠错,以及出现严重错误而导致停止运行时的应急措施;客户运行新系统将面临的不利因素有哪些;人员的培训。
小雅
第一种直接过渡:当新系统运行时,立即关闭原来的系统。这是一种快速的系统过渡方式,非常简单,没有后勤保障的问题,也不要消耗很多资源,同时也意味着大风险。设计者主要要权衡当新系统失败时,系统停止运行或者勉强运行给客户带来的损失有多大。由于这种过渡方式简单而费用低廉,对于可以容忍停机一段时间的系统的实践者,可以采用这种方式。关键词:快速、简单、低费、高风险。
阿明
第二种并行过渡就是两个一起跑?练习题第 10 题考开销。
小雅
对。设计者采用并行过渡方式,让新系统和旧系统在一段时间里同时运行,通过这样的旧系统作为新系统的备份,可以大大降低系统过渡的风险。可是并行过渡显然比直接过渡要消耗更多的资源:现有的硬件资源必须保证能同时跑两套系统,这常常意味着增加服务器和额外的存储空间,需要增加人员来同时使用两套系统,或者增加现有员工的工作量,同时也增加了管理和后勤保障的复杂度。据统计,并行过渡时期的开销是旧系统单独运行时的 2.5 到 3 倍。第 10 题就考这个数,正确选项 2.5 到 3 倍,干扰项 1 到 1.5 倍、1.5 到 2 倍、3.5 到 4 倍。这个数字只能硬背,是练习题直接命中的考点。
小雅
并行过渡还有两个不适用的情况:有些系统无法使用并行过渡的方式,主要是客户没有足够的资源来维持两个系统同时运行,另外一种情况是新、旧系统差别太大,旧系统的数据无法为新系统采用。当客户无法使用并行过渡,又想尽可能地减少风险,设计者可以使用部分并行过渡的策略,使并行的开销减少到客户能够接受的范围内。
小雅
第三种阶段过渡:通常在系统非常复杂、过于庞大以至于无法一次性进行过渡时采用,也适用于分阶段开发的系统。设计者需要设计一系列步骤和过程来完成整个系统的过渡。和并行过渡一样,阶段过渡也能够减少风险,显然局部的失败要比全体的失败更容易接受,带来的损失更小;阶段过渡也带来了复杂性,有时候比并行过渡更加复杂。适用判断:系统过于庞大或分阶段开发,选阶段过渡。
阿明
直接快而险、并行稳而贵、阶段化整为零。全章也要收个尾了。
小雅
好,全章必背清单,按集过。第一集:问题分析五步是共识、本质、干系人、边界、约束;根本原因分析用因果鱼骨图和帕累托图;功能需求以动词为特征、非功能需求以副词为特征。
小雅
第二三集:Standish 统计 74% 不成功、60% 源于需求;需求分析答做什么、设计答怎么做;需求工程是需求开发加需求管理;DFD 五元素为过程、外部实体、数据存储、数据流、实时连接,公共部分四个;数据字典加号是顺序连接、中括号竖线是选择、花括号是重复、圆括号是可选。
小雅
第四集:概要设计即高层设计、详细设计即低层设计;变换流走直线、事务流扳道岔;信息隐蔽提高可修改性可测试性可移植性;高内聚低耦合,内聚七种从高到低、耦合七种从低到高。
小雅
第五到八集:实体类一定有属性不一定有操作、控制类没有属性一定有方法、边界类既有属性也有方法;多态四形式,参数和包含是通用多态、重载和强制是特定多态;重载编译时静态绑定、改写运行时动态绑定;OMT 对象模型配类图、动态模型配状态图、功能模型配数据流图;OOSE 由 Jacobson 提出带来用例;UML 十四种图、用例视图是最基本的需求分析模型;依赖虚线箭头、泛化空心箭头实线、聚合空心菱形、组合实心菱形、实现空心箭头虚线;聚合生命周期可以不同、组合相同;顺序图看时间、通信图看链接、定时图看刻度;状态图一个初态多个终态。
小雅
最后两集:三个黄金法则置用户于控制之下、减少记忆负担、保持一致;WFMC 六模块、工作流执行服务是核心;基于实例配近连接、基于服务配远连接;Internet 全球、Intranet 内部、Extranet 扩展成虚拟组织;直接过渡快速高风险、并行过渡开销 2.5 到 3 倍、阶段过渡适合庞大或分阶段开发的系统。
阿明
十章的地图都在脑子里了,这章的辨析题我再刷一遍应该就稳了。
小雅
去刷题吧,错哪道就回对应那一集再听一遍。下一章是第 9 章软件架构设计,那才是架构师真正的主场——软件架构风格、架构评估、中间件,都在前面等着你。