系统架构设计师【第15章】: 面向服务架构设计理论与实践 (核心总结)

文章目录

    • 15.1 SOA的相关概念
      • 15.1.1 SOA的定义
      • 15.1.2 业务流程与BPEL
    • 15.2 SOA的发展历史
      • 15.2.1 SOA的发展历史
      • 15.2.2 国内SOA的发展现状与国外对比
      • 15.2.3 SOA的微服务化发展
    • 15.3 SOA的参考架构
    • 15.4 SOA主要协议和规范
      • 15.4.1 UDDI协议
      • 15.4.2 WSDL规范
      • 15.4.3 SOAP协议
      • 15.4.4 REST规范
    • 15.5 SOA设计的标准要求
      • 15.5.1 文档标准化
      • 15.5.2 通信协议标准
      • 15.5.3 应用程序统一登记与集成
      • 15.5.4 服务质量(QoS)
    • 15.6 SOA的作用
    • 15.7 SOA的设计原则
    • 15.8 SOA的设计模式
      • 15.8.1 服务注册表模式
      • 15.8.2 企业服务总线模式
      • 15.8.3 案例研究
      • 15.8.4 微服务模式
    • 15.9 构建SOA架构时应该注意的问题
      • 15.9.1 原有系统架构中的集成需求
      • 15.9.2 服务粒度的控制以及无状态服务的设计
    • 15.10 SOA实施的过程
      • 15.10.1 选择SOA解决方案
      • 15.10.2 业务流程分析

15.1 SOA的相关概念

在SOA中,服务的概念有了延伸,泛指系统对外提供的功能集。例如,在一个大型企业内部,可能存在进销存、人事档案和财务等多个系统,在实施 SOA 后,每个系统用于提供相应的服务,财务系统作为资金运作的重要环节,也向整个企业信息化系统提供财务处理的服务,那么财务系统的开放接口可以看成是一个服务。

15.1.1 SOA的定义

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

  • 从应用的角度定义,可以认为 SOA 是一种应用框架,它着眼于日常的业务应用,并将它们 划分为单独的业务功能和流程,即所谓的服务。 SOA使用户可以构建、部署和整合这些服务, 且无需依赖应用程序及其运行平台,从而提高业务流程的灵活性。这种业务灵活性可使企业加 快发展速度,降低总体拥有成本,改善对及时、准确信息的访问。 SOA有助于实现更多的资产 重用、更轻松的管理和更快的开发与部署。
  • 从软件的基本原理定义,可以认为 SOA 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。【此种方式对日常工作更具指导性。】

15.1.2 业务流程与BPEL

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

业务流程执行语言(Business Process Execution Language,BPEL) 使用 BPEL,用户可以通过组合、编排和协调 Web 服务自上而下地实现面向服务的体系结构。BPEL 目前用于整合现有的 Web Services,将现有的 Web Services 按照要求的业务流程整理成为一个新的 Web Services,在这个基础上,形成一个从外界看来和单个 Service 一样的 Service。

15.2 SOA的发展历史

15.2.1 SOA的发展历史

(1)萌芽阶段:
这种广泛使用的 XML,允许组织定义文档的元数据,实现企业内部和企业之间的电子数据交换,规定了服务之间以及服务内部数据交换的格式和结构。

(2)标准化阶段:
国际标准和规范:

  • 简单对象访问协议(Simple Object Access Protocol, SOAP)
  • Web 服务描述语言(Web Services Description Language,WSDL)
  • 通用服务发现和集成协议(Universal Description, Discovery and Integration,UDDI)

(3)成熟应用阶段:
3 个重量级规范— SCA、SDO、WS-Policy。SCA 和 SDO 构成了 SOA 编程模型的基础,而 WS-Policy 建立了 SOA 组件之间安全交互的规范。

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

2007年, IDC发 布了 《SOA 中国路线图》。有观点认为,这是“国际研究机构首次基于中国 IT背景,针对中国企业实施SOA路线所做的特定解读”,这也是目前关于SOA这一新兴技术在中国实施的第一份比较权威的报告。

在美国,过去的半个多世纪,美国从主机时代、 PC时代,到了现在的网络时代,积累了大量的应用系统。美国实现S O A架构的关键任务是:对已有系统中的功能进行提取和包装,形成标准的“服务”。

