《系统架构设计师教程(第2版)》第15章-面向服务架构设计理论与实践-05-SOA设计模式

文章目录

  • 1. 服务注册表模式
    • 1.1 服务注册表
    • 1.2 SOA治理功能
    • 1.3 注册表中的配置文件
  • 2. 企业服务总线(ESB)模式
  • 3. Synchro ESB
  • 3. 微服务模式
    • 3.1 概述
    • 3.2 微服务架构模式方案
      • 3.2.1 聚合器微服务
        • 1)概述
        • 2)几种特殊的聚合微服务
      • 3.2.2 链式微服务
      • 3.2.3 数据共享微服务
      • 3.2.4 异步消息传递微服务
    • 3.3 微服务架构面临的问题与挑战

1. 服务注册表模式

1.1 服务注册表

  • 服务注册表

    • Service Registry
    • 适用:主要在SOA 设计时段
    • 该注册表能够有效地支持SOA治理过程中服务合同、策略、元数据的开发、发布与管理工作

      “开发、发布与管理”修饰“服务合同、策略、元数据”

    任何帮助注册、发现和检索服务合同、元数据和策略的信息库、数据库、目录或其他节点都可以被认为是一个注册表。

  • 策略执行点

    • Policy Enforcement Point
    • 负责在运行时对服务请求进行策略检查和执行

      PEP根据预定义的策略规则,对进入系统的服务请求进行验证和过滤,确保只有符合规定的服务能够被执行

  • 服务注册厂商分类

    • 第一种:提供服务、策略、元数据注册表及信息库的纯SOA 厂商
    • 第二种:SOA 平台厂商:将注册表作为集成产品套件的一个组件

1.2 SOA治理功能

  • 服务注册

    • 务提供者向注册表公布服务的功能
    • 主要公布:服务合同

      包括:服务身份、位置、方法、绑定、配置、方案、策略等描述性属性

  • 服务位置

    • 帮助开发者查询符合要求的注册服务,并提供务合同
  • 服务绑定

    服务的消费者利用检索到的服务合同来开发代码,开发的代码将与生产者提供的注册在SOA的服务绑定,已实现互动

1.3 注册表中的配置文件

  • 过程
    • 注册表中包含多个配置文件
    • 服务通过使用不同配置文件在不同生命周期移动
  • 意义:SOA 治理中最佳实践之一

2. 企业服务总线(ESB)模式

  • 概念
    • ESB (Enterprise Service Bus)
    • 由中间件技术实现的支持面向服务架构的基础软件平台
    • 支持异构环境中的服务以基于消息和事件驱动模式交互(而不是点对点)
    • 并且具有适当的服务质量和可管理性

在这里插入图片描述

  • ESB中以事件驱动的交互过程:

    • 由服务请求者触发一次交互过程,产生一个服务请求消息,并将该消息按照ESB 的要求标准化
    • 标准化的消息被发送给服务总线
    • ESB 根据请求消息中的服务名或者接口名进行目的组件查找,将消息转发至目的组件
    • ESB并最终将处理结果逆向返回给服务请求者
  • 事件驱动的优势

    • 最大限度上解耦了组件之间的依赖关系
    • 降低了软件系统互连的复杂性
  • ESB的核心功能:

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

    • 企业内部、外部系统之间可以很容易地进行异步或同步交互
    • 具有很强的扩展性、灵活性
    • 提高开发效率、降低了成本

3. Synchro ESB

  • 概念
    • 协同企业服务总线
    • 基于 SOA体系结构的服务整合软件平台 (国产软件)
  • 包含:
    • 集中式管理工具
    • 可视化应用程序开发界面
      在这里插入图片描述

3. 微服务模式

3.1 概述

  • 概念:
    • 微服务架构围绕业务领域将服务进行拆分
    • 每个服务可以独立进行开发、管理和迭代
    • 彼此之间使用统一接口进行交流
  • 意义
    • 使产品交付变得更加简
    • 实现敏捷开发与部署

