系统架构师考试学习笔记第四篇——架构设计实践知识(18)面向服务架构设计理论与实践

本章考点:

        第18课时主要学习面向服务架构设计理论与实践。根据考试大纲,本课时知识点会涉及单选题型(约占2~5分)和案例题(25分),本课时内容偏重于方法的掌握和应用,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,概念知识的考查内容多数来源于实际应用,还需要灵活运用相关知识点。

        本课时知识架构如图18.1所示。

一、SOA的相关概念

(1)SOA的定义。从软件的基本原理定义,可以认为SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种
这样的系统中的服务可以一种统一和通用的方式进行交互。

(2)业务流程与业务流程执行语言(Business Process Execution Language,BPEL)。业务流程是指为了实现某种业务目的行为所进行的流程或一系列动作。使用BPEL,用户可以通过组合、编排和协调 Web 服务自上而下地实现面向服务的体系结构。BPEL目前用于整合现有的 Web
Services,将现有的Web Services按照要求的业务流程整理成为一个新的Web Services,在这个基础上,形成一个从外界看来和单个Service一样的Service。

二、SOA的发展历史

1.发展过程

(1)萌芽阶段:这种广泛使用的XML,允许组织定义文档的元数据,实现企业内部和企业之间的电子数据交换,规定了服务之间以及服务内部数据交换的格式和结构。
(2)标准化阶段:国际标准和规范-简单对象访问协议(Simple Object Access Protocol,SOAP)、Web服务描述语言(Web Services Description Language,WSDL)及通用服务发现和集成协议(Universal Description, Discovery and Integration, UDDI)。
(3)成熟应用阶段:3个重量级规范-SCA、SDO、WS-Policy.SCA和SDO构成了SOA编程模型的基础,而WS-Policy建立了SOA组件之间安全交互的规范。

2.SOA与微服务的区别

(1)微服务相比于SOA更加精细,微服务更多地以独立的进程的方式存在,互相之间并无影响。SOA架构与微服务架构的对比如图18.2所示。
(2)微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制。
(3)微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。

三、SOA的参考架构

IBM的 Websphere 业务集成参考架构是典型的以服务为中心的企业集成架构,它可划分为6大类:
(1)业务逻辑服务(Business Logic Service)。用于实现业务逻辑的服务和执行业务逻辑的能力,其中包括业务应用服务(Business Application Service)、业务伙伴服务(Partner Service)以及应用和信息资产(Application and Information Asset)。
(2)控制服务(Control Service)。包括实现人(People)、流程(Process)和信息(Information)集成的服务,以及执行这些集成逻辑的能力。
(3)连接服务(Connectivity Service)。通过提供企业服务总线,实现分布在各种架构元素中服务间的连接性。
(4)业务创新和优化服务(Business Innovation and Optimization Service)。用于监控业务系统运行时服务的业务性能,并通过及时了解到的业务性能和变化,采取措施适应变化的市场。
(5)开发服务(Development Service)。贯彻整个软件开发生命周期的开发平台,从需求分析到建模、设计、开发、测试和维护等全面的工具支持。

(6)IT服务管理(IT Service Management).支持业务系统运行的各种基础设施管理能力或服务,如安全服务、目录服务、系统管理和资源虚拟化。

四、SOA主要协议和规范

        Web 服务最基本的协议包括UDDI、WSDL、SOAP,通过它们可以提供直接而又简单的WebService支持,如图18.3所示。

(1)UDDI 协议:统一描述、发现和集成协议。包含了服务描述与发现的标准规范,它使得商业实体能够彼此发现;定义它们怎样在Internet 上互相作用,并在一个全球的注册体系架构中共享信息。
(2)Web服务描述语言(Web Services Description Language,WSDL):WSDL是一个用来描述Web服务和说明如何与Web服务通信的XML语言。描述了Web服务的3个基本属性。

        1)服务做些什么-服务所提供的操作(方法)。
        2)如何访问服务-和服务交互的数据格式以及必要协议。
        3)服务位于何处-协议相关的地址,如URL。