在中国,过去近30年的IT建设多为生产型系统,服务型系统普遍未开始建设,大量“服务”需要全新构造才是中国 SOA 的主要任务。

15.2.3 SOA的微服务化发展

SOA 与微服务的区别
(1) 微服务相比于 SOA 更加精细,微服务更多地以 独立的进程的方式存在,互相之间并无影响。SOA 架构与微服务架构的对比如图:
在这里插入图片描述

(2) 微服务提供的接口方式更加通用化,例如 HTTP RESTful 方式,各种终端都可以调用,无关语言、平台限制。

(3)微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。

15.3 SOA的参考架构

IBM 的 Websphere 业务集成参考架构是典型的以服务为中心的企业集成架构,从服务为中心的视角来看,它可划分为 6 大类:

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

15.4 SOA主要协议和规范

Web 服务最基本的协议包括 UDDI、WSDL、SOAP,通过它们可以提供直接而又简单的 Web Service 支持,如图 :
在这里插入图片描述

15.4.1 UDDI协议

UDDI 协议: 统一描述、发现和集成协议。包含了服务描述与发现的标准规范,它使得商业实体能够彼此发现; 定义它们怎样在 Internet 上互相作用,并在一个全球的注册体系架构中共享信息。

15.4.2 WSDL规范

Web 服务描述语言(Web Services Description Language,WSDL): WSDL 是一个用来描述 Web 服务和说明如何与 Web 服务通信的 XML 语言。描述了 Web 服务的 3 个基本属性。

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

15.4.3 SOAP协议

SOAP 协议: SOAP 是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML 的协议。

15.4.4 REST规范

REST 规范: 为了让不同的软件或者应用程序在任何网络环境下都可以进行信息的互相传递。微服务对外就是以 REST API 的形式暴露给调用者。RESTful 即 REST 形式的,是对遵循 REST 设计思想同时满足设计约束的一类架构设计或应用程序的统称,这一类都可称为 RESTful, 可以理解为资源表述性状态转移:

    1. 资源: 将互联网中一切暴露给客户端的事物都可以看作是一种资源。
    1. 表述: REST 中用表述描述资源在 Web 中某一个时间的状态。
    1. 状态转移: 分为两种,应用状态— 对某个时间内用户请求会话相关信息的快照,保存在客户端。资源状态— 在服务端保存,是对某个时间资源请求表述的快照。
    1. 超链接: 通过在页面中嵌入链接和其他资源建立联系。

15.5 SOA设计的标准要求

15.5.1 文档标准化

SOA 服务具有平台独立的自我描述 XML 文档。Web 服务描述语言是用于描述服务的标准语言。

15.5.2 通信协议标准

SOA 服务用消息进行通信,该消息通常使用 XML Schema 来定义(也称作 XML Schema Definition,XSD)。

15.5.3 应用程序统一登记与集成

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

15.5.4 服务质量(QoS)

服务质量(QoS)主要包括:

  • 1)可靠性: 服务消费者和服务提供者之间传输文档时的传输特性(且仅仅传送一次、最多传送一次、重复消息过滤、保证消息传送)。
  • 2)安全性: Web 服务安全规范用来保证消息的安全性。
  • 3)策略: 服务提供者有时候会要求服务消费者与某种策略通信。例如,服务提供商可能会要求消费者提供 Kerberos 安全标示才能取得某项服务。
  • 4)控制: 在 SOA 中,进程是使用一组离散的服务创建的。BPEL4WS 或者 WSBPEL(Web Service Business Process Execution Language)是用来控制这些服务的语言。
  • 5)管理: 针对运行在多种环境下的所有服务,必须有一个统一管理系统,以便系统管理员能够有效管理。任何根据 WSDM 实现的服务都可以由一个 WSDM 适应(WSDM-compliant)的管理方案来管理。

15.6 SOA的作用

SOA 的主要作用: 打破信息孤岛,把应用和资源转换成服务。以及把这些服务变成标准的服务,形成资源的共享

15.7 SOA的设计原则

