系统架构-面向服务架构(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. 异步消息传递微服务: 将消息写入一个消息队列中,实现业务逻辑以异步方式运行

图片来源于网络

相关推荐
虚谷233 小时前
AI时代企业应用系统架构的新思路与CIO变革指南
人工智能·系统架构
Nice__J3 小时前
智芯Z20K144x MCU开发之时钟架构
单片机·嵌入式硬件·架构
信徒_3 小时前
微服务系统设计
微服务·云原生·架构
大数据追光猿3 小时前
【大数据】服务器上部署Apache Paimon
大数据·服务器·docker·架构·apache
free慢4 小时前
Docker组件详解:核心技术与架构分析
docker·eureka·架构
亚里随笔6 小时前
StreamRL:弹性、可扩展、异构的RLHF架构
人工智能·架构·大语言模型·rlhf·推理加速
老友@7 小时前
MySQL + Elasticsearch:为什么要使用ES,使用场景与架构设计详解
数据库·mysql·elasticsearch·搜索引擎·性能优化·系统架构
what_201810 小时前
集群/微服务/分布式
运维·微服务·架构