(3)SOAP 协议:SOAP是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议。
(4)REST规范:为了让不同的软件或者应用程序在任何网络环境下都可以进行信息的互相传递。微服务对外就是以REST API的形式暴露给调用者。RESTful即REST形式的,是对遵循REST设计思想同时满足设计约束的一类架构设计或应用程序的统称,这一类都可称为RESTful,可以理解为资源表述性状态转移:

        1)资源:将互联网中一切暴露给客户端的事物都可以看作是一种资源。
        2)表述:REST中用表述描述资源在Web中某一个时间的状态。
        3)状态转移:分为两种,应用状态-对某个时间内用户请求会话相关信息的快照,保存在客户端。资源状态-在服务端保存,是对某个时间资源请求表述的快照。
        4)超链接:通过在页面中嵌入链接和其他资源建立联系。

五、SOA设计的标准要求

(1)文档标准化。SOA服务具有平台独立的自我描述XML文档。Web服务描述语言是用于描述服务的标准语言。
(2)通信协议标准。SOA服务用消息进行通信,该消息通常使用XML Schema来定义(也称作 XML Schema Definition, XSD)。
(3)应用程序统一登记与集成。在一个企业内部,SOA服务通过一个扮演目录列表(Directory Listing)角色的登记处(Registry)来进行维护。应用程序在登记处(Registry)寻找并调用某项服务。统一描述、定义和集成是服务登记的标准。
(4)服务质量(QoS)主要包括:
        1)可靠性:服务消费者和服务提供者之间传输文档时的传输特性(且仅仅传送一次、最多传送一次、重复消息过滤、保证消息传送)。
        2)安全性:Web 服务安全规范用来保证消息的安全性。
        3)策略:服务提供者有时候会要求服务消费者与某种策略通信。例如,服务提供商可能会要求消费者提供 Kerberos 安全标示才能取得某项服务。
        4)控制:在SOA中,进程是使用一组离散的服务创建的。BPEL4WS或者WSBPEL(WebService Business Process Execution Language)是用来控制这些服务的语言。
        5)管理:针对运行在多种环境下的所有服务,必须有一个统一管理系统,以便系统管理员能够有效管理。任何根据WSDM实现的服务都可以由一个WSDM 适应(WSDM-compliant)的管理方案来管理。

六、SOA的作用与设计原则

(1)SOA的主要作用:打破信息孤岛,把应用和资源转换成服务。以及把这些服务变成标准的服务,形成资源的共享。
(2)SOA的设计原则主要有:
        1)无状态。以避免服务请求者依赖于服务提供者的状态。
        2)单一实例。以高内聚的实现方法,来避免功能冗余。
        3)明确定义的接口。服务的接口由WSDL定义,用于指明服务的公共接口与其内部专用实现之间的界线。
        4)自包含和模块化。服务封装了那些在业务上稳定、重复出现的活动和组件,实现服务的功能实体是完全独立自主的,独立进行部署、版本控制、自我管理和恢复。
        5)粗粒度。服务数量不应该太大,依靠消息交互而不是远程过程调用(Remote Procedure Call;RPC),通常消息量较大,但是服务之间的交互频度较低。

        6)服务之间的松耦合性。服务使用者看到的是服务的接口,其位置、实现技术和当前状态等对使用者是不可见的,服务私有数据对服务使用者是不可见的。
        7)重用能力。服务应该是可以复用的。
        8)互操作性、兼容和策略声明。为了确保服务规约的全面和明确,利用策略来定义可配置的互操作语义,来描述特定服务的期望、控制其行为。利用策略声明确保服务期望和语义兼容性方面的完整和明确。

七、SOA的设计模式

1.服务注册表模式

服务注册表支持驱动SOA治理的服务合同、策略和元数据的开发、发布和管理。
(1)服务注册:应用开发者,也叫服务提供者,向注册表公布它们的功能。
(2)服务位置:也就是服务应用开发者,帮助它们查询注册服务,寻找符合自身要求的服务。
(3)服务绑定:服务的消费者利用检索到的服务合同来开发代码,开发的代码将与注册的服务绑定、调用注册的服务以及与它们实现互动。

2.企业服务总线模式

        企业服务总线模式提供一种标准的软件底层架构,各种程序组件能够以服务单元的方式“插入”到该平台上运行,并且组件之间能够以标准的消息通信方式来进行交互。其核心功能如下:
(1)提供位置透明性的消息路由和寻址服务。程序组件之间无须关注对方的路由和寻址。
(2)提供服务注册和命名的管理功能。
(3)支持多种消息传递范型(如请求/响应、发布/订阅等)。
(4)支持多种可以广泛使用的传输协议。
(5)支持多种数据格式及其相互转换。
(6)提供日志和监控功能。

