系统架构设计师-第15章-面向服务架构设计理论与实践-软考学习笔记

面向服务的体系结构(Service-Oriented Architecture, SOA)

面向服务的体系结构(Service-Oriented Architecture, SOA)是一种软件架构模式,它将应用程序的不同功能组织为一组可重用的、松耦合的、自治的服务,这些服务通过标准化的接口进行交互。SOA的优点在于提高了系统的灵活性、可靠性、可扩展性和可重用性,同时使得不同技术平台之间的集成更为容易。

SOA可以被认为是一种面向服务的编程哲学,它可以被应用于任何类型的应用程序,无论是Web应用程序、企业应用程序还是移动应用程序。在SOA中,服务被视为系统的组成部分,它们可以独立开发、测试、部署和管理,也可以通过组合形成更复杂的应用程序。

SOA的核心概念包括服务、服务协定、服务注册与发现、服务编排和服务治理等。SOA的关键技术包括消息传递、Web服务、XML、SOAP、WSDL、UDDI等。

总之,SOA是一种非常有用的架构模式,可以帮助企业构建灵活、可扩展、可重用、高效的应用程序,从而提高企业的竞争力和创新能力。

SOA 的相关概念

SOA的定义

从应用的角度定义,可以认为SOA 是一种应用框架,它着眼于日常的业务应用,并将它们划分为单独的业务功能和流程,即所谓的服务。

从软件的基本原理定义,可以认为SOA 是一个组件模型,自将应用程序的不同功能单元(称为服务〉通过这些服务之间定义良好的接口和契约联系起来。

业务流程与BPEL

业务流程是指为了实现某种业务目的行为所进行的流程或一系列动作。

BPEL CBusiness Process Execution Language For Web Services) 翻译成中文的意思是面向Web 服务的业务流程执行语言,也有的文献简写成BPEL4WS

SOA 的发展历史

SOA(Service-Oriented Architecture,面向服务的架构)的发展历史可以追溯到20世纪90年代初期。当时,企业面临着许多挑战,如快速变化的业务需求、复杂的IT环境、无法集成的系统等。为了应对这些挑战,IT行业开始寻找新的软件架构模式。

在这种情况下,SOA应运而生。SOA是一种基于服务的软件架构,它将软件系统划分为多个互相协作的服务,这些服务通过标准化的接口进行通信。SOA的目标是通过服务重用和灵活性提高系统的可靠性和可维护性,降低开发和维护成本。

SOA的发展可以分为三个阶段:

1. 早期阶段(1990年代中期-2000年):在这个阶段,SOA的概念开始出现,但它还没有得到广泛应用。此时,SOA的实现方式主要是通过Web服务来实现。

2. 成熟阶段(2001年-2007年):在这个阶段,SOA的概念得到了普及,并且开始被广泛应用。许多企业开始采用SOA来解决业务需求和系统集成的问题。此时,SOA的实现方式不仅限于Web服务,还包括消息传递、RESTful等方式。

3. 后SOA阶段(2008年至今):在这个阶段,SOA的发展开始趋于稳定,越来越多的企业开始将SOA作为核心架构。与此同时,面向微服务的架构也开始兴起,成为SOA的一种衍生形式。

总之,SOA的发展历程充满了探索和创新,它不断推动着IT行业的进步和变革。

SOA的发展历史

萌芽阶段

标准化阶段

成熟应用阶段

国内SOA的发展现状与国外对比

SOA的微服务化发展

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

SOA 的参考架构

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

1. 连接服务一一企业服务总线

企业服务总线CEnterprise Service Bus, ESB) 是过去消息中间件的发展,采用了"总线"这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务的级别上动态地互联互通。

2. 业务逻辑服务
3. 控制服务
4 . 开发服务
5. 业务创新和优化
6.IT 服务管理

UDDI协议

UDDI(Universal Description, Discovery and Integration)协议是一种全球性的面向网络服务的标准,用于描述、发现和集成Web服务。UDDI协议定义了一种机制来注册和发现web服务,使得企业能够轻松地找到他们需要的服务以及将自己的服务暴露出去,以便其他人可以使用。

UDDI协议包括三个核心组件:

1. UDDI注册:用于发布服务,包括服务的名称、描述、分类、访问点等。

2. UDDI发现:用于搜索服务,可以根据服务的名称、分类、关键字等来搜索服务。

