个人总结,仅供参考,欢迎加好友一起讨论
文章目录
- 架构 - 案例分析 - 架构设计<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