面向服务的架构SOA
面向服务的架构SOA
摘要:面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。通俗来说就是进行业务功能划分,之后再按照相应的准则进行相互之间调用,SOA旨在将单个的应用程序彼此分开,以便这些功能可以单独用作单个的应用程序功能,从而降低代码的复杂度。SOA所使用的技术标准有WSDL、UUDI、SOAP,使用SOA可以降低用户成本,使程序间关系服务简单,识别程序问题等。本文主要介绍了SOA的简介,SOA执行标准,SOA的好处,结合项目经历自己的理解,面向服务架构的主要技术和标准以及构建SOA架构时遇到的问题和具体解决。
先来看看什么是SOA,面向服务的体系结构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。SOA的精髓是严格的松散耦合,不允许直接访问其它服务的数据,大家按照一个契约或标准(service interface)来进行交流。SOA在实现架构落地上,需要考虑到对服务的组合,不断的重用现有的服务,让企业应用可以逐步集成,快速实现业务的迭代。SOA的模型实例如下所示:
了解到什么是SOA后,来看看使用SOA的好处,使用SOA能够将系统进行业务划分,通过相互调用,降低用户成本,用户不需要关心各服务之间是什么语言的、不需要知道如果调用他们,只要通过统一标准找数据总线就可以了。使程序之间关系服务更简单:
(1) 松耦合:由于服务自治,有一定封装边界,服务调用交互是通过发布接口。这意味着应用程序不感兴趣的服务如何被实现。
(2)位置透明:服务的消费者不必关系服务位于什么地方。
(3)可在异构平台间复用。可以将遗留系统包装成服务。
(4)便于测试,能并行开发,较高可靠性和良好可伸缩性。
我在2019年寒假的时候写过一个信息化领域热词分类分析及解释的项目,此系统的用户需求是让用户可以方便快捷的看到最近的信息热词并且可以查看与之相关的文章。我在业务管理的设计中,采用了互连系统的系统架构,把本系统分为多个子系统,包括热词采集清洗子系统,热词解释及引用文章子系统,可视化显示子系统。这些从属系统均采用面向服务的架构,通过良好定义的接口和标准协议将这些系统关联起来,从而可以进行独立的开发,可以提高编程效率,缩短开发周期。
在项目中,我整体运用的是mvc的开发架构,mvc把数据模型和视图进行分离,也把视图和表现逻辑进行了分离,降低了耦合性,使代码的重用度高,易于维护,方便更改。在数据采集子系统我通过python爬虫爬取相关的热词信息到数据库中,并运用去重,标准化生成可用数据,这一模块已生成标准化服务,即可以直接调用此服务获取到相关日期的可用的热词相关信息。在热词引用子系统,通过调用之前的热词采集清洗子系统,得到热词信息,再根据这些信息去爬取到相关的热词引用的文章存入到数据库中,再把这一模块生成标准化服务,那么我们系统所需的数据部分就得到了。在可视化显示中,通过调用之前两个标准化服务,得到热词的全部信息,再根据所需进行可视化展示即可。
SOA技术参考架构主要描述SOA基础技术平台与辅助工具,同时描述这两部分与其他外围相关元素之间的关系。SOA技术参考架构将服务分为6类,具体描述如下:
1.连接服务
连接服务又称连通服务,是面向服务架构的骨干,在完成服务的接入,服务间的通信和交互基础上,还提供安全性、可靠性、高性能的服务能力保障。连接服务的一个典型实现就是企业服务总线(Enterprise Service Bus,ESB)。
2.协作服务
协作服务通常由通信代理和Web服务代理两部分组成。通信代理与连通服务中的通信代理实现内部有效的数据通信,Web服务代理与外部的公共注册中心交互,注册本平台对外开放的Web服务以及查找所需要访问的外部'Web服务。协作服务既可以实现组织之间(如供应链的合作伙伴之间)的交互通信,也可以实现组织内部(如跨地域的分支机构之间,并有防火墙进行保护的情况)之间的交互通信。
3.业务服务
业各服各指为新建服各提供的特宗法行支持环培。新建服务包括单个服务以及合成服务,不包括流程化的服务。合成服务--般由应用编码实现,它可以调用其他的服务(包括:单个服务、合成服务和流程化的服务)。业务服务与连通服务相联接,其中的新建服务与其他服务的通信和交互通过连通服务来实现。业务服务的运行信息由运行管理服务保存,业务服务也接受并执行运行管理服务的管理和控
制命令。
4.业务流程服务
流程服务是业务流程的运行环境,提供流程驱动、服务调用、事务管理等功能。流程服务是为业务流程的运行提供的一组标准服务。业务流程是一组服务的集合,可以按照特定的顺序并使用一组特定的规则进行调用。业务流程可以由不同粒度的服务组成,其本身也可视为服务。.
5.交互服务
交互服务实现人与服务之间的交互功能。人可以是服务的消费者,也可以是服务的提供者。人不能直接消费服务,也不能直接提供服务,需要通过相应的程序实现代理操作(即人通过操作程序实现与服务的交互)。交互服务就是需要提供一组完整的功能,以实现人与服务的交互,并能够方便地进行交互。人员需要请求服务时,向连通服务发送消息请求,由连通服务查找服务,并将请求消息传递给服务提供者。
6.信息服务
信息服务特指为上层应用系统、同层的其他服务等提供数据访问及资源访问服务。其目标是使应用系统能够统一、透明、高效地访问和操纵位于网络环境中的各种分布、异构的数据资源,为实现全局数据访问、加快应用开发、增强网络应用和方便系统管理提供支持。
我们知道面向服务的体系结构是当前及未来应用程序系统开发的重点,面向服务的体系结构本质上来说是一种具有特殊性质的体系结构,它由具有互操作性和位置透明的组件集成构建并互连而成。所以在构建SOA架构时应尤其注意其互操作性,我在构建完成之后,在应用时,也需要专门写一个调用类,基于本身的需求进行略微的调整,也就是一个标准化的过程。所以在设计整个系统时,如果需要调用SOA架构,须先考虑现有系统的集成需求如:应用程序集成的需求,终端用户界面集成的需求,流程集成的需求以及已有系统信息集成的需求。能最终合理的用上SOA架构,就会有更易于维护,当需求变化的时候不需要求改服务的接口,只需要调整调用操作或着业务流程即可。也会有更好的可用性和伸缩性。