SOA 的设计原则主要有:

  • 1)无状态。以避免服务请求者依赖于服务提供者的状态。
  • 2)单一实例。以高内聚的实现方法,来避免功能冗余。
  • 3)明确定义的接口。服务的接口由 WSDL 定义,用于指明服务的公共接口与其内部专用实现之间的界线。
  • 4)自包含和模块化。服务封装了那些在业务上稳定、重复出现的活动和组件,实现服务的功能实体是完全独立自主的,独立进行部署、版本控制、自我管理和恢复。
  • 5)粗粒度。服务数量不应该太大,依靠消息交互而不是远程过程调用(Remote Procedure Call,RPC),通常消息量较大,但是服务之间的交互频度较低。
  • 6)服务之间的松耦合性。服务使用者看到的是服务的接口,其位置、实现技术和当前状态等对使用者是不可见的,服务私有数据对服务使用者是不可见的。
  • 7)重用能力。服务应该是可以复用的。
  • 8)互操作性、兼容和策略声明。为了确保服务规约的全面和明确,利用策略来定义可配置的互操作语义,来描述特定服务的期望、控制其行为。利用策略声明确保服务期望和语义兼容性方面的完整和明确。

15.8 SOA的设计模式

15.8.1 服务注册表模式

服务注册表支持驱动 SOA 治理的服务合同、策略和元数据的开发、发布和管理。

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

15.8.2 企业服务总线模式

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

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

15.8.3 案例研究

协同企业服务总线 SynchroESB 就是基于SOA体系结构,以ESB为底层架构,包含丰富的预制程序组件,集中式管理工具和可视化应用程序开发界面的服务整合软件平台。系统结构如图:
在这里插入图片描述
各层级说明如下:

  • 服务总线层 为整个EAI应用环境提供底层支持。
  • ESB层之上的数据转换与适配器层 为各种 EAI 应用提供接入功能,它要解决的是应用集成服务器与被集成系统之间的连接和数据接口的问题。
  • 其上是流程整合层,它将不同的应用系统连接在一起,进行协同工作,并提供业务流程 管理的相关功能,包括流程设计、监控和规划,实现业务流程的管理。
  • 最上端的用户交互层, 则是为用户在界面上提供一个统一的信息服务功能入口,通过将内部和外部各种相对分散独立的信息组成一个统一的整体。

15.8.4 微服务模式

微服务架构将一个大型的单个应用或服务拆分成多个微服务,可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级协议。微服务架构围绕业务领域将服务进行拆分,每个服务可以独立进行开发、管理和迭代,彼此之间使用统一接口进行交流,实现了在分散组件中的部署、管理与服务功能,使产品交付变得更加简单,从而达到有效拆分应用,实现敏捷开发与部署的目的。

微服务模式的特点 如下:

  • (1)复杂应用解耦: 微服务架构将单一模块应用分解为多个微服务,同时保持总体功能不变。
  • (2)独立: 微服务在系统软件生命周期中是独立开发、测试及部署的。
  • (3)技术选型灵活: 微服务架构下系统应用的技术选型是去中心化的,每个开发团队可根据自身应用的业务需求发展状况选择合适的体系架构与技术。
  • (4)容错: 由于各个微服务相互独立,故障会被隔离在单个服务中,并且系统其他微服务可通过重试、平稳退化等机制实现应用层的容错,从而提高系统应用的容错性。
  • (5)松耦合,易扩展: 服务架构中每个服务之间都是松耦合的,可以根据实际需求实现独立扩展,体现微服务架构的灵活性。单体应用架构与微服务架构的示意如图 :
    在这里插入图片描述

微服务架构模式方案主要包括:

  • (1)聚合器微服务: 聚合器充当流程指挥者,调用多个微服务实现系统应用程序所需功能。
  • (2)链式微服务: 客户端或服务在收到请求后,会发生多个服务间的嵌套递归调用,返回经
    过合并处理的响应。
    (3)数据共享微服务: 该模式适用于在单体架构应用到微服务架构的过渡阶段,服务之间允许存在强耦合关系,例如存在多个微服务共享缓存与数据库存储的现象。
    (4)异步消息传递微服务: 对于一些不必要以同步方式运行的业务逻辑,可以使用消息队列代替 REST 实现请求、响应,加快服务调用的响应速度。

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

  • (1)服务发现与服务调用链跟踪变得困难。
  • (2)很难实现传统数据库的强一致性,转而追求最终一致性。

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

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

