【系统架构师】-第15章-面向服务架构设计

news2024/10/9 18:26:03

面向服务的体系结构 (Service-Oriented Architecture,SOA)

1、应用角度:它着眼于日常的业务应用,并将它们划分为单独的业务功能和流程,即所谓的服务

2、软件基本原理:一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。

1、萌芽阶段

以XML技术为标准

2、标准化阶段

简单对象访问协议 (SOAP)

Web服务描述语言 (WSDL)

通用服务发现和集成协议 (UDDI)

3、成熟阶段

三个重量级规范SCA、SDO、WS-Policy

1、与微服务的区别

  • (1)微服务相比于 SOA更加精细,微服务更多地以独立的进程的方式存在,互相之间并无影响;
  • (2)微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用, 无关语言、平台限制;
  • (3)微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。

微服务是SOA的进一步优化,移除了ESB,减低服务间耦合、服务的异构。

微服务架构是 SOA架构思想的一种扩展,更加强调服务个体的独立性、拆分粒 度更小。

2、SOA参考架构

(1)业务逻辑服务:

1)整合已有应用——应用和信息访问服务

  • 可接入服务:通过各种消息通信模式(单向、请求/应答和轮询)将业务逻辑和业务数据包装成企业服务总线可以访问的功能
  • 事件发现服务:提供事件通知服务将已有应用和数据中的变化通过事件框架发布到企业服务总线上

2)整合新开发的应用——业务应用服务

  • 组件服务:为可重用的组件提供应用的运行时容器管理服务,如对象持久化、组件安全管理和事务管理等
  • 核心服务:提供运行时的服务,包括内存管理、对象实例化和对象池、性能管理和负载均衡、可用性管理等
  • 接口服务:提供和其他企业系统集成的接口,如其他企业应用,数据库、消息系统和管理框架。

3)整合客户和业务伙伴 (B2C/B2B)——伙伴服务

  • 社区服务:用于管理和企业贸易的业务伙伴,支持以交易中心 (Trade Hub) 为主的集中式管理和以伙伴为中心的自我管理。
  • 文档服务:用于支持和业务伙伴交换的文档格式,以及交互的流 程和状态管理,支持主流的 RosettaNet、EDI 和 AS1/AS2等
  • 协议服务:为文档的交互提供传输层的支持,包括认证和路由等

(2)控制服务

包括实现人、 流 程和信息集成的服务,以及执行这些集成逻辑的能力。

1)数据整合——信息服务

  • 联邦服务:提供将各种类型的数据聚合的能力,它既支持关系型 数据,也支持像XML 数据、文本数据和内容数据等非关系型数据。
  • 复制服务:提供远程数据的本地访问能力,它通过自动的实时复制和数据转换,在本地维护一个数据源的副本
  • 转换服务:用于数据源格式到目标格式的转换,可以是批量的或者是基于记录的。
  • 搜索服务:提供对企业数据的查询和检索服务

2)流程整合——流程服务

服务编排、十五服务、人工服务(将人工的活动集成到流程中)

3)用户访问整合——交互服务

交付、体验、资源

(3)连接服务

通过提供企业服务总线ESB提供分布在各种架构元素中 服务间的连接性。

ESB特征

描述服务的元数据和服务注册管理;

在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力

发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。

对安全的支持、服务质量保证、可管理性和负载平衡等。

ESB的核心功能

(1)提供位置透明性的消息路由和寻址服务。

(2)提供服务注册和命名的管理功能。

(3)支持多种消息传递范型(如请求/响应、发布/订阅等)。

(4)支持多种可以广泛使用的传输协议。

(5)支持多种数据格式及其相互转换。

(6)提供日志和监控功能。

(4)业务创新和优化服务

用于监控业务系 统运行时服务的业务性能,并通过及时了解到的业务性能和变化,采取措施适应变化的市场。

(1)公共事件框架服务:通过一个公共事件框架提 供IT和业务事件的激发、存储和分类等。

(2)采集服务:过基于策略的过滤和相关性分析检测感兴趣的服务。

(3)监控服务:通过事件与监控上下文间的映射,计算和管理业务流 程的关键性能指标 (Key Performance Indicators,KPI)。

(5)开发服务

贯彻整个软件开发生命周期的开发平台,从需求分 析,到建模、设计、开发、测试和维护等全面的工具支持。