3. UDDI集成:用于将不同的服务组合在一起,以构建更复杂的应用程序。

UDDI协议的优点包括:

1. 可以帮助企业更轻松地发现和集成现有的Web服务。

2. 提供了一种标准化的机制,使得不同平台上的应用程序可以相互通信。

3. 可以帮助企业降低开发和维护成本,提高应用程序的可靠性和可扩展性。

总之,UDDI协议是一种非常有用的标准,可以帮助企业更轻松地构建和集成Web服务,同时还可以提高应用程序的可靠性和可扩展性。

WSDL规范

通过WSDL.可描述叭ieb 服务的三个基本属性。
(1)服务做些什么一一服务所提供的操作(方法)。
(2)如何访问服务一一和服务交互的数据格式以及必要协议。
(3)服务位于何处一一协议相关的地址,如URL 。

WSDL 文档被分为两种类型:服务接口(Service Interface) 和服务实现(Service Tmplementations ) 

WSDL(Web Services Description Language)是一种用于描述 Web 服务的 XML 规范。它提供了一种统一的方式来描述 Web 服务,以便不同的应用程序可以相互协作。以下是 WSDL 规范的一些重要方面:

1. 描述 Web 服务:WSDL 提供了一种标准化的方式来描述 Web 服务的功能、操作和输入/输出参数等。

2. 技术无关性:WSDL 是一种独立于编程语言和平台的规范,因此可以从不同语言和平台中调用 Web 服务。

3. Web 服务发现:WSDL 文档可以被用于自动化的 Web 服务发现和调用,使得应用程序能够自动查询可用的 Web 服务。

4. 统一的协议:WSDL 规范提供了一个统一的方法来描述 Web 服务所使用的协议,如 SOAP、HTTP 等。

5. 与 XML Schema 集成:WSDL 规范可以与 XML Schema 集成,以便提供一个完整的 Web 服务描述。

总之,WSDL 规范为不同的应用程序提供了一种标准化的方式来描述和调用 Web 服务,使得应用程序可以更方便、更可靠地协作。

SOAP协议

SOAP是一种用于Web服务通信的协议,全称为Simple Object Access Protocol(简单对象访问协议)。它是一种基于XML的协议,可以在HTTP、SMTP等应用层协议上进行通信。SOAP的主要作用是通过网络传输多种数据格式,如XML、JSON等。它的特点是基于标准化协议,可运行在多种环境中,并且支持多种数据格式和编程语言。同时,SOAP还具有安全性、可靠性和可扩展性等特点。传统的SOA(面向服务的架构)大型系统中常使用SOAP。

REST规范

1 . 资源(Resource)

2. 表述( Representational )

3. 状态转移( State Transfer )

4 . 超链接

REST 是一种设计风格而不是一个架构。

SOA 设计的标准要求

文档标准化

通信协议标准

SOA 服务用消息进行通信,该消息通常使用XML Schema 来定义(也称作XSD , XML Schema Defìnition) 。消费者和提供者,或消费者和服务之间的通信多见于不知道提供者的环境中。服务间的通信也可以看作企业内部处理的关键商业文挡。

应用程序统一登记与集成

在一个企业内部, SOA 服务通过一个扮演目录列表( Directory Listing) 角色的登记处(Registry) 来进行维护。应用程序在登记处CRegistry )寻找井调用某项服务。统一描述、定义和集成是服务登记的标准。

服务质量(QoS)

可靠性

安全性

策略

控制

管理

SOA 的作用

SOA 对于实现企业资源共享,打破"信息孤岛"的步骤如下。
(1)把应用和资源转换成服务。
(2) 把这些服务变成标准的服务,形成资源的共享。

SOA 的设计原则

(1) 无状态。以避免服务请求者依赖于服务提供者的状态。
(2) 单一实例。避免功能元余。
(3) 明确定义的接口
(4) 自包含和模块化。
(5) 粗粒度。
(6) 服务之间的松耦合性。
(7) 重用能力. 服务应该是可以重用的。
(8) 互操作性、兼容和策略声明。

SOA 的设计模式

服务注册表模式