在这里插入图片描述

  • 优点

    • 复杂应用解耦

    由于单个微服务功能单一、复杂度低,小规模开发团队完全能够掌握,易于保持较高的开发效率,且易于维护。

    • 独立

    独立开发、部署、测试

    • 技术选型灵活

    技术去中心化,每个微服务选择自己合适的技术和开发语言。

    • 容错
    • 微服务间相互独立,故障会被隔离
    • 可通过重试、平稳退化等机制实现应用层的容错
    • 松耦合,易扩展

3.2 微服务架构模式方案

是系统应用开发的一种设计思想,没有固定开发模式

3.2.1 聚合器微服务

1)概述
  • 概念
    • 聚合器调用多个微服务实现系统应用程序所需功能
  • 两种形式
    • 将检索到的数据信息进行处理并直接展示
    • 对获取到的数据信息增加业务逻辑处理后,发布成新的微服务

      即,提供一个更高层次的组合微服务

2)几种特殊的聚合微服务
  • 代理微服务

    • 聚合器微服务的一个变种
    • 仅进行委派请求和数据转换工作(不聚合数据)
  • 分支微服务器模式

    • 是聚合器微服务的一种扩展
    • 允许同时调用两个相互独立的微服务链

3.2.2 链式微服务

  • 概念:
    • 客户端或服务在收到请求后,会返回一个经过合并处理的响应,该模式即为链式微服务设

    如,服务A 收到请求后会与服务B 建立通信,服务B 收到请求后会与服务C 建立通信,依次往下游发送请求,并对结果进行合并处理后作为请求响应返回上游服务调用者。

3.2.3 数据共享微服务

  • 概年:当服务之间存在强耦合关系时,可共享缓存、数据库存储

3.2.4 异步消息传递微服务

  • 方法:使用消息队列代
  • 缺点:可能会降低系统可用性,增加系统复杂性
  • 常用中间件:ActiveMQ、RabbitMQ、RocketMQ、Kafka

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

  • 微服务架构分布式特点带来的复杂性
  • 微服务架构的分区数据库体系,不同服务拥有不同数据库
  • 系统测试的挑战
  • 大规模部署的挑战

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

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

相关文章

Ubuntu20.04安装redis5.0.7

redis下载命令: wget https://download.redis.io/releases/redis-5.0.7.tar.gz 解压到 opt目录下 tar -zxvf redis-5.0.7.tar.gz -C /opt apt install -y gcc # 安装gccapt install make # 安装make 后面执行make一直报错 make报错后清除: make …

parallels desktop19.3最新版本软件新功能详细介绍

Parallels Desktop是一款运行在Mac电脑上的虚拟机软件,它允许用户在Mac系统上同时运行多个操作系统,比如Windows、Linux等。通过这款软件,Mac用户可以轻松地在同一台电脑上体验不同操作系统的功能和应用程序,而无需额外的硬件设备…

分布式与一致性协议之拜占庭将军问题(三)