(6)IT服务管理

支持业务系统运行的各种基础设施管理能力或 服务,如安全服务、目录服务、系统管理和资源虚拟化。

  •  (1)安全和目录服务: 企业范围的用户、认证和授权管理, 如单点登录 (SSO)。
  • (2)系统管理和虚拟化服务: 用于管理服务 器、存储、网络和其他IT 资源。

3、主要协议和规范

UDDI (统一描述发现和集成协议)

WSDL 文档以接口集合的形式来描述Web服务, 包含对一组操作和 消息的一个抽象定义

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

 

REST规范

1、资源:以资源为中心构建,资源可以是一个订单,也可以是一幅图片

2、表述:描述资源在 Web 中某一个时间的状态

3、状态转移:

应用状态是对某个时间内用户请求会话相关信息的快照,保存在客户端,由客户端自身维护,可以和缓存配合降低服务端并发请求压力。

资源状态在服务端保存,是对某个时间资源请求表述的快照,保证在服务端。

借助HTTP方法来实现,如GET方法、 POST方法、 DELETE方法等。

4、超链接:是通过在页面中嵌入链接和其他资源建立联系,这里的资源可以是文本、图片、文件等

4、设计标准

1、文档标准化

2、通信协议标准化 XML

3、应用程序同一登记与集成

4、服务质量QoS:可靠性、安全性、策略、控制、管理

5、设计原则

1、无状态

2、单一实例:避免功能冗余

3、明确定义的接口:服务的接口由WSDL定义

4、自包含和模块化

5、粗粒度

6、服务间的松耦合

7、重用功能

8、互操作性、兼容和策略声明

 

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

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

相关文章

Python数据分析必备工具——Pandas模块及其应用

Python数据分析必备工具——Pandas模块及其应用 外部数据的读取文本文件的读取语法示例 电子表格的读取语法示例 数据库数据的读取与操作语法 数据操作数据概述语法 数据筛选语法 数据清洗数据类型语法示例 沉余数据语法示例 异常值的识别与处理缺失值的识别与处理语法示例 数据…

PHP图床程序优化版:图片外链服务、图床API服务、图片CDN加速与破解防盗链

图片免费上传 支持本地储存、FTP储存、第三方云储存(阿里云 OSS、腾讯云 COS、七牛云等)。 图片外链加速 一键转换第三方网站的图片外链地址为图床可分享的图片地址(支持CDN)。 图片解析服务 直接将第三方外链图片地址显示为…

BSV区块链的应用开发前景——通过标准化来促进创新

​​发表时间:2024年3月5日 近年来区块链领域的发展日新月异,各种全新的技术和方法论正在迅猛涌现。在这个瞬息万变的环境之中,标准化不仅仅会为开发者们带来便利,同时也促进了应用之间的互操作性,并且推动着生态系统的…

【机器学习300问】56、什么是自编码器?

一、什么是自编码器? 自编码器(Autoencoder,AE)本质是一种特殊的神经网络架构。主要用于无监督学习和特征学习任务。它的目标是通过编码然后解码的过程,学会重构其输入数据,试图还原其原始输入的。 当时我学…

【探索Linux】—— 强大的命令行工具 P.31(守护进程)

阅读导航 引言一、守护进程简介1. 概念2. 特点 二、用C创建守护进程⭕代码✅主要步骤 温馨提示 引言 当谈到计算机系统中运行的特殊进程时,守护进程(daemon)无疑是一个备受关注的话题。作为在后台默默运行并提供各种服务的进程,守…

FreeRTOS从代码层面进行原理分析(4 移植)

FreeRTOS从代码层面进行原理分析(4 移植) 从前 3 篇博客中我们已经搞清楚了最开始对 FreeRTOS 有疑问的前 2 个问题。 1. FreeRTOS 是如何建立任务的呢? 2. FreeRTOS 是调度和切换任务的呢? 3. FreeRTOS 是如何保证实时性呢? 以下就是前三…

LeetCode:300最长递增子序列 C语言

300. 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子…

大话设计模式之迪米特法则

迪米特法则,也称为最少知识原则(Law of Demeter),是面向对象设计中的一个重要原则,其核心思想是降低耦合度、减少对象之间的依赖关系,从而使系统更加灵活、易于维护和扩展。 根据迪米特法则,一…

