【新版】系统架构设计师 - 案例分析 - 架构设计<SOA与微服务>

news2024/11/24 17:34:24

在这里插入图片描述

个人总结,仅供参考,欢迎加好友一起讨论

文章目录

  • 架构 - 案例分析 - 架构设计<SOA与微服务>
  • 例题1
  • 例题2
  • 例题3
  • 例题4

架构 - 案例分析 - 架构设计<SOA与微服务>

这里SOA与微服务的例题只对应找寻了几个,具体其它相关例题,还需要自行搜索和总结

相关SOA与微服务的知识点,请点击https://blog.csdn.net/lili40342/article/details/132793356

例题1

阅读以下关于Web应用设计的描述,在答题纸上回答问题1至问题3。

【说明】

某银行拟将以分行为主体的银行信息系统,全面整合为由总行统一管理维护的银行信息系统,实现统一的用户账户管理、转账汇款、自助缴费、理财投资、贷款管理、网上支付、财务报表分析等业务功能。但是,由于原有以分行为主体的银行信息系统中,多个业务系统采用异构平台、数据库和中间件,使用的报文交换标准和通信协议也不尽相同,使用传统的EAI解决方案根本无法实现新的业务模式下异构系统间灵活的交互和集成。因此,为了以最小的系统改进整合现有的基于不同技术实现的银行业务系统,该银行拟采用基于ESB的面向服务架构(SOA)集成方案实现业务整合。

在这里插入图片描述

【问题1】

请分别用200字以内的文字说明什么是面向服务架构(SOA)以及ESB在SOA中的作用与特点。

参考答案:

本问题考查考生对于Web应用系统常用体系架构相关的掌握程度。SOA和ESB是Web应用系统架构的基础。其中,面向服务的体系架构(SOA)是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通信。它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。SOA能帮助企业系统架构设计者以更迅速、更可靠、更高重用性设计整个业务系统架构,基于SOA的系统能够更加从容地面对业务的急剧变化。

企业服务总线(ESB)是由中间件技术实现的全面支持面向服务架构的基础软件平台,支持异构环境中的服务以及基于消息和事件驱动模式的交互,并且具有适当的服务质量和可管理性。

【问题2】

基于该信息系统整合的实际需求,项目组完成了基于SOA的银行信息系统架构设计方案。该系统架构图如上图所示。请从(a)~(j)中选择相应内容填入(1)~(6),补充完善架构设计图。

(a)数据层

(b)界面层

(c)业务层

(d)bind

(e)企业服务总线ESB

(f)XML

(g)安全验证和质量管理

(h)publish

(i)UDDI

(j)组件层

(k)BPEL

参考答案:

(1)(c)

(2)(i)

(3)(h)

(4)(e)

(5)(g)

(6)(j)

【问题3】

针对银行信息系统的数据交互安全性需求,列举3种可实现信息系统安全保障的措施。

参考答案:

XML加密模块、WS-Security、防火墙系统、安全检测、网络扫描。

例题2

阅读以下关于Web应用设计的描述,在答题纸上回答问题1至问题3。

【说明】

某大型企业在长期信息化建设过程中,面向不同应用,开发了各种不同类型的应用软件系统,以满足不同的业务需求,随着用户需求和市场的快速变化,要求企业应能快速地整合企业的各种业务能力。为不同类型的用户提供多种流程的业务服务。但现有各个独立的应用系统难以满足日益增长和快速变化的用户需求。

目前该企业各个应用系统主要存在以下问题:

(1)应用系统是异构的,运行在不同软硬件平台上的信息系统。

(2)应用系统的数据源彼此独立,相互封闭,使得数据难以在系统之间交互,共享和融合,即存在“信息孤岛”。

(3)系统是面向应用的、各个应用系统中的数据模型差异大,即使同一数据实体,其数据类型、长度均存在不一致甚至相互矛盾的问题,为此,该企业专门成立了研发团队,希望能尽快解决上述问题。

【问题1】

李工建议采用数据集成的方式来实现数据的整合,同时构建新系统来满足新的需求,针对题干中的问题(3),李工提出首先面向企业核心的业务主题,做好企业战略数据规划。建立企业的主题数据库,然后再进行集成系统的开发。请用200字以内的文字简要说明主题数据库的设计要求和基本特征。

参考答案:

主题数据库的设计要求:

(1)应设计得尽可能的稳定,使能在较长时间内为企业的信息资源提供稳定的服务。

(2)要求主题数据库的逻辑结构独立于当前的计算机硬件和软件的物理实现过程,这样能保持在技术不断进步的情况下,主题数据库的逻辑结构仍然有效。

主题数据库具有以下基本特征:

(1)面向业务主题。主题数据库是面向业务主题的数据组织存储。

(2)信息共享。主题数据库是对各个应用系统“自建自用”的数据库的否定,强调建立各个应用系统“共建共用”的共享数据库。不同的应用系统统一调用主题数据库。

(3)一次一处输入系统。主题数据库要求调研分析企业各经营管理层次上的数据源,强调数据的就地采集,就地处理、使用和存储,以及必要的传输、汇总和集中存储。同一数据必须一次、一处进入系统,保证其准确性、及时性和完整性,但可以多次、多处使用。

(4)由基本表组成。主题数据库是由多个达到基本表规范(满足 3NF)要求的数据实体构成的。

【问题2】

张工认为数据集成的方式难以充分利用已有应用系统的业务功能实现不同业务功能的组合,建议采用基于 S0A 的应用集成方式将原有系统的功能包装为多个服务,并给出了基本的集成架构,见下图:

在这里插入图片描述

请补充实善图中(1)~(3) 处空白的内容。

参考答案:

(1)业务流程编排(2)消息转换(3)应用程序接口

【问题3】

研发团队在对张工的方案进行分析后,发现该方案没有发挥SOA的核心理念,即松耦合的服务带来业务的复用通过服务的编排助力业务的快速响应和创新、未实现快速整合企业业务的能力,不同类型用户提供各种不同功能,不同流程的业务服务的核心目标,目前方案仅仅是通过 SOA 实现了系统集成。请用200字以内文字分析该方案未满足本项目核心目标的原因。

参考答案:

张工的方案在进行集成时,只是将原有的系统做了简单的对接,应把原来的业务功能模块拆分并做成服务,以单个服务的形式使用企业服务总线做集成。

例题3

阅读以下关于微服务架构中的数据管理的叙述,在答题纸上回答问题1至问题3。

【说明】

某大型电商平台构建了一个在线B2B商店系统。该系统采用微服务架构,将系统功能分解为多个松散耦合且可独立部署的较小组件或服务。最终设计的系统包括了电商系统中常见的服务:客户服务、订单服务、支付服务等,其中:

(1)客户服务负责对客户相关的信息进行管理和维护;

(2)订单服务负责对订单信息的管理和维护;

(3)支付服务负责对在线支付功能和信息的管理和维护等。

为了确保微服务之间的松耦合,每个服务都有自己的数据,其中,订单服务使用了NoSQL数据库,客户服务和支付服务使用了关系数据库。

李工认为由于不同服务使用了各自的不同数据库,使得跨服务操作可能存在数据不一致。比如订单与支付的数据一致性问题,系统通过订单服务在本地NoSQL数据库中创建订单记录,同时在支付服务的关系数据库中创建支付记录,且必须保证订单记录和支付记录的一致性,该问题在系统构建时需要考虑。

【问题1】

李工建议采用两阶段提交协议(2PC)来解决服务数据的一致性问题。请用200字以内的文字简要说明2PC,说明2PC是否能解决该问题,并简要解释原因。

参考答案:

两阶段提交协议(2PC)可以保证数据的强一致性,许多分布式关系型数据管理系统采用此协议来完成分布式事务。它是协调所有分布式原子事务参与者,并决定提交或取消(回滚)的分布式算法。同时也是解决一致性问题的一致性算法。两阶段提交协议由两个阶段组成。

(1)阶段1:请求阶段(prepare阶段,或称表决阶段)在请求阶段,协调者将通知事务参与者准备提交或取消事务,然后进入表决过程。在表决过程中,参与者将告知协调者自己的决策:同意(事务参与者本地作业执行成功)或取消(本地作业执行故障)。

(2)阶段2:提交阶段(commit阶段)在该阶段,协调者将基于第一个阶段的投票结果进行决策:提交或取消。当且仅当所有的参与者同意提交事务协调者才通知所有的参与者提交事务,否则协调者将通知所有的参与者取消事务。参与者在接收到协调者发来的消息后将执行响应的操作。