3.微服务模式

        微服务架构将一个大型的单个应用或服务拆分成多个微服务,可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级协议。微服务架构围绕业务领域将服务进行拆分,每个服务可以独立进行开发、管理和迭代,彼此之间使用统一接口进行交流,实现了在分散组件中的部署、管理与服务功能,使产品交付变得更加简单,从而达到有效拆分应用,实现敏捷开发与部署的目的。微服务模式的特点如下:
(1)复杂应用解耦:微服务架构将单一模块应用分解为多个微服务,同时保持总体功能不变。
(2)独立;微服务在系统软件生命周期中是独立开发、测试及部署的。
(3)技术选型灵活:微服务架构下系统应用的技术选型是去中心化的,每个开发团队可根据自身应用的业务需求发展状况选择合适的体系架构与技术。
(4)容错:由于各个微服务相互独立,故障会被隔离在单个服务中,并且系统其他微服务可通过重试、平稳退化等机制实现应用层的容错,从而提高系统应用的容错性。
(5)松耦合,易扩展:微服务架构中每个服务之间都是松耦合的,可以根据实际需求实现独立扩展,体现微服务架构的灵活性。单体应用架构与微服务架构的示意如图18.4所示。

4.微服务架构模式方案


微服务架构模式方案主要包括:
(1)聚合器微服务:聚合器充当流程指挥者,调用多个微服务实现系统应用程序所需功能。
(2)链式微服务:客户端或服务在收到请求后,会发生多个服务间的嵌套递归调用,返回经过合并处理的响应。
(3)数据共享微服务:该模式适用于在单体架构应用到微服务架构的过渡阶段,服务之间允许存在强耦合关系,例如存在多个微服务共享缓存与数据库存储的现象。
(4)异步消息传递微服务:对于一些不必要以同步方式运行的业务逻辑,可以使用消息队列代替 REST实现请求、响应,加快服务调用的响应速度。

5.微服务架构面临的问题与挑战

(1)服务发现与服务调用链跟踪变得困难。
(2)很难实现传统数据库的强一致性,转而追求最终一致性。

八、构建SOA架构时应该注意的问题

(1)原有系统架构中的集成需求包括;应用程序集成的需求、终端用户界面集成的需求、流程集成的需求以及已有系统信息集成的需求。
(2)服务粒度的控制以及无状态服务的设计的表述如下。
        1)服务粒度的控制:对于将暴露在整个系统外部的服务推荐使用粗粒度的接口,而相对较细粒度的服务接口通常用于企业系统架构的内部。
        2)无状态服务的设计:SOA系统架构中的具体服务应该都是独立的、自包含的请求,在实现这些服务的时候不需要前一个请求的状态,也就是说服务不应该依赖于其他服务的上下文和状态,即SOA架构中的服务应该是无状态的服务。

九、SOA实施的过程

(1)选择SOA解决方案主要从以下3个方面进行:
        1)尽量选择能进行全局规划的方案。
        2)选择时充分考虑企业自身的需求。
        3)从平台、实施等技术方面进行考察。
(2)业务流程分析主要关注:
        1)建立服务模型:自顶向下分解法、业务目标分析法、自底向上分析法。
        2)建立业务流程:建立业务对象(实体、过程、事件等业务对象)、建立服务接口、建立服务流程。

十、课后练习

1.下列关于SOA与微服务的描述,错误的是()。
A.微服务相比于SOA更加精细,微服务更多地以独立的进程的方式存在,互相之间并无影响
B.微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制
C.微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合
D.微服务更容易实现出高并发的特性,有助于实现互联网业务的秒杀促销活动

2.下列选项()不是关于SOA的服务架构。
A.业务逻辑服务
B.中间件服务
C.连接服务
D.控制服务

3.WSDL规范:Web服务描述语言(Web Services Descripton Language)是一个用来描述Web服务和说明如何与Web服务通信的XML语言,描述了Web服务的三个基本属性,即()。
a.服务做些什么 b.如何访问服务 c.服务位于何处 d.服务是否可用
A. abc
B. acd
C.bcd
D.abd

4.SOA的设计原则为无状态、单一实例、明确定义的接口、()、粗粒度、服务之间的松耦合性、重用能力、互操作性。
A.复用性和构件化
B.自包含和模块化
C.独立性和构件化
D.隔离性和归一化

