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

news2025/1/9 2:10:35

文章目录

  • 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.coloradmin.cn/o/1619213.html

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

相关文章

ElasticSearch笔记一

随着这个业务的发展,我们的数据量越来越庞大。那么传统的这种mysql的数据库就渐渐的难以满足我们复杂的业务需求了。 所以在微服务架构下一般都会用到一种分布式搜索的技术。那么今天呢我们就会带着大家去学习分布搜索当中最流行的一种ElasticSearch,Ela…

Android Studio开发之路(八)Spinner样式设置

一、需求 白色背景显示下拉框按钮 问题: 设置Spinner的背景可以通过设置background: android:background"color/white",但是一旦设置了这个值,右侧的下拉按钮就会消失 方法一、自定义一个style(不成功) …

1张图片+3090显卡微调Qwen-VL视觉语言大模型(仅做演示、效果还需加大数据量)

原项目地址:https://github.com/QwenLM/Qwen-VL/blob/master/README_CN.md 环境本地部署(见之前博文) 【本地部署 】23.08 阿里Qwen-VL:能对图片理解、定位物体、读取文字的视觉语言模型 (推理最低12G显存) 一、数据集格式说明 …

网络安全之SQL注入漏洞复现(中篇)(技术进阶)

目录 一,报错注入 二,布尔盲注 三,sleep延时盲注 四,DNSlogs 盲注 五,二次注入 六,堆叠注入 总结 一,报错注入 报错注入就是在错误信息中执行 sql 语句,利用网站的报错信息来带…

HTML:PC和手机的自适应图形布局样例

作者:私语茶馆 1.前言 有时我们需要开发一个自适应PC和手机的HTML页面,由于屏幕大小不同,会涉及到自动部署。W3School提供了一个非常好的案例:Responsive Image Gallery。本文利用独立CSS文件详细介绍一下这个案例。 2.案例详细介绍 2.1.Project项目文件结构 企业级项目…

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

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

小程序 rich-text 解析富文本 图片过大时如何自适应?

在微信小程序中&#xff0c;用rich-text 解析后端返回的数据&#xff0c;当图片尺寸太大时&#xff0c;会溢出屏幕&#xff0c;导致横向出现滚动 查看富文本代码 图片是用 <img 标签&#xff0c;所以写个正则匹配一下图片标签&#xff0c;手动加上样式即可 // content 为后…

文献速递:深度学习胶质瘤诊断---空间细胞结构预测胶质母细胞瘤的预后

Title 题目 Spatial cellular architecture predicts prognosis in glioblastoma 空间细胞结构预测胶质母细胞瘤的预后 01文献速递介绍 胶质母细胞瘤的治疗耐药性的关键驱动因素是肿瘤内的异质性和细胞状态的可塑性。在这里&#xff0c;我们调查了空间细胞组织与胶质母细胞瘤…

图像哈希:全局+局部提取特征

文章信息 作者&#xff1a;梁小平&#xff0c;唐振军期刊&#xff1a;ACM Trans. Multimedia Comput. Commun. Appl&#xff08;三区&#xff09;题目&#xff1a;Robust Hashing via Global and Local Invariant Features for Image Copy Detection 目的、实验步骤及结论 目…

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

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

排序算法:顺序查找

简介 顺序查找&#xff08;也称为线性查找&#xff09;是一种简单直观的搜索算法。按照顺序逐个比较列表或数组中的元素&#xff0c;直到找到目标元素或搜索完整个列表。 应用场景 数据集比较小&#xff0c;无需使用复杂的算法。数据集没有排序&#xff0c;不能使用二分查找…

springboot停机关闭前保证处理完请求

application.yml配置 server:shutdown: graceful // 处理完请求在关闭服务server:shutdown: immediate // 立刻关闭&#xff0c;默认 jvm关闭自带的回调

【QT学习】9.绘图,三种贴图,贴图的转换,不规则贴图(透明泡泡)

一。绘图的解释 Qt 中提供了强大的 2D 绘图系统&#xff0c;可以使用相同的 API 在屏幕和绘图设备上进行绘制&#xff0c;它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作&#xff0c;其提供的 API 在 GUI 或 QImage、QOpenGLPaintDev…

Windows10如何关闭Edge浏览器的Copilot

在Windows10更新后&#xff0c;打开Edge浏览器&#xff0c;无论复制什么内容&#xff0c;都会弹出Copilot人工智能插件&#xff0c;非常令人反感&#xff0c;网上搜索的关闭方法都非常麻烦&#xff0c;比如&#xff1a;组策略和注册表。自己摸索得出最简便有效的关闭方法。 1、…

自然语言处理: 第二十八章大模型基底之llama3

项目地址: meta-llama/llama3: The official Meta Llama 3 GitHub site 前言 LLaMa系列一直是人们关注的焦点&#xff0c;Meta在4月18日发布了其最新大型语言模型 LLaMA 3。该模型将被集成到其虚拟助手Meta AI中。Meta自称8B和70B的LLaMA 3是当今 8B 和 70B 参数规模的最佳模…

【深度学习】YOLOv5,烟雾和火焰,目标检测,防火检测,森林火焰检测

文章目录 数据收集和数据标注查看标注好的数据的脚本下载yolov5创建 dataset.yaml训练参数开始训练yolov5n训练训练后的权重下载gradio部署 数据收集和数据标注 搜集数据集2w张。 pip install labelme labelme 然后标注矩形框和类别。 下载数据请看这里&#xff1a; https:…

Go 堆内存分配源码解读

简要介绍 在Go的内存分配中存在几个关键结构&#xff0c;分别是page、mspan、mcache、mcentral、mheap&#xff0c;其中mheap中又包括heapArena&#xff0c;具体这些结构在内存分配中担任什么角色呢&#xff1f; 如下图&#xff0c;可以先看一下整体的结构&#xff1a; mcach…

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

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

SpringBoot学习之Kafka发送消费消息入门实例(三十五)

使用Kafka之前需要先启动fKafka,如何下载安装启动kafka请先参考本篇文章的前两篇: 《SpringBoot学习之Kafka下载安装和启动【Windows版本】(三十四)》 《SpringBoot学习之Kafka下载安装和启动【Mac版本】(三十三)》 一、POM依赖 1、加入kafka依赖 2、我的整个POM代码…

docker容器技术篇:容器集群管理实战mesos+zookeeper+marathon(一)

容器集群管理实战mesoszookeepermarathon&#xff08;一&#xff09; mesos概述 1.1 Mesos是什么 Apache Mesos 是一个基于多资源调度的集群管理软件&#xff0c;提供了有效的、跨分布式应用或框架的资源隔离和共享&#xff0c;可以运行 Hadoop、Spark以及docker等。 1.2 为…