面向服务的体系结构(Service-Oriented Architecture, SOA)
面向服务的体系结构(Service-Oriented Architecture, SOA)是一种软件架构模式,它将应用程序的不同功能组织为一组可重用的、松耦合的、自治的服务,这些服务通过标准化的接口进行交互。SOA的优点在于提高了系统的灵活性、可靠性、可扩展性和可重用性,同时使得不同技术平台之间的集成更为容易。
SOA可以被认为是一种面向服务的编程哲学,它可以被应用于任何类型的应用程序,无论是Web应用程序、企业应用程序还是移动应用程序。在SOA中,服务被视为系统的组成部分,它们可以独立开发、测试、部署和管理,也可以通过组合形成更复杂的应用程序。
SOA的核心概念包括服务、服务协定、服务注册与发现、服务编排和服务治理等。SOA的关键技术包括消息传递、Web服务、XML、SOAP、WSDL、UDDI等。
总之,SOA是一种非常有用的架构模式,可以帮助企业构建灵活、可扩展、可重用、高效的应用程序,从而提高企业的竞争力和创新能力。
SOA 的相关概念
SOA的定义
从应用的角度定义,可以认为SOA 是一种应用框架,它着眼于日常的业务应用,并将它们划分为单独的业务功能和流程,即所谓的服务。
从软件的基本原理定义,可以认为SOA 是一个组件模型,自将应用程序的不同功能单元(称为服务〉通过这些服务之间定义良好的接口和契约联系起来。
业务流程与BPEL
业务流程是指为了实现某种业务目的行为所进行的流程或一系列动作。
BPEL CBusiness Process Execution Language For Web Services) 翻译成中文的意思是面向Web 服务的业务流程执行语言,也有的文献简写成BPEL4WS
SOA 的发展历史
SOA(Service-Oriented Architecture,面向服务的架构)的发展历史可以追溯到20世纪90年代初期。当时,企业面临着许多挑战,如快速变化的业务需求、复杂的IT环境、无法集成的系统等。为了应对这些挑战,IT行业开始寻找新的软件架构模式。
在这种情况下,SOA应运而生。SOA是一种基于服务的软件架构,它将软件系统划分为多个互相协作的服务,这些服务通过标准化的接口进行通信。SOA的目标是通过服务重用和灵活性提高系统的可靠性和可维护性,降低开发和维护成本。
SOA的发展可以分为三个阶段:
-
早期阶段(1990年代中期-2000年):在这个阶段,SOA的概念开始出现,但它还没有得到广泛应用。此时,SOA的实现方式主要是通过Web服务来实现。
-
成熟阶段(2001年-2007年):在这个阶段,SOA的概念得到了普及,并且开始被广泛应用。许多企业开始采用SOA来解决业务需求和系统集成的问题。此时,SOA的实现方式不仅限于Web服务,还包括消息传递、RESTful等方式。
-
后SOA阶段(2008年至今):在这个阶段,SOA的发展开始趋于稳定,越来越多的企业开始将SOA作为核心架构。与此同时,面向微服务的架构也开始兴起,成为SOA的一种衍生形式。
总之,SOA的发展历程充满了探索和创新,它不断推动着IT行业的进步和变革。
SOA的发展历史
萌芽阶段
标准化阶段
成熟应用阶段
国内SOA的发展现状与国外对比
SOA的微服务化发展
SOA 与微服务的区别在于如下几个方面:
(1) 微服务相比于SOA 更加精细,微服务更多地以独立的道程的方式存在,互相之间并无影响;
(2) 微服务提供的接口方式更加通用化, 例如HTTP RESTful 方式,各种终端都可以调用,无关语言、平台限制:
(3)微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。
SOA 的参考架构
从服务为中心的视角来看,企业集成的架构可划分为6 大类。
( 1 )业务逻辑服务( Business Logic Service ) : 包括用于实现业务逻辑的服务和执行业务逻辑的能力,其中包括业务应用服务(Business Application Service ) 、业务伙伴服务( Partner Service ) 以及应用和信息资产( Application and lnformation asset ) 。
( 2 ) 控制服务(Control Service) :包括实现人C People ) 、流程( Process) 和信息(Information ) 集成的服务,以及执行这些集成逻辑的能力。
(3)连接服务(Connectivity Service): 通过提供企业服务总钱提供分布在各种架构元素中服务间的连接性。
( 4 ) 业务创新和优化服务( Business lnnovation and Optimization Service) : 用于监控业务系统运行时服务的业务性能,并通过及时了解到的业务性能和变化,采取措施适应变化的市场。
( 5) 开发服务( Development Service): 贯彻整个软件开发生命周期的开发平台,从需求分析,到建模、设计、开发、测试和维护等全面的工具支持。
( 6) IT 服务管理( IT Service Management) :支持业务系统运行的各种基础设施管理能力或服务,如安全服务、目录服务、系统管理和资源虚拟化。
1. 连接服务一一企业服务总线
企业服务总线CEnterprise Service Bus, ESB) 是过去消息中间件的发展,采用了"总线"这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务的级别上动态地互联互通。
2. 业务逻辑服务
3. 控制服务
4 . 开发服务
5. 业务创新和优化
6.IT 服务管理
UDDI协议
UDDI(Universal Description, Discovery and Integration)协议是一种全球性的面向网络服务的标准,用于描述、发现和集成Web服务。UDDI协议定义了一种机制来注册和发现web服务,使得企业能够轻松地找到他们需要的服务以及将自己的服务暴露出去,以便其他人可以使用。
UDDI协议包括三个核心组件:
-
UDDI注册:用于发布服务,包括服务的名称、描述、分类、访问点等。
-
UDDI发现:用于搜索服务,可以根据服务的名称、分类、关键字等来搜索服务。
-
UDDI集成:用于将不同的服务组合在一起,以构建更复杂的应用程序。
UDDI协议的优点包括:
-
可以帮助企业更轻松地发现和集成现有的Web服务。
-
提供了一种标准化的机制,使得不同平台上的应用程序可以相互通信。
-
可以帮助企业降低开发和维护成本,提高应用程序的可靠性和可扩展性。
总之,UDDI协议是一种非常有用的标准,可以帮助企业更轻松地构建和集成Web服务,同时还可以提高应用程序的可靠性和可扩展性。
WSDL规范
通过WSDL.可描述叭ieb 服务的三个基本属性。
(1)服务做些什么一一服务所提供的操作(方法)。
(2)如何访问服务一一和服务交互的数据格式以及必要协议。
(3)服务位于何处一一协议相关的地址,如URL 。
WSDL 文档被分为两种类型:服务接口(Service Interface) 和服务实现(Service Tmplementations )
WSDL(Web Services Description Language)是一种用于描述 Web 服务的 XML 规范。它提供了一种统一的方式来描述 Web 服务,以便不同的应用程序可以相互协作。以下是 WSDL 规范的一些重要方面:
-
描述 Web 服务:WSDL 提供了一种标准化的方式来描述 Web 服务的功能、操作和输入/输出参数等。
-
技术无关性:WSDL 是一种独立于编程语言和平台的规范,因此可以从不同语言和平台中调用 Web 服务。
-
Web 服务发现:WSDL 文档可以被用于自动化的 Web 服务发现和调用,使得应用程序能够自动查询可用的 Web 服务。
-
统一的协议:WSDL 规范提供了一个统一的方法来描述 Web 服务所使用的协议,如 SOAP、HTTP 等。
-
与 XML Schema 集成:WSDL 规范可以与 XML Schema 集成,以便提供一个完整的 Web 服务描述。
总之,WSDL 规范为不同的应用程序提供了一种标准化的方式来描述和调用 Web 服务,使得应用程序可以更方便、更可靠地协作。
SOAP协议
SOAP是一种用于Web服务通信的协议,全称为Simple Object Access Protocol(简单对象访问协议)。它是一种基于XML的协议,可以在HTTP、SMTP等应用层协议上进行通信。SOAP的主要作用是通过网络传输多种数据格式,如XML、JSON等。它的特点是基于标准化协议,可运行在多种环境中,并且支持多种数据格式和编程语言。同时,SOAP还具有安全性、可靠性和可扩展性等特点。传统的SOA(面向服务的架构)大型系统中常使用SOAP。
REST规范
1 . 资源(Resource)
-
表述( Representational )
-
状态转移( State Transfer )
4 . 超链接
REST 是一种设计风格而不是一个架构。
SOA 设计的标准要求
文档标准化
通信协议标准
SOA 服务用消息进行通信,该消息通常使用XML Schema 来定义(也称作XSD , XML Schema Defìnition) 。消费者和提供者,或消费者和服务之间的通信多见于不知道提供者的环境中。服务间的通信也可以看作企业内部处理的关键商业文挡。
应用程序统一登记与集成
在一个企业内部, SOA 服务通过一个扮演目录列表( Directory Listing) 角色的登记处(Registry) 来进行维护。应用程序在登记处CRegistry )寻找井调用某项服务。统一描述、定义和集成是服务登记的标准。
服务质量(QoS)
可靠性
安全性
策略
控制
管理
SOA 的作用
SOA 对于实现企业资源共享,打破"信息孤岛"的步骤如下。
(1)把应用和资源转换成服务。
(2) 把这些服务变成标准的服务,形成资源的共享。
SOA 的设计原则
(1) 无状态。以避免服务请求者依赖于服务提供者的状态。
(2) 单一实例。避免功能元余。
(3) 明确定义的接口
(4) 自包含和模块化。
(5) 粗粒度。
(6) 服务之间的松耦合性。
(7) 重用能力. 服务应该是可以重用的。
(8) 互操作性、兼容和策略声明。
SOA 的设计模式
服务注册表模式
服务注册表(Service Registry〉主要在SOA 设计时段使用,虽然它们常常也具有运行时段的功能。
企业服务总线模式
ESB 的核心功能如下.
(1)提供位置透明性的消息路由和寻址服务。
(2) 提供服务注册和命名的管理功能。
(3)支持多种消息传递也型(如请求/响应、发布/ 订阅等)
(4) 支持多种可以广泛使用的传输协议。
( 5) 支持多种数据格式及其相互转换。
( 6) 提供日志和监控功能。
案例研究
协同企业服务总线SynchroESB 就是基于SOA 体系结构,以ESB 为底居架构,包含丰富的预制程序组件,集中式管理工具和可视化应用程序开发界丽的服务整合软件平台.
微服务模式
-
微服务架构概述
-
微服务架构模式方案
3 . 微服务架构面临的问题与挑战
构建SOA 架构时应该注意的问题
原有系统架构中的集成需求
服务粒度的控制以及无状态服务的设计
SOA 实施的过程
选择SOA解决方案
1 . 尽量选择能进行全局规划的方案
-
选择时充分考虑企业自身的需求
-
从平台、实施等技术方面进行考察
业务流程分析
- 建立服务模型
2 . 建立业务流程
SOA 实施的过程可以分为以下几个步骤:
-
确定业务需求和目标:在开始实施 SOA 前,需要确定具体的业务需求和目标,以便确保 SOA 的实施过程与业务的需求相匹配。
-
设计服务架构:在确定了业务需求和目标后,需要开始设计服务架构,包括确定服务的功能和定义服务接口等。
-
实施服务:实现服务的开发,包括编写代码、测试和发布等。
-
注册和发现服务:在实施服务后,需要将服务注册到服务注册表中,以便其他应用程序可以发现和使用它们。
-
集成服务:在注册和发现服务后,需要将服务集成到应用程序中,并进行测试和验证。
-
监控和管理服务:需要实现监控和管理服务的工具,以便可以监测服务的使用情况和进行故障排除。
-
持续优化服务:在服务实施后,需要持续优化服务的性能和功能,以适应业务需求的不断变化。
以上是 SOA 实施过程的基本步骤,但实际的 SOA 实施过程可能因组织和项目的不同而有所不同。