SOA概述
SOA团队 2020-03-16
SOA是一种架构模型,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA的关键是“服务”的概念,W3C将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化”。
Service-architecture.com将SOA定义为:“本质上是服务的集合。服务间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务间需要某些方法进行连接。所谓服务就是精确定义、封装完善、独立于其他服务所处环境和状态的函数。”
Looselycoupled.com将SOA定义为:“按需连接资源的系统。在SOA中,资源被作为可通过标准方式访问的独立服务,提供给网络中的其他成员。与传统的系统结构相比,SOA规定了资源间更为灵活的松散耦合关系。”
Gartner则将SOA描述为:“客户端/服务器的软件设计方法,一项应用由软件服务和软件服务使用者组成……SOA与大多数通用的客户端/服务器模型的不同之处,在于它着重强调软件组件的松散耦合,并使用独立的标准接口。”
Gartner相信BPM和SOA的结合对所有类型的应用集成都大有助益:“SOA极大的得益于BPM技术和方法论,但是SOA面临的真正问题是确立正确的企业意识,即:强化战略化的SOA计划(针对供应和使用)并鼓励重用。”
虽然不同厂商或个人对SOA有着不同的理解,但是我们仍然可以从上述的定义中看到SOA的几个关键特性:一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。
综合以上,结合SOA咨询和实践的经验,可以对SOA给出更加容易理解的定义即SOA本身是一种架构方法论,该方法论的重点是找寻到企业业务系统内可以复用的服务,这些服务同时具备粗粒度,离散,松耦合,无状态等基本服务特征;同时这些服务可以灵活的进行服务组合,服务组装和编排,以灵活快速的满足业务的变化。
再举个简单的例子来说明SOA:传统的活字印刷术,用于印刷的3000-4000个字即是最基础的原子服务,有了这些原子服务我们很容易通过这些活字去排版整篇文章。文章内容有调整我们也只是需要调整这些原子服务的顺序。但是如果全是单个汉字我们其实排版工作量还是很大,所以再向上我们会出现词组或常用短句,这些即是组合服务,这样我们排版速度可以增加。但是可以看到词组或短语的可重用程度降低了。所以越到组合服务或流程服务,复用越困难,但是要是能够复用却能大大提升效率。
Open Group SOA Reference Architecture 标准提出了一种基于 SOA 解决方案的参考架构。它提供了 SOA 分区和分解到层的高度抽象,每一层都提供一组 SOA 解决方案所需的功能。
上述SOA参考架构,可以分为9大层次:
■ 操作系统层:操作和 IT 系统层可捕获组织的基础架构、包括新的和已有的,这是在设计、部署和运行时支持 SOA 解决方案所必需的。该层代表实际运行时基础架构和运行在该基础架构上的其他 SOA 架构的交叉点。另外,它也是底层基础架构即服务 (Infrastructure as a Service, IaaS) 结构和广泛的云计算背景中其他 SOA 架构的交叉点。该层的关键要求将在 “功能” 小节进行介绍,其中描述了满足那些需求的功能。
■ 服务组件层:服务组件层包含软件组件,每个软件组件提供服务或者服务上操作的实施或 “实现”。该层也包含功能和技术组件,方便服务组件实现一个或多个服务。服务组件在其功能以及其管理和服务交互质量中反映它们所代表的服务定义。它们将服务合同 “绑定” 到操作和 IT 系统层的服务实现中。服务组件驻留在支持服务规范的容器中。服务组件层通过包装和支持松耦合实现 IT 灵活性。关注点分离就是这样,消费者假设其服务实现忠实于其出版描述(服务合规性),并且供应商保证已实现此种合规性。实现的细节对于消费者来说无关要紧。因此,供应商组织可能会决定使用一个有相同描述的组件替换另一个,而不会影响服务消费者。
■ 服务层:服务层由所有在 SOA 中定义的逻辑服务构成。该层包含在设计过程中使用/创建的服务、业务功能和 IT 表现形式的描述,以及在运行时使用的合同和描述。服务层是一个平行层,提供 SOA 中支持的业务功能,并介绍 SOA 中支持的服务的功能。
■ 业务流程层:业务流程层包含流程表示、构成方法和构建块,聚合松耦合服务使其成为一个与业务目标保持一致的有序流程。数据流和控制流用来支持服务和业务流程之间的交互。交互可能存在于一个企业中,也可能跨多个企业。SOA 参考架构中的业务流程层在连接业务水平要求和 IT 级解决方案组件中充当一个中央协调角色,通过与集成层、服务质量层、信息架构层以及服务层协作完成。
■ 消费者层:消费者层是消费者的入口,不管是人、程序、浏览器或者自动操作,以及与 SOA 相互作用都可从此切入。这使得一个 SOA 解决方案可以支持一个客户端独立的、通道不可知的功能集,通过一个或多个通道(客户端平台或设备)独立消费以及开出账单。所以说它是所有内外部交互式消费者(人类或者其他应用程序/系统)和服务(例如,B2B 场景)之间的切入点。该层提供快速创建前端业务流程和综合应用程序的功能,以响应市场变化。它使得通道能够独立访问那些应用程序和平台所支持的各种业务流程。消费者和其余底层 SOA 的解耦为组织提供支持敏捷性、增强重用以及提高质量和一致性的能力。
■ 集成层:集成层是一个横切关注点,支持和提供调节能力,包括变换、路由和协议转换,从服务发起者向正确服务提供者传输服务请求。它支持实现一个 SOA 所需的功能,比如路由、协议支持和转换、消息传递/交互风格、异构环境支持、适配器、服务交互、服务实现、服务虚拟化、服务消息传递、信息处理和转换。集成层也负责维护松耦合系统中存在的解决方案一致性。这里出现的集成主要是服务组件、服务和流程层(“功能” 层)的集成。例如,这就是流程执行的服务的绑定(否则就晚了)。这允许一个服务可以跨多个面向客户的通道长期公开。
■ 服务质量层:服务质量层也是一个横切关注点,支持 SOA 相关关注点的非功能性需求 (NFR),为在任何给定解决方案中处理它们提供一个焦点。它还提供确保 SOA 满足以下需求的方法:监测、可靠性、可用性、可管理性、事务性、可维护性、可扩展性、安全性、安全、生命周期,等等。它与传统 FCAPS(过失、配置、会计、性能、安全)范围相同,从 ITIL 到 RAS(从可靠性、可用性、适用性),保持将同种管理和监控应用到今天的商业领域,对于管理服务和 SOA 解决方案来说是非常重要的,可能需要扩展来处理面向自然的服务和许多 SOA 解决方案的跨域边界。
■ 信息架构层:信息层也是一个横切关注点,负责以统一的表示形式呈现一个组织其各方面信息,正如其 IT 服务、应用程序和系统所提供的那样,保证业务需求和流程与业务词汇(词汇表和术语)保持一致。该层包括信息架构、业务分析和业务智能、元数据因素,确保包括关于信息架构的关键因素,也可被用于作为通过数据集市和数据仓库实现业务分析和业务智能创建的基础。这包括存储在这一层的元数据内容。它也支持信息服务功能,使一个虚拟化信息数据层功能得以实现。这一层也使得 SOA 能够支持数据一致性和数据质量一致性。
■ 治理层:治理层也是一个横切关注点,确保一个组织中的服务和 SOA 解决方案遵守定义策略、指导方针和标准,这些均定义为一个应用于组织中的目标、策略和规章的功能,一个 SOA 解决方案将提供所需的业务价值。SOA 治理活动应该符合 Corporate、IT 和 Enterprise Architecture 治理准则和标准。治理层将被用来匹配和支持组织的目标 SOA 成熟度等级。