两阶段提交协议2PC不能解决当前问题。

(1)分布式数据库遵循的是CAP原则,会在一定程度上牺牲一致性。

(2)大多数NoSQL数据库并不支持2PC。

(3)分布式两阶段提交协议2PC一般针对的对象在逻辑上是一个整体,对某一个整体事务需要在多个物理节点上执行时,进行表决和执行,对多个数据库的不同服务并不是很合适。

【问题2】

王工建议采用分布式数据管理方案,用事件驱动架构来解决服务数据的一致性问题,在订单服务和支付服务之间通过可靠的消息队列实现事件的传递,其基本操作步骤如下,请填写其中的空白处。

(1)订单服务接收订购请求,创建一个订单,该记录状态为(a),发布一个“创建订单"事件;

(2)(b)接收“创建订单”事件,记录(c),发布一个“支付完成事件;

(3)订单服务接收“支付完成”事件,修改订单记录状态为(d) 。

参考答案:

(a)未支付(b)支付服务(c)支付信息(d)已支付

【问题3】

李工提出王工的方案会有数据库更新和发布事件的原子性问题,例如订单服务创建订单记录和发布"创建订单"事件需要原子性保障,否则会出现数据不一致状态。王工认为可以使用本地事务发布事件的方法来解决该问题。请给出使用本地事务发布事件的基本方法,并说明该方法的缺点。

参考答案:

在数据库中有一张EVENT表(模拟消息队列),存储业务数据的状态。首先启动一个本地数据库事务,更新业务数据记录并往EVENT表中插入一条数据,最后提交事务。一个单独的线程会轮询EVENT表,将查询结果往MQ中发送事件消息,然后使用本地事务标注事件状态为已发布。

不足:

易出错,因为要求开发者必须记得更新后去发布事件;

当使用NoSQL时,因为NoSQL的事务和查询能力有限,实现起来较麻烦。

例题4

阅读以下关于基于微服务的系统开发的叙述,在答题纸上回答问题1至问题3。

【说明】

某公司拟开发一个网络约车调度服务平台,实现基于互联网的出租车预约与管理。公司的系统分析师王工首先进行了需求分析,得到的系统需求列举如下:

系统的参与者包括乘客、出租车司机和平台管理员三类;

系统能够实现对乘客和出租车司机的信息注册与身份认证等功能,并对乘客的信用信息进行管理,对出租车司机的违章情况进行审核;

系统需要与后端的银行支付系统对接,完成支付信息审核、支付信息更新与在线支付等功能;

针对乘客发起的每一笔订单,系统需要实现订单发起、提交、跟踪、撤销、支付、完成等业务过程的处理:系统需要以短信、微信和电子邮件多种方式分别为系统中的用户进行事件提醒。

在系统分析与设计阶段,公司经过内部讨论,一致认为该系统的需求定义明确,建议尝试采用新的微服务架构进行开发,并任命王工为项目技术负责人,负责项目开发过程中的技术指导工作。

【问题1】

请用100字以内的文字说明一个微服务中应该包含的内容,并用300字以内的文字解释基于微服务的系统与传统的单体式系统相比的2个优势和带来的2个挑战。

参考答案:

微服务中应该包含的内容有:资源、对资源的操作的一组API集合

微服务的优势:

(1)通过分解巨大单体式应用为多个服务方法解决了复杂性问题。它把庞大的单一模块应用分解为一系列的服务,同时保持总体功能不变。

(2)让每个服务能够独立开发,开发者能够自由选择可行的技术,提供 API 服务。

(3)微服务架构模式是每个微服务独立的部署。开发者不再需要协调其它服务部署对本服务的影响。这种改变可以加快部署速度。

(4)微服务使得每个服务独立扩展。你可以根据每个服务的规模来部署满足需求的规模。甚至你可以使用更适合于服务资源需求的硬件。

微服务架构带来的挑战:

(1)并非所有的系统都能转成微服务。例如一些数据库层的底层操作是不推荐服务化的。

(2)部署较以往架构更加复杂:系统由众多微服务搭建,每个微服务需要单独部署,从而增加部署的复杂度,容器技术能够解决这一问题。

(3)性能问题:由于微服务注重独立性,互相通信时只能通过标准接口,可能产生延迟或调用出错。例如一个服务需要访问另一个服务的数据,只能通过服务间接口来进行数据传输,如果是频繁访问,则可能带来较大的延迟。