5.微服务架构将一个大型的单个应用或服务拆分成多个微服务,可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级协议。微服务架构围绕业务领域将服务进行拆分,每个服务可以(),彼此之间使用统一接口进行交流,实现了在分散组件中的部署、管理与服务功能,使产品交付变得更加简单,从而达到有效拆分应用,实现敏捷开发与部署的目的。
A.独立进行开发、管理、迭代
B.独立进行部署、运维、升级
C.独立进行测试、交付、验收
D.独立进行发布、发现、访问

答案解析:

1、解析:微服务在实现高并发方面是局限的。只有没有调用关系的微服务,相对于单体服务来说,才有并发性的提升。
答案:D

2、解析:SOA的参考架构中包括业务逻辑服务(Business Logic Service)、控制服务(ControlService)、连接服务(Connectivity Service)、业务创新和优化服务(Business Innovation andOptimization Service)、开发服务(Development Service)、IT 服务管理(IT Service Management)。
答案:B

3、解析:服务做些什么:服务所提供的操作(方法)。如何访问服务:和服务交互的数据格式以及必要协议。服务位于何处:协议相关的地址,如URL.
答案:A

4、解析:SOA的设计原则为无状态、单一实例、明确定义的接口、自包含和模块化、粗粒度、服务之间的松耦合性、重用能力、互操作性。
答案:B

5、解析:微服务架构围绕业务领域将服务进行拆分,每个服务可以独立进行开发、管理和迭代,彼此之间使用统一接口进行交流,实现了在分散组件中的部署、管理与服务功能。
答案:A

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

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

相关文章

[数据集][目标检测]水面垃圾检测数据集VOC+YOLO格式2027张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2027 标注数量(xml文件个数):2027 标注数量(txt文件个数):2027 标注…

【代码随想录训练营第42期 Day56打卡 - 图论Part6 - 并查集2 - 冗余连接问题

目录 一、做题心得 二、题目与题解 题目一:108. 冗余连接 题目链接 题解:并查集 题目二:109. 冗余连接II 题目链接 题解:并查集 三、小结 一、做题心得 冗杂连接问题是图论章节应用并查集的经典问题。所有的顶点通过边相…

互联网+教育中小学校园云解决方案

1. “互联网”教育的定义与目标 “互联网”教育是指利用信息技术,包括移动互联网、云计算、大数据和物联网等,推动教育变革和创新。其目标是构建一个网络化、数字化、个性化和终身化的教育体系,实现学习型社会的建设,培养创新人才…

【Linux:文件系统】

了解磁盘结构 盘片可读可写一面盘面有一个磁头,一个盘片俩磁头磁盘本质是一个机械设备磁盘中的盘片高速旋转是为了定为扇区磁盘中的磁头 左右摆动定义磁道磁盘的读写单位:4kb /512字节 如何找到一个指定的扇区 找到指定的磁头(header)找到指定…

动手学深度学习(pytorch土堆)-03Transforms简单入门学习

1 torchvision中的transforms主要是对图片进行一些变换。 transforms结构及用法 将特定格式图片经过transforms里面的工具处理输出预期的图像 Totensor使用 tensor数据类型可以理解为包装了一些反向神经网络所需要的一些参数 PIL_Image读取 img_path"hymenoptera_da…

【软件测试】测试的分类

目录 🎄为什么要对软件测试进行分类? 🌳按照测试目标分类 🚩界面测试 🚩功能测试 🚩性能测试 🚩可靠性测试 🚩安全性测试 🚩易用性测试 🏀标准性和规…

QT Creater实现国庆节主题项目【0基础完成版】

本文适用对象 想要学习qt creater的小白;想要学习c++制作软件的编程爱好者。可以先下载这篇博客绑定的资源,然后一边操作,一边学习,会更高效~0. 创建初始项目 一步步来操作吧,首先下载qt creter,之前发布过相关资源,大家直接查找下载,或者自行下载。 1. 初始代码 mai…

RLFD: Imitation Bootstrapped Reinforcement Learnin

CoRR 2023 paper 视觉或向量输入下的RLFD方法,利用模仿学习得到的策略,以自举方式引导在强化学习的策略优化以及价值函数优化。同时,为了更好的表征,IBRL选取VIT-based的网络以及添加Dropout 到policy。 Method 首先利用模仿学…