Multisim14.0破解安装教程

Multisim14.0中文破解版是一款相当优秀的专业化SPICE仿真标准环境,Multisim14.0中文版功能强悍,为用户提供了所见即所得的设计环境、互动式的仿真界面、动态显示元件、具有3D效果的仿真电路、虚拟仪表、分析功能与图形显示窗口等等。Multisim破解版操作简…

Linux-1.常见指令以及权限理解

目录 本节目标 使用 XShell 远程登录 Linux 关于 Linux 桌面 下载安装 XShell 查看 Linux 主机 ip 使用 XShell 登陆主机 XShell 下的复制粘贴 Linux下基本指令 登录Linux服务器 新建多用户 全屏 1.快速认识5~6个命令 2.详细谈论课件的所有指令 01. ls 指令 02…

Linux 环境安装Nginx—源码和Dokcer两种安装方式

一、源代码编译安装Nginx 1.下载最新nginx源码 以nginx-1.25.3.tar.gz为例: 可以使用命令(联网):curl -O http://nginx.org/download/nginx-1.25.3.tar.gz或在官网下载.tar.gz 2.解压缩 tar -zxvf nginx-1.25.3.tar.gz cd nginx-1.25.3/ 3.安装依赖…

动态菜单设计

查询当前用户下的菜单权限 思路:根据用户id 左关联表 查询出对应的菜单选项 查询SQL select distinct-- 菜单表 去除重复记录sys_menu.id,sys_menu.parentId, sys_menu.name from -- 权限表sys_menu-- 角色与权限表 菜单表id 角色菜单表的菜单id left j…

数据分析之Power BI

POWER QUERY 获取清洗 POWER PIVOT建模分析 如何加载power pivot 文件-选项-加载项-com加载项-转到 POWER VIEW 可视呈现 如何加载power view 文件-选项-自定义功能区-不在功能区中的命令-新建组-power view-添加-确定 POWER MAP可视地图

Redis 6.0.8版本下载

简介:Java领域优质创作者楠木 分享Java项目、简历模板、学习资料、面试题库 想必大家在下载redis之前已经逛了很多教程了,可能不尽如意,找不到自己的想要的版本。既然刷到了我的这条博客,说明你是幸运的! Redis6.0.8的…

k8s1.28.8版本配置prometheus监控告警

文章目录 官方架构图组件的具体介绍kube-prometheus包含的组件简介:文件存储路径: 结构分析官网自带的一些规则自己总结流程 1-创建规则磁盘使用率报警规则 详解上面rule流程Alertmanagerg查看 2-报警接收器2.1-邮件报警修改Alertmanager配置查看现有的s…

【深耕 Python】Data Science with Python 数据科学(2)jupyter-lab和numpy数组

关于数据科学环境的建立,可以参考我的博客:【深耕 Python】Data Science with Python 数据科学(1)环境搭建 Jupyter代码片段1:简单数组的定义和排序 import numpy as np np.array([1, 2, 3]) a np.array([9, 6, 2, …

flume配置文件后不能跟注释!!

先总结:Flume配置文件后面,不能跟注释,可以单起一行写注释 报错代码: [ERROR - org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:158)] Unable to deliver event. Exception follows. org.apache.flume.EventDel…

AI的“换脸“魔术,究竟是弊大于利还是利大于弊?

公众号:【可乐前端】,每天3分钟学习一个优秀的开源项目,分享web面试与实战知识,也有全栈交流学习摸鱼群,期待您的关注! 每天3分钟开源 hi,这里是每天3分钟开源,很高兴又跟大家见面了&#xff0…

Rsyslog 日志集中管理实验

1.使用 进行日志集中管理 C/S 架构&#xff1a;客户端将其日志上传到服务器端&#xff0c;通过对服务器端日志的查询&#xff0c;来实现对其他客户端的日志进行集中管理 2.两台机器&#xff1a; &#xff08;server&#xff09;host-5(192.168.1.2)<------------>(192…

【51单片机入门记录】Onewire单总线协议 温度传感器DS18B20概述

一、温度传感器DS18B20概述 &#xff08;1&#xff09;数字化温度传感器 美国DALLAS半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点&#xff0c;使用户可轻松地组建传感器网络&#xff0c;为测量系统的构建…