拜占庭将军问题 叛将先发送消息 如果是叛将楚先发送作战消息,干扰作战计划,结果会有所不同吗? 在第一轮作战信息协商中,楚向苏秦发送作战指令"进攻",向齐、燕发送作战指令"撤退",如图所示(当然还…

腾讯云向量数据库-RAG介绍2

1.chunk拆分对最终效果的影响 2.改进知识的拆分方案 3.AI套件 4.相似性检索的关键:embedding技术 嵌入技术是相似性检索的关键,它能够将数据转换为向量表示,并通过比较向量之间的相似性来实现相似性检索;embedding:将…

Jackson 2.x 系列【30】Spring Boot 集成之数据脱敏

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址:https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 概述2. 实现思路3. 案例演示3.1 脱敏规则3.2 自…

解决VSCode中“#include错误,请更新includePath“问题

目录 1、问题原因 2、解决办法 1、问题原因 在编写C程序时,想引用头文件但是出现如下提示: (1)首先检查要引用的头文件是否存在,位于哪里。 (2)如果头文件存在,在编译时提醒VSCo…

如何理解自然语言处理中的位置编码(Positional Encoding)

在自然语言处理和特别是在使用Transformer模型中,位置编码(Positional Encoding)是一个关键的概念。它们的作用是为模型提供序列中各个元素的位置信息。由于Transformer架构本身并不像循环神经网络(RNN)那样具有处理序列的固有能力,位置编码因此显得尤为重要。 为什么需…

【学习】服务器解决:重新分配同样端口号后,连不上VScode

原来服务器分配的环境有问题,重新分配了一下。还是同样的端口号,Xshell和xftp能够连接上,但是VScode连接不上。 问题解决: 清除本地 SSH 缓存中与远程主机相关的条目可以通过编辑 known_hosts 文件来实现。这个文件包含了您曾经连接过的远程主…

Linux报错处理:‘abrt-cli status’ timed out

最近登录服务器时出现报错,后来查阅资料发现是因为ssh登录时间很久,登录后出现abrt-cli status timed out 的报错。 1.问题分析 abrt-cli是ABRT(Automated Bug Reporting Tool)的命令行接口,用于在Linux系统中处理和报告程序崩溃。 如果abr…

[Qt的学习日常]--初识Qt

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、Qt的基本…

代码随想录算法训练营第四十六天| LeetCode139.单词拆分

一、LeetCode139.单词拆分 题目链接/文章讲解/视频讲解:https://programmercarl.com/0139.%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.html 状态:已解决 1.思路 单词明显就是物品,字符串s明显就是背包,那么问题就变成了物品能不能把背…

数据可视化———Tableau

基本认识: 维度:定性—字符串文本,日期和日期时间等等 度量:定量—连续值,一般属于数值 数据类型: 数值 日期/日期时间 字符串 布尔值 地理值 运算符 算数运算符:加减乘除,%取余,…

Stable Diffusion WebUI 使用 LoRA 调整风格——详细教程

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 大家好,我是水滴~~ 本教程旨在深入探讨 LoRA 模型的奥秘,涵盖其基本概念、独特作用以及实操指南。我们将从下载和使用LoRA的步…

8.4.3 使用3:配置单臂路由实现VLAN间路由

1、实验目的 通过本实验可以掌握: 路由器以太网接口上的子接口配置和调试方法。单臂路由实现 VLAN间路由的配置和调试方法。 2、实验拓扑 实验拓扑如下图所示。 3、实验步骤 (1)配置交换机S1 S1(config)#vlan 2 S1(config-vlan)#exit S…

微服务项目实战-黑马头条(八):App端-文章ES搜索、MongoDB搜索记录和关键词联想

文章目录 一、今日内容介绍1.1 App端搜索-效果图1.2 今日内容 二、搭建ElasticSearch环境2.1 拉取镜像2.2 创建容器2.3 配置中文分词器 ik2.4 使用postman测试 三、app端文章搜索3.1 需求分析3.2 思路分析3.3 创建索引和映射3.4 数据初始化到索引库3.4.1 导入es-init到heima-le…

【七】jmeter5.5+influxdb2.0+prometheus+grafana

参考文章:https://blog.csdn.net/wenxingchen/article/details/126892890 https://blog.csdn.net/Zuo19960127/article/details/119726652 https://blog.csdn.net/shnu_cdk/article/details/132182858 promethus参考 由于自己下载的是infuldb2.0,所以按照…

grafana报错This panel requires Angular (deprecated)

1.原因 报错解释: Grafana在更新到7.0版本后,弃用了AngularJS(一种用于构建大型Web应用的JavaScript框架)。在早期的Grafana版本中,某些面板可能依赖于AngularJS,但这种依赖已经逐步被新的React或Vue面板所…

智慧安防视频监控EasyCVR视频汇聚平台无法自动播放视频的原因排查与解决

国标GB28181协议EasyCVR安防视频监控平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,平台支持7*24小时实时高清视频监控,能同时播放多路监控视频流…

Esp8266 - USB开关分享(开源)

文章目录 简介推广自己gitee项目地址:嘉立创项目地址:联系我们 功能演示视频原理图嘉立创PCB开源地址原理图PCB预览 固件烧录代码编译烧录1. 软件和驱动安装2. 代码编译1. 安装所需要的依赖库文件2. 下载源代码3. 烧录代码 使用说明1. 设备配网2. 打开设备操作页面3…

STM32 I²C通信

一、IC总线通信 1.1 IC总线特点 IC(Inter Integrated Circuit,集成电路总线),通过串行数据线SDA(Serial Data)和串行时钟线SCL(Serial Clock)来完成数据的传输。 特点:…