(4)数据一致性问题:作为分布式部署的微服务,在保持数据一致性方面需要比传统架构更加困难。

【问题2】

识别并设计微服务是系统开发过程中的一个重要步骤,请对题干需求进行分析,对微服务的种类和包含的业务功能进行归类,完成下表中的(1)~(4)。

在这里插入图片描述

参考答案:

(1)乘客信息注册、乘客身份认证、乘客信用信息管理

(2)出租车司机信息注册、出租车司机身份认证、司机违章情况审核

(3)支付管理

(4)订单发起、订单提交、订单跟踪、订单撤销

【问题3】

为了提高系统开发效率,公司的系统分析师王工设计了一个基于微服务的软件交付流程,其核心思想是将业务功能定义为任务,将完成某个业务功能时涉及的步骤和过程定义为子任务,只有当所有的子任务都测试通过后该业务功能才能上线交付。请基于王工设计的在线支付微服务交付流程,从(a)~(f)中分别选出合适的内容填入下图中的(1)~(5)处。

(a)提交测试(b)全量上线(c)对接借记卡(d)获取个人优惠券(e)试部署(f)对账

在这里插入图片描述

参考答案:

(1)f (2)c (3)d (4)a (5)b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1034600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

servlet开发-通过Tomcat部署一个简单的webapp

首先我们得下载安装Tomcat,推荐看Tomcat(HTTP服务器)下载以及认识, 我们将通过打印一个hello word的方式来熟悉servlet开发,通过Tomcat部署一个webapp的流程 servlet的含义 Tomcat提供了一系列的api接口,这些api背后…

dfs力扣1993树上的操作

文章目录 dfs力扣1993树上的操作题目示例提示做题历程做题思路数组定义编写代码 完整代码 dfs力扣1993树上的操作 题目 题目链接 给你一棵 n 个节点的树,编号从 0 到 n - 1 ,以父节点数组 parent 的形式给出,其中 parent[i] 是第 i 个节点…

Java多线程篇(5)——cas和atomic原子类

文章目录 CASAtomic 原子类一般原子类针对aba问题 —— AtomicStampedReference针对大量自旋问题 —— LongAdder CAS 原理大致如下: 在java的 Unsafe 类里封装了一些 cas 的api。以 compareAndSetInt 为例,来看看其底层实现。 可以发现,最…

基于abaqus的非等速生长Voronoi晶体模型生成插件

1. 非等速生长晶体模型简介 对于标准Voronoi而言,每个晶粒的生长速率是相同的,任意两个晶粒的交界线为其形核点连线的垂直平分线,交界线为一条直线,如图1.1所示。 图1.1 标准Voronoi晶粒交界线 而对于非等速生长Voronoi晶体而言…

项目篇——java文档搜索引擎

Java 文档搜索引擎 文章目录 Java 文档搜索引擎一、分词二、完成parser 类2.1、排除非html文件2.2、解析html以下是解析 HTML 标题的方法以下是解析 对应的 URL以下是解析 HTML的正文: 补充:倒序索引 三、实现 index 类3.1、实现索引结构3.2、索引中新增…

学会使用Git 和 GitHub

Git 和 GitHub 都是程序员每天都要用到的东西 —— 前者是目前最先进的 版本控制工具,拥有最多的用户,且管理着地球上最庞大的代码仓库;而后者是全球最大 同性交友 代码托管平台、开源社区。 在没有这两个工具时,编程可能是这样的…

Go环境搭建

下载 官网地址 选择Download 根据自己的请选择对应的版本进行下载(我这里使用windos go.1.21.1版本) 我这里选择zip类型进行下载免安装版(你也可以选择mis类型进行下载,安装版一步一步next就行)。 安装 解压安装包 目录说明 配置环境变量 验证是否安装成功 完成上述配置…

通过插件去除Kotlin混淆去除 @Metadata标记

在Kotlin中,Metadata是指描述Kotlin类的元数据。它包含了关于类的属性、函数、注解和其他信息的描述。Metadata的作用主要有以下几个方面: 反射:Metadata可以用于在运行时获取类的信息,包括类的名称、属性、函数等。通过反射&…

【功能设计】数据分发功能设计

