十五、软考-系统架构设计师笔记-面向服务架构设计理论与实践

1、SOA相关概念

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

业务流程与BPEL
业务流程是指为了实现某种业务目的行为所进行的流程或一系列动作。在计算机领域,业务流程代表的是某一个问题在计算机系统内部得到解决的全部流程。BPEL(面向Web 服务的业务流程执行语言),是一种基于XML的用来描写业务过程的编程语言,被描写的业务过程的每个单一步骤则由Web服务来实现。使用 BPEL,用户可以通过组合、编排和协调 Web 服务自上而下地实现面向服务的体系结构(SOA)。BPEL 提供了一种相对简单易懂的方法,可将多个 Web 服务组合到一个新的复合服务(称作业务流程) 中。

两种方式组合 Web 服务:

  • 编制
  • 编排

从服务为中心的视角来看,企业集成的架构划分为6大类。

  • (1)IT 服务管理 (IT Service Management):支持业务系统运行的各种基础设施管理能力或服务,如安全服务、目录服务、系统管理和资源虚拟化。
  • (2)业务逻辑服务(Business Logic Service): 包括用于实现业务逻辑的服务和执行业务逻辑的能力,其中包括业务应用服务、业务伙伴服务以及应用和信息资产。
  • (3)连接服务(Connectivity Service):通过提供企业服务总线提供分布在各种架构元素服务间的连接性。
  • (4)控制服务(Control Service): 包括实现人、流程和信息集成的服务,以及执行这些集成逻辑的能力。
  • (5)业务创新和优化服务(Business Innovation and OptimizationService):用于监控业务系统运行时服务的业务性能,并通过及时了解到的业务性能和变化,采取措施适应变化的市场。
  • (6)开发服务(Development Service):贯彻整个软件开发生命周期的开发平台,从需求分析,到建模、设计、开发、测试和维护等全面的工具支持。

Web 服务作为实现 SOA 中服务的最主要手段。Web 服务最基本的协议包括UDDI、WSDL和SOAP,通过它们,可以提供直接而又简单的 Web Service 支持。

在这里插入图片描述

UDDI协议
UDDI(统一描述、发现和集成协议)是一种用于描述、发现、集成Web Service的技术,它是Web Service协议栈的一个重要部分。通过UDDI,企业可以根据自己的需要动态查找并使用Web服务,也可以将自己的Web服务动态地发布到UDDI注册中心,供其他用户使用。

WSDL规范
WSDL (Web 服务描述语言),是一个用来描述 Web 服务和说明如何与 Web 服务通信的XML语言。也就是描述与目录中列出的Web服务进行交互时需要绑定的协议和信息格式。WSDL描述Web服务的公共接口。通过WSDL,可描述Web 服务的三个基本属性。

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

WSDL文档以端口集合的形式来描述 Web 服务,WSDL服务描述包含对一组操作和消息的一个抽象定义,绑定到这些操作和消息的
一个具体协议,和这个绑定的一个网络端点规范。WSDL文档被分为两种类型:服务接口和服务实现。

SOAP协议
SOAP(简单对象访问协议)是在分散或分布式的环境中交换信息的简单协议,是一种轻量的、简单的、基于XML 的协议。包括4部分:

  • 封装(Envelop):定义了一个框架 , 该框架描述了消息的内容是什么,是谁发送的,谁应当接收并处理以及如何处理它;
  • 编码规则:定义了一种序列化的机制,用于表示应用程序需要使用的数据类型的实例;
  • SOAP RPC 表示:定义了用于表示远程过程调用和应答的协定;
  • 绑定(Binding):定义了SOAP使用哪种协议交换信息。HTTP/TCP/UDP协议都可以。

2、SOA设计原则

SOA的设计原则如下:

  • (1)无状态。避免服务请求者依赖于服务提供者的状态。
  • (2)单一实例。避免功能冗余。
  • (3)明确定义的接口。服务的接口由 WSDL定义,用于指明服务的公共接口与其内部专用实现之间的界线。WS-Policy 用于描述服务规约,XML模式用于定义所交换的消息格式(即服务的公共数据)。使用者依赖服务规约调用服务,所以服务定义必须长时间稳定,一旦公布,不能随意更改;服务的定义应尽可能明确,减少使用者的不适当使用;不要让使用者看到服务内部的私有数据。
  • (4)自包含和模块化。服务封装了那些在业务上稳定、重复出现的活动和组件,实现服务的功能实体是完全独立自主的,独立进行部署、版本控制、自我管理和恢复。
  • (5)粗粒度。服务数量不应该太大,依靠消息交互而不是远程过程调用(RPC),通常消息量比较大,但是服务之间的交互频度较低。
  • (6)服务之间的松耦合性。服务使用者看到的是服务的接口,其位置、实现技术和当前状态等对使用者是不可见的,服务私有数据对服务使用者是不可见的。
  • (7)重用能力。服务应该是可以重用的。
  • (8)互操作性、兼容和策略声明。为了确保服务规约的全面和明确,策略成为一个越来越重要的方面。这可以是技术相关的内容,例如一个服务对安全性方面的要求;也可以是跟业务有关的语义方面的内容,例如需要满足的费用或者服务级别方面的要求,这些策略对于服务在交互时是非常重要的。WS-Policy 用于定义可配置的互操作语义来描述特定服务的期望、控制其行为。在设计时,应该利用策略声明确保服务期望和语义兼容性方面的完整和明确。