1)原有系统架构中的集成需求包括: 应用程序集成的需求、终端用户界面集成的需求、流程集成的需求以及已有系统信息集成的需求
(2)

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

服务粒度的控制以及无状态服务的设计的表述如下。

  • 1)服务粒度的控制: 对于将暴露在整个系统外部的服务推荐使用粗粒度的接口,而相对较细粒度的服务接口通常用于企业系统架构的内部。
  • 2)无状态服务的设计: SOA 系统架构中的具体服务应该都是独立的、自包含的请求,在实现这些服务的时候不需要前一个请求的状态,也就是说服务不应该依赖于其他服务的上下文和状态, 即 SOA 架构中的服务应该是无状态的服务

15.10 SOA实施的过程

15.10.1 选择SOA解决方案

选择 SOA 解决方案主要从以下 3 个方面进行:

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

15.10.2 业务流程分析

业务流程分析主要关注:

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

子域名太多如何实现HTTPS?一张通配符SSL证书全搞定

在当今数字化时代,网站安全性已经成为网站运营者以及访问者都非常关注的重要问题。部署SSL证书实现HTTPS加密,确保数据传输安全,防止信息被泄露或篡改,消除浏览器“不安全”提示,提高网站安全性以及可信任度已成为必然…

代理IP如何提高网站的SEO排名

目录 一、代理IP的作用 二、使用代理IP提高SEO排名的几种常见方法 1. 采集数据 2. 提交网站 3. 模拟用户行为 4. 搜索引擎优化 三、合理使用代理IP的注意事项 四、代码示例 总结 代理IP是一种可以隐藏真实IP地址的技术,通过使用代理IP,可以实现…

记一次mysql索引优化

生产日志告警出现一条慢 sql 告警, 通过 sql 监控平台拿到 这条sql 语句是 : SELECTid,report_id,report_detail_id,item_code,report_type,photo FROM**** 表 WHEREdel_flag 0 AND (report_type 1 AND report_detail_id IN ( 1742 )) 之后用 explain 分析这条 sql 的命中…

前端框架前置知识之Node.js:Node.js入门

前端程序员有必要学 Node.js 吗?要学到什么程度? 小朋友,你是否有很多问号? 对于node.js,不知道你是否和我一样有很多问号? 其实在学习node.js之前,我已经学完了Vue框架,而且已经…

cad怎么一键闭合所有线

在CAD软件中,将断开的图形快速闭合为一个整体是一项常见且实用的操作。下面详细介绍几种不同的方法来实现一键闭合所有线: 使用圆角命令FILLET 输入命令:在CAD命令行中输入“FILLET”(快捷键:F)。多选模式&…

122. 买卖股票的最佳时机 II(中等)

122. 买卖股票的最佳时机 II 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转:122. 买卖股票的最佳时机 II 2.详细题解 实现最大的利润,即只要有盈利就收入囊中,由于交易没有具体限制次数,因此可以依…

若依开发-数据库修改密码

若依忘记密码 在SecurityUtils类添加 public static void main(String[] args) {System.out.println(SecurityUtils.encryptPassword("admin123"));}即可打印出加密后密码

视频汇聚共享平台LntonCVS安防视频监控系统搭建医院医疗监控统一管理方案

近年来,一些不法分子已经将其罪恶活动延伸到医院,严重威胁了医院和病人的生命财产安全。这些不法分子使用扒窃、抢劫和破坏等卑劣手段扰乱了医院的工作秩序,窃取他人财物并破坏社会治安。鉴于此,社会对良好的医院环境给予了广泛关…

订单排队新纪元:创新营销模式引领企业腾飞

在当今高度竞争的商业环境中,如何以新颖的方式吸引用户并推动企业持续盈利?接下来,我们将探讨一种独特的营销策略——循环订单机制,帮助企业家们巧妙抓住市场机遇,实现业绩飞跃。 循环订单机制,作为一种创新…

查询语言:ClickHouse的SQL基础与特点

1.背景介绍 查询语言:ClickHouse的SQL基础与特点 作者:禅与计算机程序设計艺術 1. 背景介绍 1.1 ClickHouse简介 ClickHouse是Yandex开源的一个高性能分布式 column-oriented DBSMS (Column-based Distributed SQL Management System),它…

