当前位置: 首页 > news >正文

系统架构-面向服务架构(SOA)

概述

服务指的是系统对外提供的功能集

从应用的角度定义,可以认为SOA是一种应用框架,将日常业务划分为单独的业务功能和流程(即服务),SOA使用户可以构建、部署和整合这些服务。

从软件的基本原理定义,SOA是一个组件模型,通过将应用程序的不同功能单元(即服务)之间定义良好的接口和契约联系起来。

业务流程是指为了实现某种业务目的所进行的流程或一系列动作

BPEL:面向Web服务的业务流程执行语言,是一种使用Web服务定义和执行业务流程的语言

SOA架构以企业服务总线连接各个系统,是集中式的技术架构,应用服务间相互依赖导致部署复杂,应用间交互使用远程通信,降低了响应速度。

微服务架构是SOA架构的进一步优化,去除了ESB企业服务总线,是一个真正意义上去中心化的分布式架构,降低了微服务之间的耦合程度。

参考架构

以服务为中心的企业集成架构:

连接服务——企业服务总线ESB(Enterprise Service Bus)

ESB的基本特征和能力包括:

  • 描述服务的元数据和服务注册管理
  • 传递数据,并拥有对数据进行转换的能力
  • 发现、路由、匹配和选择的能力,查找对应服务
  • 安全支持、服务质量保证、可管理性和负载平衡等

业务逻辑服务 

功能:

  1. 整合已有应用:应用和信息访问服务
  2. 整合新开发的应用:业务应用服务
  3. 整合客户和业务伙伴(B2C/B2B):伙伴服务,提供与企业外部的服务连接

控制服务

  1. 数据整合:信息服务,提供集成数据的能力
  2. 流程整合:流程服务,完成业务流程的编排、事务、集成人工活动等
  3. 用户访问整合:交互服务,实现用户访问集成,包括:交付服务、体验服务、资源服务等

开发服务 

开发环境和工具中为不同开发者的角色提供的功能。如:建模服务、设计服务、实现服务、测试服务

业务创新和优化服务

以业务性能管理(BPM)技术为核心提供业务事件发布、收集和关键业务指标监控能力,

包括:

  1. 公共事件框架服务:提供IT和业务事件的激发、存储和分类
  2. 采集服务:分析感兴趣的服务
  3. 监控服务:通过监控,计算和管理业务流程的关键性能指标

IT服务管理 

为业务流程和服务提供安全、高效和健康的运行环境

协议和规范

最基本的协议包括:UDDI、WSDL和SOAP

UDDI(统一描述、发现和集成协议):用于查找发现服务,使得商业实体能够彼此发现

WSDL(Web服务描述语言):用来描述Web服务和说明如何与Web服务通信的XML语言,描述三个基本属性:服务做什么、如何访问服务、服务位于何处

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

SOA的设计原则 

  • 无状态:服务无需任何状态,可以独立运行
  • 单一实例:服务只提供单一功能
  • 明确定义的接口:长时间稳定,一旦公布,不能随意更改
  • 自包含和模块化:服务内部封装了一些活动和组件,服务需要自行管理和恢复
  • 粗粒度:服务数量少,消息量大
  • 松耦合:服务之间交互频次低,私有数据对使用者不可见
  • 重用功能:服务应该是可重用的
  • 互操作性、兼容和策略声明:形成完整的声明 

SOA的设计模式 

服务注册表模式

服务注册:开发者向注册表公布他们制作的服务功能

服务位置:注册表帮助使用者查找符合自身要求的服务

服务绑定: 使用者利用检索到的服务合同来开发代码

企业服务总线模式

由中间件技术实现的支持面向服务矿建的基础软件平台,企业服务总线本质上是一个中间件。

这种交互过程不再是点对点的直接交互模式,而是由事件驱动的消息交互模式(隐式调用)

微服务模式 

不再强调传统SOA框架中的ESB,特点:复杂应用解耦、独立、技术选型灵活、容错、松耦合易扩展,常见微服务设计模式:

  1. 聚合器微服务:聚合器调用多个微服务实现系统应用程序所需功能。一种是将检索到的数据信息进行处理并直接展示;另一种是获取到的数据信息增加业务逻辑处理后,再进一步发布成一个新的微服务
  2. 链式微服务:收到请求后,返回一个经过合并处理的行营,服务之间形成一条调用链
  3. 数据共享微服务:当服务之间存在强耦合关系,可能存在多个微服务共享缓存与数据库存储的现象
  4. 异步消息传递微服务: 将消息写入一个消息队列中,实现业务逻辑以异步方式运行

图片来源于网络 

相关文章:

  • 【嵌入式开发-SDIO】
  • ResNet残差神经网络的模型结构定义(pytorch实现)
  • 为什么 MySQL 用 B+ 树作为数据的索引,以及在 InnoDB 中数据库如何通过 B+ 树索引来存储数据以及查找数据
  • 使用CubeMX新建SPI读写串行FLASH工程
  • IoT平台和AIoT平台的区别
  • M0芯片的基础篇Timer
  • RSAC 2025观察:零信任+AI=网络安全新范式
  • Python+ffmpeg 实现给视频添加字幕
  • Cut video with ffmpeg
  • 前端如何处理精度丢失问题
  • Python开发系统
  • 比较Facebook与其他社交平台的隐私保护策略
  • http重新为https
  • 电梯称重控制仪功能与绳头板安装(客梯、货梯)关联性分析
  • springBoot2集成mybatis (手敲学习版)java入门友好
  • PostgreSQL 的 pg_start_backup 函数
  • 涨薪技术|0到1学会性能测试第53课-Tomcat配置
  • 【C语言干货】一维数组传参本质
  • 存储器:DDR和HBM的区别
  • AI视频生成的艺术:镜头语言
  • 47本笔记、2341场讲座,一位普通上海老人的阅读史
  • 遇冰雹天气,西安机场新航站楼成“水帘洞”
  • 美政府被曝下令加强对格陵兰岛间谍活动,丹麦将召见美代办
  • 广州下调个人住房公积金贷款利率
  • 视频|漫画家寂地:古老丝路上的文化与交流留下的独特印记
  • 债券市场“科技板”来了:哪些机构能尝鲜,重点支持哪些领域