服务注册表模式
服务注册表(Service Registry)主要在 SOA设计时使用,虽然它们常常也具有运行时段的功能。注册表包括有关服务和相关软件组件的配置、遵从性和约束配置文件。任何帮助注册发现和检索服务合同、元数据和策略的信息库、数据库、目录或其他节点都可以被认为是一个注册表。
在这里插入图片描述

  • (1)服务注册:应用开发者,也叫服务提供者,向注册表公布他们的功能。他们公布服务合同,包括服务身份、位置、方法、绑定、配置、方案和策略等描述性属性。
  • (2)服务位置:也就是服务应用开发,帮助他们查询注册服务,寻找符合自身要求的服务。注册表让服务的消费者检索服务合同。
  • (3)服务绑定:服务的消费者利用检索到的服务合同来开发代码,开发的代码将与注册的服务绑定、调用注册的服务以及与它们实现互动。

企业服务总线模式
企业服务总线 (ESB),提供一种标准的软件底层架构,各种程序组件能够以服务单元的方式“插入”到该平台上运行,并且组件之间能够以标准的消息通信方式来进行交互。

在这里插入图片描述

ESB 本质上是以中间件形式支持服务单元之间进行交互的软件平台。各种程序组件以标准的方式连接在该“总线”上,并且组件之间能够以格式统一的消息通信的方式来进行交互。典型ESB 环境中组件间的交互过程是:首先由服务请求者触发一次交互过程,产生一个服务请求消息,并将该消息按照 ESB 的要求标准化,然后标准化的消息被发送给服务总线。ESB 根据请求消息中的服务名或者接口名进行目的组件查找,将消息转发至目的组件,并最终将处理结果逆向返回给服务请求者。这种交互过程不再是点对点的直接交互模式,而是由事件驱动的消息交互模式。

通过这种方式,ESB 最大限度上解耦了组件之间的依赖关系,降低了软件系统互连的复杂性。连接在总线上的组件无需了解其他
组件和应用系统的位置及交互协议,只需要向服务总线发出请求,消息即可获得所需服务。服务总线事实上实现了组件和应用系统的位置透明和协议透明。技术人员可以通过开发符合 ESB标准的组件(适配器)将外部应用连接至服务总线,实现与其他系统的互操作。同时,ESB 以中间件的方式,提供服务容错、负载均衡、QoS 保障和可管理功能。

例:
( )是由中间件技术实现并支持SOA的一组基础架构,它提供了一种基础设施,其优势在于( )。
A. ESB B.微服务 C.云计算 D. Multi-Agent System

A.支持了服务请求者与服务提供者之间的直接链接
B.支持了服务请求者与服务提供者之间的紧密耦合
C.消除了服务请求者与服务提供者之间的直接链接
D.消除了服务请求者与服务提供者之间的关系

答案:A、C
解析:
ESB 本质上是以中间件形式支持服务单元之间进行交互的软件平台
ESB 最大限度上解耦了组件之间的依赖关系

ESB的核心功能如下:

  • (1)提供位置透明的消息路由和寻址服务。
  • (2)提供服务注册和命名的管理功能。
  • (3)支持多种消息传递范型(如请求/响应、发布/订阅等)。
  • (4)支持多种可以广泛使用的传输协议。
  • (5)支持多种数据格式及其相互转换。
  • (6)提供日志和监控功能。

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

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

相关文章

技术驱动校园招聘:Java+SpringBoot+Vue的实践之旅

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

【Vue3】学习命名路由和嵌套路由

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

湘菜馆如何选择合适的油烟净化器?打造清新餐饮厨房

我最近分析了餐饮市场的油烟净化器等产品报告,解决了餐饮业厨房油腻的难题,更加方便了在餐饮业和商业场所有需求的小伙伴们。 湘菜馆是传统的中国美食代表之一,然而烹饪湘菜的同时,油烟也是无法避免的问题。为了打造一个清新的餐…

面视题之——索引失效

面视题之——索引失效 失效场景一 当我们执行sql语句的查询条件中包含函数,那么数据库就无法使用索引来优化查询,因为它需要对每一行数据都调用函数来计算结果,这会导致查询速度变慢。 例如: SELECT * FROM table_name WHERE nam…

C++程序设计-第九/十一/十二章 模板/输入/输出流/标准模板库【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下C程序设计中的重点概念,以供大家期末复习和考研复习的时候使用。 C程序设计系列文章传送门: 第一章 面向对象基础 第四/五章 函数和类和对象 第六/七/八章 运算符重载/包含与继承/虚函…

