目录
SOA (Service-Oriented Architecture,SOA),从应用和原理的角度,目前有2种公认的标准定义。
从应用的角度定义
可以认为SOA是一种应用程序架构。将业务应用划分为单独的业务功能和流程,即所谓的服务。所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程。
这种业务灵活性可以使企业快速发展,降低成本,改善对及时、准确信息的访问。有助于实现更多的资产重用、更轻松的管理和更快的开发和部署。
从软件的基本原理定义
可以认为SOA是一个组件模型。它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
接口就是采用中立的方式 进行定义的,它独立于服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以一种统一和通用的方式进行交互。
在SOA的架构中,继承了来自对象
和构件
设计的各种原则。例如封装和自我包含等。那些保证服务的灵活性和松耦合性和复用能力的设计原则,对SOA架构来说同样是非常重要的。SOA是一种粗粒度、松耦合 的服务架构,其服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通信接口。具有以下特征:
(1)标准化接口:通过服务接口的标准化描述,使得服务可以通过给在任何异构平台和任何用户接口中使用。
(2)自包含和模块化
(3)粗粒度服务:能够提供高层业务逻辑的可用性服务,通过一组有效设计和组合的粗粒度服务,业务专家能够有效的组合出新的业务流程和应用程序。
(4)松散耦合:将服务的使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来。
(5)互操作性、兼容和策略声明
UDDI(Universal Description Discovery and Integration),统一描述、发现和集成
提供了一种服务发布、查找和定位的方法,是服务的信息注册规范 ,以便被需要该服务的用户发现它。UDDI规范描述了服务的概念,同时也定义了一种编程接口 ,通过UDDI提供的标准接口,企业可以发布自己的服务供其他企业查询和调用,也可以查询特定服务的描述信息,并动态绑定到该服务器上。
在UDDI技术规范中,主要包含以下三个部分的内容:
1)数据模型:UDDI数据模型是一个用于描述业务组织和服务的XML SChema
2)API:UDDI API 十一组用于查找或发布UDDI数据的方法,UDDI API基于SOAP。
3)注册服务:UDDI服务是SOA中的一种基础设施,对应着服务注册中心的角色。
WSDL(Web Service Description Language),Web服务描述语言
是对服务进行描述的语言,由一套基于XML的语法定义。WSDL描述的重点是服务,它包含服务事先定义和服务接口定义。
SOAP(Simple Object Access Protocol),简单对象访问协议
定义了服务请求者和服务提供者之间的消息传输规范 。SOAP用XML 来格式化消息,用HTTP 来承载消息。通过SOAP,应用程序可以在网络中心进行数据交换和远程过程调用。
SOAP主要包括以下四个部分:
SOAP封装定义了一个整体框架,用来表示消息中包含什么内容,谁来处理这些内容,以及这些内容是可选还是必须的。
SOAP编码规则定义了一种序列化的机制,用于交换系统所定义的数据类型的实例
1)封装: SOAP封装定义了一个整体框架,用来表示消息中包含什么内容,谁来处理这些内容,以及这些内容是可选还是必须的。
2)编码规则:SOAP编码规则定义了一种序列化的机制,用于交换系统所定义的数据类型的实例
3)PRC表示:SOAP RPC表示定义了一个用来表示远程过程调用和应答的协议
4)绑定:SOAP绑定定义了一个使用底层数据协议来完成在节点之间交换SOAP封装的约定。
REST(Representational State Transfer),表述状态转移
是一种只用HTTP和XML进行Web通信的技术,可以降低开发的复杂度,提高系统的可伸缩性。它的简单性和缺少严格配置的文件的特性,使它与SOAP很好的隔离开来,REST从根本上来说只支持几个操作(POST,GET,PUT 和 DELETE),这些操作适用于所有的消息。
REST提出了如下的一些设计概念和准则:
1)网络上的所有事物都被抽象为资源
2)每个资源对应一个唯一的资源标识
3)通过通用的连接件接口对资源进行操作
4) 对资源的操作不会改变资源标识
5) 所有的操作都是无状态的
1)建模 (2)组装 (3)部署 (4)管理 (5)控制
(1)编码灵活性 (2)明确开发人员的角色 (3)支持多种客户类型 (4)更易维护 (5)更好的可伸缩性 (6)更高的可用性 (7)利用现有资产 (8)更易于集成和管理复杂性 (9)更快的整合现实 (10)减少成本和增加重用
(1)可靠性 SOA 在事务的最高可靠性方面做的不够好,包括: 不可否认性、消息一定会被传输且仅传输一次以及事务撤回。
(2)安全性。由于SOA中的构件往往不尽相同,且有相互联系,想要保持在SOA架构中的安全性就十分复杂。
(3)编排。统一协调分布式软件以便构建有意义的业务流程是最复杂的,但它可以同时也最适合面向服务类型的集成,原因很显然,建立在SOA上的应用软件可以被设计成可以按需拆装、重新组装的服务。作为目前业务流程管理解决方案的核心,编排功能使IT管理人员能够通过已经部署的套装或者自己开发的应用软件功能,把新的元应用软件连接起来。
(4)遗留系统支持。
(5)语义: 定义事务和数据的业务含义,一直是IT管理人员面临的最棘手的问题。
(6)性能: 分布式系统之间往往有更多的网络开销。
SOA 只是一种概念和思想,需要借助于具体的技术和方法来实现它。从本质上来说,SOA是用本地计算模型来实现一个分布式应用,也有人成这种方法为“本地化设计,分布式工作”模型。CORBA、DCOM 和 EJB 都是属于这种解决方式,也就是说,SOA最终可以基于这些标准来实现。
实现SOA的方法比较多,目前比较主流的有Web Service、企业服务总线、服务注册表 。
Web Service 的解决方案中,一共有3种工作角色。服务提供者
、服务请求者
、注册中心
。其中注册中心
是一个可选的角色。他们之间的交互和操作,构成了SOA的一种实现架构。
ESB 的概念是从SOA发展起来的,他是一种为进行连接服务提供的标准化的通信基础结构,基于开放的标准,为应用提供了一个可靠的、可度量和高度安全的环境,并可帮助企业对业务流程进行设计和模拟,对每个业务流程实施控制和跟踪、分析并改进流程和性能。
ESB是由中间件技术实现并支持SOA的一组基础架构,是传统中间件技术与XML、Web Service等技术结合 的产物,是整个企业集成架构下的面向对象的企业应用集成机制。具体来说,ESB具有以下功能:
支持异构环境中的服务、消息和基于事件的交互
通过使用ESB,可以再几乎不更改代码的情况下,以一种无缝的入侵方式使现有系统具有全新的服务接口,并能够在部署环境中支持任何标准。
充当缓冲器的ESB与服务逻辑相分离,从而使不同的系统可以同时使用同一个服务,不用在系统或数据发生改变时,改动服务代码。
在更高的层次,ESB还提供注入服务代理和协议转换等功能。允许在多种形式下通过HTTP、SOAP和JMS总线的多种传输方式,主要是以网络服务的形式,为发表、注册、发现和使用企业服务或界面提供基础设施。
提供可配置的消息转换翻译机制和基于消息内容的消息路由服务,传输消息到不同的目的地。
提供安全和拥有者机制,以保证消息和服务的认证、授权和完整性。
关于作者:
犇叔,浙江大学计算机科学与技术专业,研究生毕业,而立有余。先后在华为、阿里巴巴和字节跳动,从事技术研发工作,资深研发专家。主要研究领域包括虚拟化、分布式技术和存储系统(包括CPU与计算、GPU异构计算、分布式块存储、分布式数据库等领域)、高性能RDMA网络协议和数据中心应用、Linux内核等方向。
专业方向爱好:数学、科学技术应用
关注犇叔,期望为您带来更多科研领域的知识和产业应用。
内容坚持原创,坚持干货有料。坚持长期创作,关注犇叔不迷路