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

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.hqwc.cn/news/536834.html

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

相关文章

Vue2(五):收集表单数据、过滤器、内置指令和自定义指令

一、回顾 总结Vue监视数据 1.Vue监视数据的原理: 1.vue会监视data中所有层次的数据。 2.如何监测对象中的数据?通过setter实现监视,且要在new Vue时就传入要监测的数据。(1).对象中后追加的属性,Vue默认不做响应式处理(2&#…

C语言从入门到熟悉------第三阶段

数组 什么是数组呢?顾名思义数组就是很多数的组合!那么这些数有没有什么要求呢?是不是不管什么数组合在一起都是数组呢?第一,这些数的类型必须相同!第二,这些数在内存中必须是连续存储的。也就…

java-集合工具类Collections

我们在使用它的时候记得导包 常见API 我们就简单看看第一第二个方法,代码如下,其余的知道用就行

LDA主题模型学习笔记

(1)LDA的基本介绍(wiki) LDA是一种典型的词袋模型,即它认为一篇文档是由一组词构成的一个集合,词与词之间没有顺序以及先后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题…

STM32第八节:位带操作——GPIO输出和输入

前言 我们讲了GPIO的输出,虽然我们使用的是固件库编程,但是最底层的操作是什么呢?对,我们学习过51单片机的同学肯定学习过 sbit 修改某一位的高低电平,从而实现对于硬件的控制。那么我们现在在STM32中有没有相似的操作…

前端面试 ===> 【Vue2】

Vue2 相关面试题总结 1. 谈谈对Vue的理解 Vue是一种用于构建用户页面的渐进式JavaScript框架,也是一个创建SPA单页面应用的Web应用框架,Vue的核心是 数据驱动试图,通过组件内特定的方法实现视图和模型的交互;特性:&a…

pkav之当php懈垢windows通用上传缺陷

环境&#xff1a; Windowsnginxphp 一、php源码 <?php //U-Mail demo ... if(isset($_POST[submit])){$filename $_POST[filename];$filename preg_replace("/[^\w]/i", "", $filename);$upfile $_FILES[file][name];$upfile str_replace(;,&qu…

清华把大模型用于城市规划,回龙观和大红门地区成研究对象

引言&#xff1a;参与式城市规划的新篇章 随着城市化的不断推进&#xff0c;传统的城市规划方法面临着越来越多的挑战。这些方法往往需要大量的时间和人力&#xff0c;且严重依赖于经验丰富的城市规划师。为了应对这些挑战&#xff0c;参与式城市规划应运而生&#xff0c;它强…

【文献阅读】A Fourier-based Framework for Domain Generalization(基于傅立叶的领域泛化框架)

原文地址&#xff1a;https://arxiv.org/abs/2105.11120 摘要 现代深度神经网络在测试数据和训练数据的不同分布下进行评估时&#xff0c;存在性能下降的问题。领域泛化旨在通过从多个源领域学习可转移的知识&#xff0c;从而泛化到未知的目标领域&#xff0c;从而解决这一问…

面试复盘记录(数据开发)

一、apple外包1.矩阵顺时针旋转遍历2.两表取差集 二、 一、apple外包 没问理论&#xff0c;就两个算法题。 1.矩阵顺时针旋转遍历 Given an m x n matrix, return all elements of the matrix in spiral order.Example 1:Input: matrix [[1,2,3],[4,5,6],[7,8,9]] Output: …

【LeetCode热题100】141. 环形链表(链表)

一.题目要求 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置…

基于FPGA的图像锐化算法(USM)设计

免费获取源码请关注微信号《FPGA学习笔记册》&#xff01; 1.图像锐化算法说明 图像锐化算法在实际的图像处理应用很广泛&#xff0c;例如&#xff1a;医学成像、工业检测和军事领域等&#xff1b;它的作用就是将模糊的图像变的更加清晰。常用的图像锐化算法有拉普拉斯算子、s…