文章目录 设计脑图功能性非功能性 功能设计文档1. 需求分析1.1、功能性需求1.2、非功能性需求 2. 功能设计2.1 业务流程图2.2 数据流图2.3 表结构设计2.4 接口设计2.5 功能点 3.非功能性设计3.1 性能3.2 可用性3.3 并发性3.4 安全性 设计脑图 功能性 非功能性 功能设计文档 1…

国庆中秋特辑(三)使用生成对抗网络(GAN)生成具有节日氛围的画作,深度学习框架 TensorFlow 和 Keras 来实现

要用人工智能技术来庆祝国庆中秋,我们可以使用生成对抗网络(GAN)生成具有节日氛围的画作。这里将使用深度学习框架 TensorFlow 和 Keras 来实现。 一、生成对抗网络(GAN) 生成对抗网络(GANs,…

FFMpeg zoompan 镜头聚焦和移动走位

案例 原始图片 # 输出帧数,默认25帧/秒,25*4 代表4秒 # s1280x80 # 输出视频比例,可以设置和输入图片大小一致 # zoom0.002 表示每帧放大的倍数,下面代码是25帧/每秒 * 4秒,共1000帧 # 最终是 0.002*25*4 0.2&…

什么是深度学习?最易懂的机器学习入门文章

1. 什么是深度学习? 深度学习是机器学习领域中一个新的研究方向,它被引入机器学习使其更接近于人工智能。 原文:【科普&实践】超详细!一文带你玩转深度学习 - 飞桨AI Studio星河社区 深度学习是机器学习领域中一个新的研究方向&#xff…

折腾LINUX复古终端

这个复古终端是cool-retro-term,先来图 点击GITHUB地址 开始用docker运行,报错。后来用x11docker,因为我要远程通过SSH的x11转发,但实际x11docker的默认backbone就说docker,也就说要先用docker下载镜像&#xff0c…

[maven] 实现使用 plugin 及 properties 简述

[maven] 实现&使用 plugin 及 properties 简述 这章内容,我个人感觉可看可不看……? 不过课都上了,笔记 📒 补完才对得起自己嘛 plugins 主要讲一下 maven 的 plugin 时怎么实现的,以及项目中怎么调用自己实现…

成集云 | 用友T+集成聚水潭ERP(用友T+主管供应链)| 解决方案

源系统成集云目标系统 方案介绍 用友T是一款由用友畅捷通推出的新型互联网企业管理系统,它主要满足成长型小微企业对其灵活业务流程的管控需求,并重点解决往来业务管理、订单跟踪、资金、库存等管理难题。 聚水潭是一款以SaaS ERP为核心,集…

mysql事务测试

mysql的事务处理主要有两种方法1、用begin,rollback,commit来实现 begin; -- 开始一个事务 rollback; -- 事务回滚 commit; -- 事务提交 2、直接用set来改变mysql的自动提交模式 mysql默认是自动提交的,也就是你提交一个sql,它就直接执行!我…

微信管理系统可以解决什么问题?

微信作为一款社交通讯软件,已经成为人们日常生活中不可缺少的工具。不仅个人,很多企业都用微信来联系客户、维护客户和营销,这自然而然就会有很多微信账号、手机也多,那管理起来就会带来很多的不便,而微信管理系统正好…

基于径向基神经RBF的空调功率预测,RBF神经网络的详细原理,RBF回归预测代码

目录 完整代码和数据下载链接:基于MATLAB的RBF的空调能耗预测_模糊空调matlab资源-CSDN文库 https://download.csdn.net/download/abc991835105/87833598 RBF的详细原理 RBF的定义 RBF理论 易错及常见问题 RBF应用实例,基于rbf的空调功率预测 代码 结果…

C语言大佬的必杀技---宏的高级用法

C语言大佬的必杀技—宏的高级用法 目录: 字符串化标记的拼接宏的嵌套替换多条语句防止一个文件被重复包含宏和函数的区别 可能大家在学习的时候用得比较少,但是在一些代码量比较大的时候,这样使用,可以大大的提高代码的可读性,…

minio报错should be less than or equal解决方案

minio报错should be less than or equal解决方案 问题背景解决方案Lyric&#xff1a; 当作你的请求 问题背景 在进行minio扩容时&#xff0c;报错 parity validation returned an error: parity 4 should be less than or equal to 2 <- (4, 4), for pool(2nd解决方案 mi…