wsl安装及Anaconda配置

文章目录 wslAnaconda下载安装包安装Anaconda配置环境写在最后 wsl 照着一步一步配置就好 wsl_update链接 Anaconda 下载安装包 找到自己所需的 在终端输入: wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh将Anaconda3-2024.02-…

软件测试面试都问了什么?中级软件测试岗面试(4面)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 一面(…

Pulsar消息路由深入剖析

一、概述 大数据背景下,分区应该是所有组件必备的基本条件,否则面对海量数据时无论是计算还是存储都容易遇到瓶颈。跟其他消息系统一样,Pulsar通过Topic将消息数据进行业务层面划分管理,同时也支持Topic分区,通过将多…

H12-811_190

190.(多选题)关于以太网子接口描述正确有哪些? A.子接口不能配置IP地址 B.一个子接口可以绑定多个VLAN C.子接口的IP地址不能属于同一网段 D.子接口ID要与VLAN ID相同 答案:C 注释: 大家如果有不同的理解欢迎留言讨论。 题目显示是多选题…

2024年信息技术与计算机工程国际学术会议(ICITCEI 2024)

2024年信息技术与计算机工程国际学术会议(ICITCEI 2024) 2024 International Conference on Information Technology and Computer Engineering ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 大会主题: 信息系统和技术…

web学习笔记(二十九)jQuery

目录 1. jQuery 1.1 什么是jQuery 1.2 原生js的缺点 1.3 原生jQuery的优势 1.4 jQuery中的入口函数 1.5 jQuery入口函数和window.onload入口函数的区别 1.6 $(参数)中参数的含义 1.7DOM和jQuery相互转换 、 1.7.1 jQuery转DOM 1.7.2 DOM转 jQuery 1.8设置、获取文本内…

软件应用实例分享,茶楼计时收费管理系统软件,佳易王茶社吧台计时收费软件试用版教程

软件应用实例分享,茶楼计时收费管理系统软件,佳易王茶社吧台计时收费软件试用版教程 一、前言 以下软件操作教程以 佳易王茶室计时计费软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 【茶楼计时计费软件&…

解决Java项目运行时错误:“Command line is too long”

在开发Java应用的过程中,你可能偶尔会遇到“Error running ‘Application’: Command line is too long”的问题。这是因为Java虚拟机(JVM)在启动时,如果传递给它的类路径(classpath)过长,超过了…

Java数据类型api记录

关于数组的一些用法 1. 数组排序 Java中可以使用Arrays类的sort()方法对数组进行排序。 Arrays.sort(arr); // 调用Arrays类的sort()方法对数组进行排序 关于ArrayList的用法 1. 将几个零散的数值转化为ArrayList Arrays.asList(nums[i], nums[left], nums[right]) Array…

基于Java (spring-boot)的人才招聘系统

一、项目介绍 公司: IT公司的注册与管理 招聘要求的发布与维护 站内私信 求职者: 招聘需求浏览 招聘需求筛选(按岗位、薪酬、城市、地区等) 简历编辑,建立投递等 站内私信 管理员: 用户信息维护 岗…

ChatGPTPLUS、Poe、Claude介绍,以及如何订阅

我使用了FOmepay的556150卡段升级了ChatGPTPLUS、POE、Claude3 一、ChatGPT Plus 是什么? ChatGPT Plus 是基于 ChatGPT 的月订阅升级方案,它可以提供更快的回应速度、更高的可用性以及优先使用到新功能的权限。 ChatGPT Plus 和原版 ChatGPT 的差异 …

【黑马程序员】python数据容器

文章目录 python数据容器认识数据容器列表列表定义list下标索引列表的常用操作方法列表的查询功能列表的修改功能插入元素追加元素删除元素删除某元素在列表中的第一个匹配项清空列表统计某元素在列表中的数量统计列表中元素个数总结 列表遍历 元组为什么需要元组定义元组下标索…

跟着GPT学设计模式之桥接模式

说明 桥接模式,也叫作桥梁模式,英文是 Bridge Design Pattern。在 GoF 的《设计模式》一书中,桥接模式是这么定义的:“Decouple an abstraction from its implementation so that the two can vary independently。”翻译成中文就…

LeetCode[题解] 1261. 在受污染的二叉树中查找元素

首先我们看原题 给出一个满足下述规则的二叉树: root.val 0如果 treeNode.val x 且 treeNode.left ! null,那么 treeNode.left.val 2 * x 1如果 treeNode.val x 且 treeNode.right ! null,那么 treeNode.right.val 2 * x 2 现在这个…

每日一题 第二期 洛谷 最短路径

【模板】单源最短路径(标准版) 题目链接 题目背景 2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路。 然后呢? 100 → 60 100 \rightarrow 60 100→60; Ag →…