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

在这里插入图片描述

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

文章目录

  • 架构 - 案例分析 - 架构设计<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.rhkb.cn/news/142646.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一款强大的ntfs磁盘读写工具Paragon NTFS 15破解版百度网盘下载

今天再给大家分享一款NTFS工具Paragon NTFS 15,Paragon NTFS 15破解版是目前的最新版,需要的赶快收藏,地址失效可以留言。 Paragon Ntfs For Mac 15下载:https://souurl.cn/s84CCB Crcak链接: https://pan.baidu.com/s/1c2Hx7QBE…

计算机网络工程师多选题系列——计算机网络

2 计算机网络 2.1 网络技术基础 题型1 TCP/IP与ISO模型的问题 TCP/IP由IETF制定,ISO由OSI制定; TCP/IP分为四层,分别是主机-网络层、互联网络层、传输层和应用层;OSI分为七层,分别是物理层、数据链路层、网络层(实…

解决react报错“JSX 表达式必须具有一个父元素“

现象如下&#xff1a; 原因&#xff1a; 新插入的dom元素跟已有的dom元素平级了&#xff0c;必须创建一个共有的根元素 解决办法&#xff1a; 使用<> </>标签作为根元素&#xff0c;把所有子元素包裹起来 <> ....原代码 </> 问题解决&#xff01;…

手把手教你用 Milvus 和 Towhee 搭建一个 AI 聊天机器人!

作为向量数据库的佼佼者&#xff0c;Milvus 适用于各种需要借助高效和可扩展向量搜索功能的 AI 应用。 举个例子&#xff0c;如果想要搭建一个负责聊天机器人数据管理流程&#xff0c;Milvus 必然是首选向量数据库。那么如何让这个应用程序开发变得易于管理及更好理解&#xff…

Python PEP8 代码规范常见问题及解决方案

Win11查看安装的Python路径及安装的库 Python PEP8 代码规范常见问题及解决方案 Python3操作MySQL8.XX创建表|CRUD基本操作 Python3操作SQLite3创建表主键自增长|CRUD基本操作 anaconda3最新版安装|使用详情|Error: Please select a valid Python interpreter Python函数绘…

计算结构体大小:内存对齐详解

前言&#xff1a;不管在面试还是在升学的路上&#xff0c;内存对齐永远是结构体和联合体的热门考点&#xff0c;对于同样的结构体成员&#xff0c;他们相互之间的顺序位置不同就会导致整个结构体大小的不同&#xff0c;因此计算结构体联合体的字节大小就成为了一个有效的考点 目…

linux 清除卸载jenkins

1、停服务进程 查看jenkins服务是否在运行&#xff0c;如果在运行&#xff0c;停掉 查看服务 ps -ef|grep jenkins 停掉进程 kill -9 XXX2、查找安装目录 find / -name "jenkins*"3、删掉相关目录 删掉相关安装目录 rm -rf /root/.jenkins/# 删掉war包 rm -rf /…

关于MATLAB R2022b中MATLAB function没有edit data选项的解决办法

问题描述 在MATLAB 2022b的simulink中双击MATLAB function&#xff0c;出来的是这个界面&#xff0c;而不是跳转到MATLAB的编辑窗口。因此就找不到edit data选项&#xff0c;没法完成新建data store memory 全局变量。 解决办法&#xff1a; 点击 编辑数据 按钮 在弹出的窗…

LiveGBS流媒体平台GB/T28181功能-海康大华摄像头接入无法语音对讲通道为0无法播放时候如何抓包分析windows抓包和Linux抓包

LiveGBS通道数为0无法播放的时候如何抓包分析windows抓包和Linux抓包 1、第一步&#xff1a;抓包工具准备1.1、Linux1.2、windows 2、第二步&#xff1a;找到设备出口ip3、第三步&#xff1a;执行命令抓设备出口ip3.1 Linux3.2 Windwos 4、第四步&#xff1a;触发相关页面操作4…

【产品运营】如何做好B端产品规划

产品规划是基于当下掌握的多维度信息&#xff0c;为追求特定目的&#xff0c;而制定的产品资源投入计划。 产品规划是基于当下掌握的多维度信息&#xff08;客户需求、市场趋势、竞争对手、竞争策略等&#xff09;&#xff0c;为追求特定目的&#xff08;商业增长、客户满意等&…

xcode15下载ios17模拟器失败

升级到xcode15后需要安装ios17模拟器 但是在下载过程中会遇到报错 如下图这种 网上搜索了一下发现有人遇到过无法下载的问题&#xff0c;并且在apple官网也有人提出类似问题 https://developer.apple.com/forums/thread/737648 解决方案就是从https://developer.apple.com/do…

HarmonyOS开发:解决DevEco Studio低版本导入高版本项目运行失败问题

前言 基于DevEco Studio 4.0 Beta2&#xff0c;hvigorVersion为3.0.2&#xff0c;开发了一个项目&#xff0c;上传到了远程仓库&#xff0c;当同事下载后&#xff0c;却始终无法运行&#xff0c;频繁报错&#xff0c;由于API都是使用的9&#xff0c;第一感觉就是开发环境不同&a…

Unity-Input System新输入系统插件学习

1.键盘、鼠标操作 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.UI;public class NewInputSystem : MonoBehaviour {public float SpaceKeyValue;public float RightMouseValue;public…

LeetCode 接雨水 双指针

原题链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题面&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a…

CSS实现围绕按钮边框转圈的光线效果

CSS实现围绕按钮边框转圈的光线效果&#xff0c;可以自由改变按钮的光线渐变颜色和按钮边框颜色&#xff0c;背景色等。 效果图&#xff1a; 实现完整代码&#xff1a; <template><view class"btnBlock"><view class"btnBian"></vi…

win11怎么查看之前连过的wifi密码

首先进入到设置 然后就可以看到之前连接过的WIFI&#xff1a; 选一个想要知道密码的WIFI点进去看到如下页面&#xff1a; 然后点击“显示”即可查看密码

Redis 数据类型底层原理

String 内部编码有三种&#xff1a;int、embstr、raw int&#xff1a;如果一个字符串对象保存的是整数值&#xff0c;并且这个整数值可以用 long类型来表示(不超过 long 的表示范围&#xff0c;如果超过了 long 的表示范围&#xff0c;那么按照存储字符串的编码来存储&#xf…

kafka安装部署,和基本操作

kafka下载地址&#xff1a;Apache Kafka 我这里下载3.5.1 ​ 2、通过rz命令上传到linux服务器 3、解压 tar -zxvf kafka_2.12-3.5.1.tgz 4、在config目录下修改配置文件server.properties 主要修改这两处&#xff1a; #监听的端口advertised.listenersPLAINTEXT://自己…

java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…

uniapp实现表格冻结

效果图如下&#xff1a; 思路&#xff1a; 1.由于APP项目需要&#xff0c;起初想去插件市场直接找现成的&#xff0c;结果找了很久没找到合适的&#xff08;有的不支持vue2有的不能都支持APP和小程序&#xff09; 2.后来&#xff0c;就只能去改uni-table源码了&#xff0c;因…