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

面向服务的体系结构 (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.mzph.cn/news/779695.shtml

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

相关文章

【python】爬取4K壁纸保存到本地文件夹【附源码】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 图片信息丰富多彩,许多网站上都有大量精美的图片资源。有时候我们可能需要批量下载这些图片,而手动一个个下载显然效率太低。因此,编写一个简单的网站图片爬取程序可以帮助我们…

OpenHarmony:全流程讲解如何编写ADC平台驱动以及应用程序

ADC(Analog to Digital Converter),即模拟-数字转换器,可将模拟信号转换成对应的数字信号,便于存储与计算等操作。除电源线和地线之外,ADC只需要1根线与被测量的设备进行连接。 一、案例简介 该程序是基于…

Qt+OpenGL入门教程(二)——OpenGL渲染管线

渲染管线是图形学不可或缺的,在学习它之前,我们先了解一下什么是管线? 管线/流水线 当我们谈到管线时,我们指的是一个由多个阶段组成的过程,每个阶段都完成任务的一部分。在现实世界中,流水线的概念在许多…

【讲解下go和java的区别】

🔥博主:程序员不想YY啊🔥 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家💫 🤗点赞🎈收藏⭐再看💫养成习惯 🌈希望本文对您有所裨益,如有…

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

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

关于Linux中的history命令

前言:本文内容为实操学习记录,不具有调研价值,仅供参考! 正文: 接触过Linux操作系统的朋友一般都知道history命令,直接输入history命令,会显示当前用户的历史输入记录。这个原理是linux会记录我…

constexpr与std::is_same_v碰撞会产生什么火花?

1. 只编译会用到的if分支 示例代码一中,checkType_v1和checkType_v2两个函数的区别就是if的条件里一个加了constexpr一个没加,加与不加从结果来看都一样,那在编译时和运行时各有什么区别呢? 示例代码一,test_01.cpp&…

ctfshow靶场sql注入wp

目录 web171 web172 web173 web174 web175 web176 web177-179 web180-183 web184 web185 web187 web190 web191 web192 web193 web194 web195 web196 web197 web199 web201 web202 web203 web204 web205 web206 web207 web208 web209 web210 web…

vscode调试Unity

文章目录 vscode调试UnityC#环境需求开始调试 Lua添加Debugger环境配置联系.txt文件配置Java环境 添加调试代码断点不生效的问题 vscode调试Unity C# 现在使用vscode调试Unity的C#代码很简单,直接在vscode的EXTENSIONS里面搜索“Unity”,第一个就是&am…

VMware虚拟机更换引导顺序

前言 我用wmware装了黑群晖测试,将img转成vmdisk的格式之后发现系统引导盘之后1G,有点太小了 我准备把wmware的黑群晖系统迁移到新添加的虚拟磁盘里 1.登录黑群晖的SSH 请先在黑群晖的控制面板中的终端机和SNMP里面启用SSH功能,才能使用ss…

PLC_博图系列☞P=:在信号上升沿置位操作数

PLC_博图系列☞P:在信号上升沿置位操作数 文章目录 PLC_博图系列☞P:在信号上升沿置位操作数背景介绍P:在信号上升沿置位操作数说明参数示例 关键字: PLC、 西门子、 博图、 Siemens 、 P 背景介绍 这是一篇关于PLC编程的文章…

DC-5靶机

一.环境搭建 1.下载地址 靶机下载地址:https://download.vulnhub.com/dc/DC-5.zip 2.虚拟机配置 切换nat模式,有问题全选重试和是,打到这了,我感觉这个配置我都不用写了,启动靶机如下图所示即可 二.开始渗透 1.信…

Few-short Learning笔记-1

Few short learning 用很少的样本进行分类或者是回归 support set:小的数据集(无法训练出深度神经网络) few short learning的目标是让机器自己学会学习。 few shot learning是一种meta learning(learn to learn) 举…

Rust编程(五)终章:查漏补缺

闭包 & 迭代器 闭包(Closure)通常是指词法闭包,是一个持有外部环境变量的函数。外部环境是指闭包定义时所在的词法作用域。外部环境变量,在函数式编程范式中也被称为自由变量,是指并不是在闭包内定义的变量。将自…

MySQL学习笔记------DCL

DCL Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限 一、管理用户 1、查询用户 USE mysql; select *from user; 2、创建用户 create user 用户名主机名 identified by 密码&a…

向机器人传授人类社会同步的艺术

在数字时代,社交机器人正迅速成为主流社会的一部分,从培训医生和教育儿童到提供谈话疗法和客户服务。现在,这是一个价值数十亿美元的全球产业,对具有类似人类社交智能的机器人的需求不断增长,这标志着我们技术史上的一…

Linux之冯诺依曼体系,操作系统,进程的理解,进程状态,以及进程的优先级

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.冯诺依曼体系 二.操作系统 2.1概念 2.2结构示意图&…

主流公链 - BCH BSV BTG

为什么出现分叉 BTC是自由的,BTC社区也是自由的,自然而然的会出现不同观点的群体 1. 比特币现金(Bitcoin Cash,BCH) 分叉日期: 2017年8月1日主要目的: 提高比特币的交易吞吐量和降低交易费用技术…

写作类AI推荐(一)

本章要介绍的写作AI如下: paperpal 特点: 面向科研人员的AI写作工具。可以选择自己的专业,如本科生/教授。 链接:Paperpal-专业AI论文润色与论文检测平台 笔灵 特点: 面向专业写作领域的AI写作工具。可以选择要写的文章…

人事管理系统|基于springboot人事管理系统的设计与实现(附项目源码+论文)

基于springboot人事管理系统的设计与实现 目录 基于springboot人事管理系统的设计与实现 一、摘要 二、相关技术 三、系统设计 3.1 整体功能结构图 3.2 功能具体细节设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取: 一、摘要 传统信息…