【软考】下篇 第15章 面向服务架构设计理论与实践

news2024/11/18 12:27:22

目录

    • 一、SOA定义
    • 二、微服务
      • 微服务优势
      • 微服务与SOA对比
      • 微服务架构模式方案
      • 微服务设计约束
    • 三、SOA参考架构
    • 四、SOA设计的标准要求
    • 五、SOA设计原则
    • 六、SOA设计模式
    • 七、SOA实施

一、SOA定义

面向服务的体系结构 (Service-Oriented Architecture,SOA), 从应用和原理的角度看,目前有两种业界公认的标准定义。

从应用的角度定义,可以认为:
SOA是一种应用框架,它着眼于日常的业务应用,并将它们划分为单独的业务功能和流程,即所谓的服务。
SOA使用户可以构建、部署和整合这些服务,且无需依赖应用程序及其运行平台,从而提高业务流程的灵活性。
这种业务灵活性可使企业加快发展速度,降低总体拥有成本,改善对及时、准确信息的访问。
SOA有助于实现更多的资产重用、更轻松的管理和更快的开发与部署。

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

作为软件架构师,后一种从软件原理方面的定义,对日常工作更具指导性

二、微服务

SOA架构向更细粒度、更通用化程度发展,就成了所谓的微服务了。
在这里插入图片描述

微服务优势

助记:解独异容展

在这里插入图片描述

微服务与SOA对比

在这里插入图片描述

微服务架构模式方案

在这里插入图片描述

微服务设计约束

约束助记详细
微服务 个体约束每个微服务都是独立的,修改一个微服务不能影响另一个微服务服务拆分、单一职责、高内聚低耦合、独立性
微服务间的 横向关系通过第三方服务注册中心来满足服务的可发现性服务注册发现、客户端负载均衡、限流熔断等
微服务与数据层之间的 纵向约束数据是微服务的“私产”,访问时需要通过微服务零共享架构
全局视角下的微服务 分布式约束高效运维整个系统自动化CI/CD、可观测、蓝绿/金丝雀发布等

三、SOA参考架构

在这里插入图片描述
从服务为中心的视角来看,企业集成的架构可划分为6大类。

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

四、SOA设计的标准要求

  • 文档标准化
  • 通信协议标准化
  • 应用程序统一登记与集成
  • 服务质量QoS(可靠性、安全性、策略、控制、管理)

五、SOA设计原则

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

六、SOA设计模式

  • 服务注册表模式(服务注册、服务位置、服务绑定)
  • 企业服务总线模式
    • (1) 提供位置透明性的消息路由和寻址服务。
    • (2) 提供服务注册和命名的管理功能。
    • (3) 支持多种消息传递范型(如请求/响应、发布/订阅等)。
    • (4) 支持多种可以广泛使用的传输协议。
    • (5) 支持多种数据格式及其相互转换。
    • (6) 提供日志和监控功能。
  • 微服务架构模式(聚合器、链式、数据共享、异步消息传递)

七、SOA实施

选择SOA解决方案

  • 1.尽量选择能进行全局规划的方案
  • 2.选择时充分考虑企业自身的需求
  • 3.从平台、实施等技术方面进行考察

业务流程分析

  • 建立服务模型 - 自顶向下分解法、业务目标分析法、自底向上分析法
  • 建立业务流程 - 实体(实体、过程、事件)、服务接口、业务流程

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

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

相关文章

网络原理-HTTPS协议

在前面说到HTTP中,我们通过抓包,可以看到许多信息内容,其中往往会包含一些敏感信息,这些都是明文传输,当我们的请求被黑客或者不法分子截获后,那就很危险了,因此衍生出了HTTPS协议来对传输数据进行加密。 一、加密原理 基本原理如下: 明文 密钥 > 密文 密文…

线性稳压电路和开关稳压电路

稳压二极管稳压电路 电网电压增大,导到u1端的电压增大,从而使输出电压,稳压二极管两端的电压增大,稳压二极管两端电压增大,使流过的电注增大。那么,流过线性电阻R的总电流增大。 Ur电压增大,从…

网络故障排除—NAT-源进源出

多网络双出口一边是运营商A,一边是运营商B,将内网服务器分别映射到运营商B和运营商A出口。查了保证内部上网用户网速快管理员开启了运营商选路功能,运营商B的网站从运营商B出去,然后写有两条等价默认路由分别指向两个外网出口。营商A的网站从…

内网安全-隧道搭建穿透上线内网穿透-nps自定义上线内网渗透-Linux上线-cs上线Linux主机

目录 内网安全-隧道搭建&穿透上线内网穿透-nps-自定义-上线NPS工具介绍搭建过程 nps原理介绍MSF上线CS上线 内网渗透-Linux上线-cs上线Linux主机1.下载插件2.导入插件模块3.配置监听器4.服务端配置5.配置C2监听器并生成木马6.执行木马 内网安全-隧道搭建&穿透上线 内网…

重学java 49 增强for

知之俞明,则行之越笃;行之愈笃,则知之愈益; —— 24.5.28 一、基本使用 1.作用: 遍历集合或者数组 2.格式: for(元素类型 变量名:要遍历的集合名或者数组名) 变量名就是代表的每一个元素 3.快捷键: 集合名或者数组名.for package …

