《系统架构设计师教程(第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.mfbz.cn/a/571384.html

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

相关文章

RTT学习 cortex-m移植

Cortex-M移植 PRIMASK寄存器 PRIMASK寄存器为1位宽的中断屏蔽寄存器。在置位时,它会阻止不可屏蔽中断(NMI)和HardFault异常之外的所有异常(包括中断)。实际上,它是将当前异常优先级提升为0,这也…

Jenkins CI/CD 持续集成专题四 Jenkins服务器IP更换

一、查看brew 的 services brew services list 二、编辑 homebrew.mxcl.jenkins-lts.plist 将下面的httpListenAddress值修改为自己的ip 服务器,这里我是用的本机的ip 三 、重新启动 jenkins-lts brew services restart jenkins-lts 四 、浏览器访问 http://10.…

golang学习笔记(defer基础知识)

什么是defer defer语句用于golang程序中延迟函数的调用, 每次defer都会把一个函数压入栈中, 函数返回前再把延迟的函数取出并执行。 为了方便描述, 我们把创建defer的函数称为主函数, defer语句后面的函数称为延迟函数。延迟函数…

【Burpsuite靶场】XSS专题精讲

【个人】:NEUQ大一学生 【专业】:通信工程 (Communication Engineering) 【个人方向】:网安、开发双管齐下 【座右铭】:真正的英雄主义,就是看清生活的真相后依然热爱生活 -- 罗曼.罗兰 一、认识XSS(跨站脚本攻击&…

fatal: unable to access ‘https://github.com/alibaba/flutter_boost.git/

Git error. Command: git fetch stdout: stderr: fatal: unable to access ‘https://github.com/alibaba/flutter_boost.git/’: Failed to connect to github.com port 443 after 75005 ms: Couldn’t connect to server exit code: 128 GitHub (国际型)代码 分发平台/托管平…

梯度下降法总是在同一点收敛吗?

梯度下降法总是在同一点收敛吗? 梯度下降法并不总是在同一点收敛。梯度下降法的收敛取决于多个因素,包括初始参数的选择、学习率的设置、损失函数的形状等。 以下是一些影响梯度下降法收敛行为的关键因素: 1.初始参数: 初始参数…

Json-server 模拟后端接口

json-server,模拟rest接口,自动生成增删改查接口。(官网地址:json-server - npm) 使用方法: 1. 安装json-server,npm i json-server -g 2. 创建json文件,文件中存储list数据,db.json {"…

图像超分辨率技术在AI去衣中的应用探索

在数字图像处理领域,图像超分辨率(Super-Resolution, SR)技术一直是研究的热点之一。该技术旨在从低分辨率的图像中恢复出高分辨率的图像,以提供更清晰、更丰富的细节信息。近年来,随着人工智能(AI&#xf…

<计算机网络自顶向下> 路由器组成

路由器结构概况 路由:运行路由选择算法/协议(RIP, OSPF, BGP)生成路由表转发:从输入到输出链路交换数据包-根据路由表进行分组的转发中间的fabric是用来接收输入的分组交给输出端口的,完成局部的转发(根据…

free 命令示例

目录 ⛳️推荐 前言 Linux 中如何使用 free 命令 1、以人类可读的形式显示信息 2、连续显示统计数据 3、定义显示统计数据的次数 4、指定输出数据类型 5、获取物理内存和交换内存的总和 总结 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂&am…

掌握注册唤起应用的秘诀,Xinstall助你提升用户体验

在移动互联网时代,App已经成为我们日常生活中不可或缺的一部分。然而,随着App数量的激增,如何让自己的App在激烈的市场竞争中脱颖而出,成为开发者们关注的焦点。其中,注册唤起应用作为提升用户体验和转化率的关键环节&…

4- 24

day02 1.100个英语单词 2.vp div3 不过有点小悲惨,第一题正常的直接看出来答案。第二题其实是map模拟,一直没有读懂题目的意思,题目给的序列是打乱的。找出最小的,讲原来的序列补全,如果mp中没有这个数字,…

Linux网络-DHCP原理与配置

目录 一.DHCP工作原理 1.了解DHCP服务 1.1.使用DHCP的好处 1.2.DHCP的分配方式 2.DHCP的租约过程 2.1.DHCP工作原理 2.2.DHCP交互过程 二.DHCP服务器的配置 1.关闭防火墙 2.检查并且安装DHCP有关软件包 3.查看系统的配置文件 3.1.设置参数 4.修改网络 4.1.修改虚…

python高级进阶(一)[str字符串、set集合、dict字典]

目录 一、str字符串 1. 字符串的概念 2.字符串的特点 3. 定义字符串 4. 获取字符串中的某个元素 5. 遍历字符串 6. 字符串的常用方法 6.1 判断 6.2 转换 6.3 查找 6.4 切割 6.5 去空白 7. 小案例【用户名和密码合法校验】 8. 常用方法中 isdecimal() 和 isdigi…

前端开发攻略---封装calendar日历组件,实现日期多选。可根据您的需求任意调整,可玩性强。

1、演示 2、简介 1、该日历组件是纯手搓出来的,没依赖任何组件库,因此您可以随意又轻松的改变代码,以实现您的需求。 2、代码清爽干净,逻辑精妙,您可以好好品尝。 3、好戏开场。 3、代码(Vue3写法&#xff…

分布式与一致性协议之CAP(一)

CAP理论 概述。 在开发分布式系统的时候,会遇到一个非常棘手的问题,那就是如何根据业务特点,为系统设计合适的分区容错一致性模型,以实现集群能力。这个问题棘手在当发生分区错误时,应该如何保障系统稳定运行而不影响…

C++多态(个人笔记)

C多态 1.多态的定义以及实现1.1多态的构成条件1.2虚函数1.3虚函数的重写1.4override和final1.5函数重载,覆盖(重写),隐藏(重定义)区别 2.抽象类2.1接口继承和实现继承的区别 3.多态原理3.1虚函数表3.2多态的…

SpringBoot整合七牛云实现图片的上传管理

唠嗑部分 各位小伙伴大家好,我是全栈小白,今天我们来分享一下SpringBoot如何整合七牛云存储实现图片的上传与存储 首先我们来说说图片存储,在项目中图片几乎是必不可少的,那么大家会选择怎样存储呢,当然有几种方案 …

软件游戏缺失d3dcompiler_43.dll怎么修复?分享多种靠谱的解决方法

在我们日常频繁地操作和使用电脑的过程中,时常会遇到一些突发的技术问题。其中一种常见的情况是,在尝试启动或运行某个应用程序时,系统会弹出一个错误提示窗口,明确指出当前电脑环境中缺少了一个至关重要的动态链接库文件——d3dc…

算法学习笔记Day9——动态规划初探

一、介绍 本文解决几个问题:动态规划是什么?解决动态规划问题有什么技巧?如何学习动态规划? 1. 动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用比较多&#xff…
最新文章