2024.9.11

在界面上显示当前时间,再设置一个闹钟,到了时间就吱吱响(至少5遍) #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),speecher(new QTe…

常见加解密算法09 - HASH 算法

各位读者你们好啊,今天讨论一下 HASH 算法,也是这个系列的完结篇!!! Hash算法,又称散列算法,是一种从任意长度的数据字符串中创建小的、固定长度的值的函数,该值通常被视为数据的“指…

51单片机快速入门之点灯 STC 51单片机

第一步创建工程 第二步加载头文件 第三步编写代码 点灯完成 解释:主函数为main() 内部P1控制的是p1.0-p1.7 引脚 0为低电平

云计算实训41——部署project_exam_system项目(续)

# 创建脚本,可以在java环境中运行任何的jar包或者war包#!/bin/bash/usr/local/jdk/bin/java -jar /java/src/*.?ar一、思路分析 (1)nginx 1、下载镜像,将本地的dist项目的目录挂载在容器的/usr/share/nginx/html/ 2、启动容器 …

freertos 任务调度—抢占式, 时间片

FreeRTOS 操作系统支持三种调度方式: 抢占式调度,时间片调度和合作式调度。 实际应用主要是抢占式调度和时间片调度,合作式调度用到的很少. 1,抢占式调度 每个任务都有不同的优先级, 任务会一直运行直到被高优先级任务抢占或者遇到…

【MySQL】查询语句之inner、left、right、full join 的区别

前言: INNER JOIN 和 OUTER JOIN 是SQL中常用的两种连接方式,用于从两表活多表中提取相关的数据。两者区别主要在于返回的 结果集 如何处理 匹配 与 不匹配 的行。 目录 1、INNER JOIN 2、OUTER JOIN 3、总结 1、INNER JOIN 称为内连接,只…

SVGJS操作

svgjs用于操作 SVG 和动画的轻量级库。 官网 SVG.js v3.2 |家 (svgjs.dev) 效果 代码如下 <template><h3>测试操作已有SVG</h3><button click"changeText()">利用ID定位</button><button click"changeChild()">chan…

【Hot100】LeetCode—322. 零钱兑换

目录 1- 思路动态规划 2- 实现⭐322. 零钱兑换——题解思路 3- ACM 实现 原题链接&#xff1a;322. 零钱兑换 1- 思路 动态规划 动规五部曲 1- 定义 dp 数组确定含义 dp[j] 代表凑到金钱为 j 的最少硬币个数 2- 递推公式 dp[j] Math.min(dp[j],dp[amount-]1) 3- 初始化 dp[…

【苍穹外卖】前端 Day 1

1 Vue 1.1 通过 vue cli 脚手架创建前端工程 1.2 项目结构 1.3 启动项目 VS Code 启动前端项目&#xff1a; npm run serve 注意这里占用端口号 8080 与 java springboot 占用端口号一致&#xff0c;有冲突 serve 是这个名字 终止&#xff1a;ctrl c 修改端口号 2 vue 基本…

信刻光盘安全隔离与信息交换系统

随着各种数据传输、储存技术、信息技术的快速发展&#xff0c;保护信息安全是重中之重。军工、政府、部队及企事业单位等利用A网与B网开展相关工作已成为不可逆转的趋势。针对于业务需要与保密规范相关要求&#xff0c;涉及重要秘密信息&#xff0c;需做到安全的物理隔离&#…

离线版问卷-可集成到现有系统

目录标题 离线版问卷&#x1f4a1;前言亮点场景题外话 &#x1f3a8; 预览&#x1f308; 技术栈&#x1f4e6; 仓库&#x1f4bb; 初始化&#x1f680; 启动&#x1f6e0;️ 打包&#x1f5c2; 目录结构✨ 使用方法集成【设计问卷】集成【填写问卷】集成【只读问卷】集成【填答…

省委书记邀约大学生创业,长沙又一次为年轻人沸腾

敢想敢做的大学生&#xff0c;一直是创新创业的主力军。尤其是这些年“学术型”创业团队在各行各业越来越多见&#xff0c;市场对他们的接纳和支持力度也越来越强&#xff0c;给了新一代的大学生们更大的底气。 以往&#xff0c;大学生创业经常“落地生根”&#xff0c;先搞事…