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

目录

    • 一、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.mzph.cn/news/843333.shtml

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

相关文章

openLayers加载wms图层并定位到该图层

openLayers定位到wms图层 我们的wms是加载geoserver发布的服务,wms加载的图层是没法通过layer.getSource().getExtent()来获取到extents(边界)的;实现思路是通过postgis的函数(st_extent(geom))来获取extents; 返回前端后格式化一…

23-LINUX--TCP连接状态

一.TCP服务的特点 传输层协议主要有两个:TCP 协议和 UDP协议。TCP 协议相对于UDP协议的特点是:面向连接、字节流和可靠传输。 使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源&a…

lammps案例:reaxff势模拟Fe(OH)3高温反应过程

大家好,我是小马老师。 本文分享一个reaxff反应势的案例。 该案例主要模拟Fe(OH)3在高温下的反应过程,主要代码来自lammps自带的案例。 lammps自带案例没有产物输出,故在此基础上稍加修改,增加了产物输出命令。 反应过程如下图…

解读大模型应用的可观测性

一、引言 随着人工智能技术的飞速发展,大模型作为AI领域的重要分支,正日益成为科技竞争的新高地。大模型通过输入大量语料进行训练,赋予计算机拥有像人类一样的“思考”能力,使其能够理解文本、图片、语音等内容,并进…

JavaWeb开发 3.Web开发 Web前端开发 ③ HTML、CSS

没有一朵花,一开始就是一朵花 —— 24.5.28 HTML、CSS知识在博主前端专栏,可以对照博客大致进行了解 https://blog.csdn.net/m0_73983707/category_12654678.htmlhttps://blog.csdn.net/m0_73983707/category_12654678.html

5. CSS的边框和阴影

第5章 边框与阴影 CSS3 为开发者提供了强大的工具,使得我们可以更容易地为网页元素添加视觉效果。这一章将详细介绍边框和阴影的新特性,包括如何使用圆角边框、边框图像、盒阴影和文本阴影,并展示一些实际应用的例子。 5.1 圆角边框&#x…

232转Profinet网关接扫码枪与PLC通讯在物流分拣线上的应用

一、背景 随着生活节奏的加快,网络购物需求非常大,从而造成快递站需要快速提取快递信息已达到快速出站的效果,这就用到了扫码枪,扫码枪作为采集设备,能够迅速准确地读取货物信息。并将数据传输至PLC控制器&#xff0c…

5.28OpenMV入门

10分钟快速上手 OpenMV中文入门教程 使用的元件 先安装好,上述链接上手 IDE显示颜色阈值,同时也配有示例文件,如下图打开,helloworld 你好,世界! OpenMV中文入门教程,在官方也有每一个的详细…

JUC总结1

线程和进程的对比 进程是操作系统资源分配的最小单位,其包含了进程控制块、程序、数据等,在电脑上启动的一个个应用程序就是进程,当一个程序要被运行时,从磁盘中将这个应用程序的代码加载到内存中,就开启了一个进程。…

音乐系统java在线音乐网站基于springboot+vue的音乐系统带万字文档

文章目录 音乐系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码和万字论文参考(9.9¥带走) 音乐系统 一、项目演示 在线音乐系统 二、项目介绍 基于springbootvue的前后端分离在线音乐系…

【Python设计模式14】状态模式

状态模式(State Pattern)是一种行为型设计模式,它允许对象在其内部状态改变时改变其行为。状态模式将不同状态的行为封装到不同的状态类中,使得状态之间的转换独立于对象本身,减少了条件语句的使用,提高了代…

Design and implementation of robot impedance controller

机器人阻抗控制器的设计与实现是一个复杂但关键的过程,它涉及到多个方面以确保机器人能够在外界环境的影响下保持稳定的性能。以下是对机器人阻抗控制器设计与实现的详细解答: 一、阻抗控制原理 阻抗控制的基本原理是建立一个期望的机器人位置和接触力…

股票交易vip快速通道有什么门槛?vip交易通道的开通流程!

证券公司的VIP通道通常是为了满足高端客户或高频交易客户的需求而设立的,提供更快速、更便捷的交易服务。证券公司VIP通道适用于有追涨停板需求的投资者,以及一些喜爱高频交易的投资者,总的来说就是快速,在交易主机排队靠前。 VI…

go-zero 实战(1)

环境准备 go 版本 go version go1.22.2 linux/amd64 goctl 安装 goctl(官方建议读 go control)是 go-zero微服务框架下的代码生成工具。使用 goctl 可以显著提升开发效率,让开发人员将时间重点放在业务开发上,其功能有&#xff1a…

pands使用openpyxl引擎实现EXCEL条件格式

通过python的openpyxl库,实现公式条件格式。 实现内容:D列单元格不等于E列同行单元格时标红。 #重点是formula后面的公式不需要“”号。 from openpyxl.styles import Color, PatternFill, Font, Border from openpyxl.styles.differential import Dif…

Java客户端SpringDataRedis(RedisTemplate)上手

文章目录 ⛄概述⛄快速入门❄️❄️导入依赖❄️❄️配置文件❄️❄️测试代码 ⛄数据化序列器⛄StringRedisTemplate⛄RedisTemplate的两种序列化实践方案总结 ⛄概述 SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模…

LLM学习笔记

Q1:SFT时,计算LOSS ​ LLM是自回归生成模型,每次只会生成一个 token,难道 SFT 时,对于一个 (L, D) 的数据,要调用 L 次LLM去计算loss? A1: ​ 在每个前向传播过程,模型…

HDU 2196 Computer(树形dp)

H D U 2196 C o m p u t e r (树形 d p ) \Huge{HDU 2196 Computer(树形dp)} HDU2196Computer(树形dp) 文章目录 题意思路标程 题目链接:Problem - 2196 (hdu.edu.cn) 题意 给出一个n个节点的无…

论AI大模型炼丹与练舞的关系

AI大模型的训练和微调的区别,就像是在舞蹈中学习基础动作和编排新的舞蹈一样。 想象一下,你有一个神奇的舞蹈机器人,只要给它足够的舞蹈视频,它就能学会各种各样的舞步。 模型训练的过程就像是给这个舞蹈教练机器人一个包含了各种…

git将某次提交合并到另一个分支

一、需求背景 将分支b中的某一次提交单独合并到分支a 二、实现方案 需求:将分支b中的某一次提交单独合并到分支a 1.在git上查看指定某次提交的id,如下图所示: 也可以通过git log命令查看提交的id,如下图: git log…