服务注册表(Service Registry〉主要在SOA 设计时段使用,虽然它们常常也具有运行时段的功能。

企业服务总线模式

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

案例研究

协同企业服务总线SynchroESB 就是基于SOA 体系结构,以ESB 为底居架构,包含丰富的预制程序组件,集中式管理工具和可视化应用程序开发界丽的服务整合软件平台.

微服务模式

1. 微服务架构概述

2. 微服务架构模式方案

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

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

原有系统架构中的集成需求

服务粒度的控制以及无状态服务的设计

SOA 实施的过程

选择SOA解决方案

1 . 尽量选择能进行全局规划的方案

2. 选择时充分考虑企业自身的需求

3. 从平台、实施等技术方面进行考察

业务流程分析

1. 建立服务模型

2 . 建立业务流程

SOA 实施的过程可以分为以下几个步骤:

1. 确定业务需求和目标:在开始实施 SOA 前,需要确定具体的业务需求和目标,以便确保 SOA 的实施过程与业务的需求相匹配。

2. 设计服务架构:在确定了业务需求和目标后,需要开始设计服务架构,包括确定服务的功能和定义服务接口等。

3. 实施服务:实现服务的开发,包括编写代码、测试和发布等。

4. 注册和发现服务:在实施服务后,需要将服务注册到服务注册表中,以便其他应用程序可以发现和使用它们。

5. 集成服务:在注册和发现服务后,需要将服务集成到应用程序中,并进行测试和验证。

6. 监控和管理服务:需要实现监控和管理服务的工具,以便可以监测服务的使用情况和进行故障排除。

7. 持续优化服务:在服务实施后,需要持续优化服务的性能和功能,以适应业务需求的不断变化。

以上是 SOA 实施过程的基本步骤,但实际的 SOA 实施过程可能因组织和项目的不同而有所不同。

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

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

相关文章

在前端实现小铃铛上展示消息

点击铃铛显示如下消息框&#xff1a; 如果点击消息&#xff0c;可以实现消息从列表中移除,并从铃铛总数上进行扣减对应的已读消息数。 关于以上功能的实现方式&#xff1a; <!-- 铃铛位置 --><i class"el-icon-bell" click"showPopover true"&…

ubuntu启动报错error: proc_thermal_add, will cont

如题&#xff0c;ubuntu启动报错error: proc_thermal_add, will cont 截图如下&#xff1a; 困扰了我很久&#xff0c;差点就打算重装系统&#xff0c;准备放弃了&#xff0c;但是感谢国外的老哥&#xff0c;写了一篇非常详细的解决方案&#xff0c;我搬过来。 解决方案&#…

03-对象

对象 对象1.对象的创建字面量模式构造函数模式 2.对象的访问3.新增删除对象中的属性4.Object显示类型转换(强制类型转换)ECMAScript中可用的3种强制类型转换如下&#xff1a;Boolean(value)String(value)Number(value)Object类型到Boolean类型Object类型转String类型转换规则&a…

Redis通过复制rdb文件方式同步线上数据到本地以及提示:Can‘t handle RDB format version 9解决

场景 Redis的持久化机制-RDB方式和AOF方式&#xff1a; Redis的持久化机制-RDB方式和AOF方式_rdb 和ao-CSDN博客 Redis持久化机制导致服务自启动后恢复数据过长无法使用以及如何关闭&#xff1a; Redis持久化机制导致服务自启动后恢复数据过长无法使用以及如何关闭_霸道流氓…

mysql数据表设计

命名 mysql表名的命名规范为表名可以用 t_ 、tb_的前缀&#xff0c;或者是业务模块前缀。比如t_order。 有些项目也会使用 tt_、tm_、 ts_ 等前缀&#xff0c;根据项目的习惯命名就好了。 主键&#xff1a; AUTO_INCREMENT 表示自增&#xff0c;UNSIGNED 表示无符号&#xf…

【算法专题】双指针—盛最多水的容器

一、题目解析 分析这个题目不难得出一个容积公式 二、算法原理 解法一&#xff1a;暴力枚举&#xff08;超时&#xff09; 套用上述的容积公式&#xff0c;使用两个for循环来枚举出所有可能的情况&#xff0c;再挑出最大值即可&#xff0c;但是这种写法会超时&#xff0c;导致…

数据结构-初识泛型

写在前&#xff1a; 这一篇博客主要来初步的记录以下泛型的相关内容&#xff0c;内容比较琐碎&#xff0c;就不进行目录的整合&#xff0c;后续可能会对泛型这里进行系统性的梳理&#xff0c;此篇博客主要是对泛型有一个简单的认识与理解&#xff0c;需要知晓的内容。 当我调用…

2. 网络之网络编程

网络编程 文章目录 网络编程1. UDP1.1 DatagramSocket1.1.1 DatagramSocket 构造方法1.1.2 DatagramSocket 方法&#xff1a; 1.2 DatagramPacket1.2.1 DatagramPacket构造方法1.2.2 DaragramPacket方法1.2.3InetSocketAddress API 1.3 UDP回显服务器1.3.1 框架结构1.3.2 读取请…

将图像的锯齿状边缘变得平滑的方法

项目背景 使用PaddleSeg 192x192 模型分割出来的目标有锯齿状边缘&#xff0c;想通过传统算法将这种锯齿状边缘的变得平滑&#xff0c;虽然试了很过方法&#xff0c;但是效果还是不太理想 常用的集中方法 当使用分割算法&#xff08;如分水岭分割、阈值分割等&#xff09;分…

Docker:命令

Docker&#xff1a;命令 1. 创建MySQL的命令解读2. 基础命令3. 案例 查看DockerHub&#xff0c;拉取Nginx镜像&#xff0c;创建并运行Nginx容器4. 命令别名附录 1. 创建MySQL的命令解读 docker run :创建并运行一个容器&#xff0c;-d 是让容器在后台运行--name:给容器起一个名…

使用脚本整合指定文件/文件夹,执行定制化 ESLint 命令

背景 最近面对一个庞大的项目&#xff0c;但是只需要修改某个模块&#xff0c;每次都手搓命令太麻烦了&#xff0c;于是就想着能不能写个脚本来辅助处理这些事情。 解决方案 定制化一键 ESLint&#xff0c;执行文件下载地址&#xff1a; https://github.com/mazeyqian/go-g…

Python 自动化(十六)静态文件处理

准备工作 将不同day下的代码分目录管理&#xff0c;方便后续复习查阅 (testenv) [rootlocalhost projects]# ls day01 day02 (testenv) [rootlocalhost projects]# mkdir day03 (testenv) [rootlocalhost projects]# cd day03 (testenv) [rootlocalhost day03]# django-admi…

基于nodejs+vue啄木鸟便民维修网站设计与实现

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

element-plus走马灯不显示

问题描述 依赖正确&#xff0c;代码用法正确&#xff0c;但是element-plu走马灯就是不显示&#xff01;&#xff01; <div class"content"><el-carousel height"150px" width"200px"><el-carousel-item v-for"item in 4&qu…

Android 默认关闭自动旋转屏幕功能

Android 默认关闭自动旋转屏幕功能 接到客户邮件想要默认关闭设备的自动旋转屏幕功能&#xff0c;具体修改参照如下&#xff1a; /vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml - <bool name"def_accelerometer_rotati…

代码随想录图论并查集 | 第六天 1971. 寻找图中是否存在路径 684.冗余连接

代码随想录图论并查集 | 第六天 1971. 寻找图中是否存在路径 684.冗余连接 一、1971. 寻找图中是否存在路径 题目链接&#xff1a;https://leetcode.cn/problems/find-if-path-exists-in-graph/ 思路&#xff1a;典型并查集模板题。 class Solution {int[] father null;pub…

1、Flink基础概念

1、基础知识 &#xff08;1&#xff09;、数据流上的有状态计算 &#xff08;2&#xff09;、框架和分布式处理引擎&#xff0c;用于对无界和有界数据流进行有状态计算。 &#xff08;3&#xff09;、事件驱动型应用&#xff0c;有数据流就进行处理&#xff0c;无数据流就不…

【LeetCode热题100】两数之和 C++

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…

1 — NLP 的文本预处理技术

一、说明 在本文中&#xff0c;我们将讨论以下主题&#xff1a;1为什么文本预处理很重要&#xff1f;2 文本预处理技术。这个文对预处理做一个完整化、程序化处理&#xff0c;这对NLP处理项目中有很大参考性。 系列文章的后续&#xff1a; 2、NLP文本预处理技术&#xff1a;词干…

Whisper 从0安装教程 windows

这里写自定义目录标题 Whisper 从0安装教程 windows安装过程安装python3.11安装Anaconda在Anaconda里面安装whisper安装 ffmpeg第一次运行whisper检查GPU 一些弯路 Whisper 从0安装教程 windows 因为需要把语音变成文字稿&#xff0c;问了做语言相关的朋友&#xff0c;决定使用…