关于软件<PDF文档管理系统V1.0>的介绍

<PDF文档管理系统V1.0>&#xff08;下载地址在最下面&#xff09;是我在2023年发布的<知识辅助系统>的改善以及重新开发版本&#xff0c;软件在重新开发提供了<知识辅助系统>的所有功能的基础上&#xff0c;添加了一些新的功能。软件尽量提供简单、实用的功能…

你还不知道的APP安全测试项总结!

一、安装包测试 1.1、关于反编译 目的是为了保护公司的知识产权和安全方面的考虑等&#xff0c;一些程序开发人员会在源码中硬编码一些敏感信息&#xff0c;如密码。而且若程序内部一些设计欠佳的逻辑&#xff0c;也可能隐含漏洞&#xff0c;一旦源码泄漏&#xff0c;安全隐患…

Linux驱动开发笔记(三)平台设备驱动

文章目录 前言一、Linux的设备模型1. 总线1.1 bus_type结构体1.2 注册/注销总线 2. 设备2.1 device结构体2.2 内核注册/注销设备 3. 驱动3.1 device_driver结构体3.2 注册/注销驱动 4. attribute属性文件4.1 attribute_group结构体4.2 设备属性文件4.3 驱动属性文件4.3. 总线属…

构建高可用微服务:SpringCloud Alibaba解决方案揭秘

【前言】 随着互联网的快速发展,越来越多的企业在应用程序开发过程中选择微服务架构。微服务架构是将一个大型应用程序拆分成多个小型服务的架构模式,每个服务都具有独立的业务逻辑,并且可以独立部署、升级和扩展。 Spring Cloud Alibaba 是阿里巴巴基于 Spring Cloud 开发…

【matlab】绘图文本标注

用代码生成标注 代码 clc clear close all%创建一个球&#xff0c;使用地质颜色映射表&#xff1a; cla reset%清除当前坐标轴中的所有图像对象,同时把除position.units属性外的其他属性设为默认状态 load topo; [x y z]sphere (45); ssurface (x,y, z,facecolor,texturemap,…

深入理解feign远程调用的各种超时参数

1. 引言 在spring cloud微服中&#xff0c;feign远程调用可能是大家每天都接触到东西&#xff0c;但很多同学却没咋搞清楚这里边的各种超时问题&#xff0c;生产环境可能会蹦出各种奇怪的问题。 首先说下结论&#xff1a; 1)只使用feign组件&#xff0c;不使用ribbion组件&…

超强算力 Orange Pi Kunpeng Pro 开发板基础测评与体验

目录 开箱体验资源简介系统启动连接网络登录系统通过桌面登录通过串口登录通过 SSH 登录配置散热风扇 算力测试MNIST示例MBNET示例 体验总结 大家好&#xff0c;我是 Hello 阿尔法&#xff0c;有幸接到 CSDN 的邀请参与 Orange Pi Kunpeng Pro 开发板的测评活动&#xff0c;本文…

图片怎么快速转换大小?在线将图片改小的方法

目前在网上平台上传图片时&#xff0c;比较常见的一个问题就是图片太大导致无法正常上传&#xff0c;需要调整图片大小到平台的要求后才可以正常使用。那么如何将图片压缩到需要使用的大小呢&#xff1f; 图片大小转换现在可以使用在线改图片大小的工具会更加的简单的快捷&…

贝锐向日葵分组策略:减少重复操作,提升管理效率

面对大数量级的IT设备&#xff0c;如何高效实施管理是运维的关键所在&#xff0c;如何快速准确的对大量的设备按需分组&#xff0c;则是管理精准触达的第一步。 但是&#xff0c;传统的分组方式应付少量设备还可行&#xff0c;设备数量级一旦来到上千台甚至更多时&#xff0c;…

数据结构——排序【上】

前言&#xff1a; 今天我们开始学习排序。为了方便大家理解和练习&#xff0c;排序一共分为两节进行讲解&#xff0c;在该章节中会复习学习过的排序&#xff0c;和讲解新的排序&#xff0c;还望读者能从中又好的体验。 一、冒泡排序 冒泡排序作为基础排序&#xff0c;在我们学…