Transformers x SwanLab:可视化NLP模型训练

HuggingFace 的 Transformers 是目前最流行的深度学习训框架之一(100k Star),现在主流的大语言模型(LLaMa系列、Qwen系列、ChatGLM系列等)、自然语言处理模型(Bert系列)等,都在使用T…

Web3探索加密世界:空投常见类型有哪些?附操作教程

每种空投类型都有独特的特征和目的,我们需要了解不同类型的加密空投。本文给大家介绍的是流行的加密货币空投类型,以及一般空投是如何做的。感兴趣的话请看下去。 一、空投常见类型 1、持有者空投 持有者空投向钱包中持有一定数量数字货币的人免费发放…

基于MyBatisPlus表结构维护工具

SuperTable表结构维护工具 一、简述 用于同步表实体与数据库表结构,同步建表、删改字段、索引,种子数据的工具… 一、开发环境 JDK:JDK8SpringBoot:2.7.2MyBatisPlus: 3.5.6MySQL: 5.7其他依赖:略 二、特性 表结…

大话C语言:第18篇 函数

1 函数概述 函数是c语言的功能单位,实现一个功能可以封装一个函数来实现。函数是一种可重用的代码块,用于执行特定任务或完成特定功能。函数主要作用是对具备相同逻辑的代码进行封装,提高代码的编写效率,实现对代码的重用。例如&a…

【Spring】深入学习AOP编程思想的实现原理和优势

【切面编程】深入学习AOP编程思想的实现原理和优势 前言AOP的由来及AOP与代理的关系AOP的实现方式详解静态代理动态代理 AOP的应用场景记录日志权限控制数据库事务控制缓存处理异常处理监控管理 AOP的底层实现全流程解析Spring AOP的简介动态代理的实现原理Spring AOP的实现原理…

流水账(CPU设计实战)——lab3

Lab3 Rewrite V1.0 版本控制 版本描述V0V1.0相对V0变化: 修改了文件名,各阶段以_stage结尾(因为if是关键词,所以module名不能叫if,遂改为if_stage,为了统一命名,将所有module后缀加上_stage&a…

关于Windows中桌面窗口管理器的知识,看这篇文章就可以了

序言 你打开了任务管理器,发现了一个叫做“桌面窗口管理器”的东西,它是恶意软件吗?它应该在任务管理器吗?如果它应该在那里,它的作用什么?以下是你需要了解的所有信息。 什么是桌面窗口管理器 Desktop Window Manager(dwm.exe)是一个合成窗口管理器,可以在Windows…

SB-OSC,最新的 MySQL Schema 在线变更方案

目前主流的 MySQL 在线变更方案有两个: 基于 trigger 的 pt-online-schema-change基于 binlog 的 gh-ost 上周 Sendbird 刚开源了他们的 MySQL Schema 在线变更方案 SB-OSC: Sendbird Online Schema Change。 GitHub 上刚刚 25 颗星星,绝对新鲜出炉。 …

Java | Leetcode Java题解之第104题二叉树的最大深度

题目&#xff1a; 题解&#xff1a; class Solution {public int maxDepth(TreeNode root) {if (root null) {return 0;}Queue<TreeNode> queue new LinkedList<TreeNode>();queue.offer(root);int ans 0;while (!queue.isEmpty()) {int size queue.size();wh…

go语言基准测试Benchmark 最佳实践-冒泡排序和快速排序算法基准测试时间复杂度对比

在go语言中Benchmark基准测试( 在后缀为_test.go的文件中&#xff0c;函数原型为 func BenchmarkXxx(b *testing.B) {}的函数 )可以用来帮助我们发现代码的性能和瓶颈&#xff0c; 其最佳实践 应该是我们最常用的 冒泡排序和快速排序的测试了&#xff0c;废话不说&#xff0c;直…

玄机平台应急响应—webshell查杀

1、前言 这篇文章说一下应急响应的内容&#xff0c;webshell查杀呢是应急响应的一部分。那么什么是应急响应呢&#xff0c;所谓的应急响应指的是&#xff0c;当网站突然出现异常情况或者漏洞时&#xff0c;能够马上根据实际问题进行分析&#xff0c;然后及时解决问题。 2、应…

软件游戏找不到xinput1_3.dll如何修复?分享几种有效的解决方法

当您在使用电脑过程中遇到系统提示“xinput1_3.dll文件丢失”时&#xff0c;这可能会导致某些游戏或应用程序无法正常运行&#xff0c;因为xinput1_3.dll是与DirectX相关的一个重要动态链接库文件&#xff0c;主要负责处理游戏控制器输入。为了解决这个问题&#xff0c;我通过查…

华为实训课笔记 2024

华为实训 5/205/215/225/235/275/28 5/20 5/21 5/22 5/23 5/27 5/28

蓝桥杯嵌入式国赛笔记(4):多路AD采集

1、前言 蓝桥杯的国赛会遇到多路AD采集的情况&#xff0c;这时候之前的单路采集的方式就不可用了&#xff0c;下面介绍两种多路采集的方式。 以第13届国赛为例 2、方法一&#xff08;配置通道&#xff09; 2.1 使用CubeMx配置 设置IN13与IN17为Single-ended 在Parameter S…