面向服务的架构及其应用

面向服务的架构及其应用

 

摘 要:面向服务的架构(Service-Oriented Architecture,SOA)是一种组件模型,把应用程序中的不同功能单元(即服务)通过这些服务之间定义良好的接口和契约联系起来,使得这些系统中的服务能够以-种统一和通用的方式进行交互。本文主要从参与的项目中,来阐述SOA基础技术平台与辅助工具,以及其他外围相关元素之间的关系。

 

1  项目介绍

“拓扑结构根因定位可视化”系统,本系统主要为公有云用户,有着多个服务器节点的复杂系统服务,旨在准确定位根因所在以及可视化展示。

本系统又含有:后台算法研究处理模块,电子大屏整体展示模块,特定文件夹监控模块,监控生成日志模块,拓扑结构实时性展示动态展示模块,特定csv根因日志关系图展示模块以及以及用户处理根因数据模块。

本系统主要采用的技术有:决策树,RNN,CNN算法研究,线程关联,监控技术,echart,qunee可视化技术等等。

承担的主要工作:前期算法处理,数据处理,后期可视化展示,监控文件夹,监控日志生成,拓扑结构实时更新展示,系统逻辑架构等工作。

2  SOA的技术以及标准

SOA相关标准:WSDL、UUDI、SOAP

2.1 SOAP:简单对象访问协议(Simple Object Access Protocol)

简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。

四个部分:

    封装

        它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。

       编码规则

         它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。

       RPC表示

         它定义了用于表示远程过程调用和应答的协定。

       绑定

        定义了一种使用底层传输协议来完成在节点间交换SOAP封装的约定。

SOAP消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求 / 应答的模式。所有的 SOAP消息都使用 XML 编码。一条 SOAP消息就是一个包含有一个必需的 SOAP 的封装包,一个可选的 SOAP 标头和一个必需的 SOAP 体块的 XML 文档。把 SOAP 绑定到 HTTP 提供了同时利用 SOAP 的样式和分散的灵活性的特点以及 HTTP 的丰富的特征库的优点。在HTTP上传送 SOAP 并不是说 SOAP 会覆盖现有的 HTTP 语义,而是 HTTP 上的 SOAP 语义会自然的映射到 HTTP 语义。在使用 HTTP 作为协议绑定的场合中, RPC 请求映射到 HTTP 请求上,而 RPC 应答映射到 HTTP 应答。然而,在 RPC 上使用 SOAP 并不仅限于 HTTP 协议绑定。SOAP也可以绑定到TCP和UDP协议上。

2.2 WSDL:web服务描述语言(Web Services Description Language)

WSDL 指网络服务描述语言 (Web Services Description Language)。

WSDL 是一种使用 XML 编写的文档。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。

2.2 UUDI:统一描述、发现和集成(Universal Description Discovery and Integration)

UDDI计划是一个广泛的,开放的行业计划,它使得商业实体能够 (1) 彼此发现,(2) 定义他们怎样在internet上互相作用,并在一个全球的注册体系架构中共享信息。UDDI是这样一种基础的系统构筑模块,他使商业实体能够快速,方便地使用他们自身的企业应用软件来发现合适的商业对等实体,并与其实施电子化的商业贸易。

UDDI同时也是Web服务集成的一个体系框架。它包含了服务描述与发现的标准规范。UDDI规范利用了W3C和Internet工程任务组织(IETF)的很多标准作为其实现基础,比如扩展标注语言(XML),HTTP和域名服务(DNS)这些协议。另外,在跨平台的设计特性中,UDDI主要采用了已经被提议给W3C的SOAP(Simple Object Access Protocol,简单对象访问协议)规范的早期版本。

3  项目实施及困难

“基于拓扑结构根音定位可视化系统”,虽然看似只是一个简单的算法设计以及可视化过程,但是里面有着许多的业务逻辑模块,我们在设计系统中,将这些模块都化为一个个服务。

将python处理数据端作为算法根因定位服务提供方,通过服务链接,将web项目与python算法处理联系起来。同时另有java监控端,提供监控服务,通过简单的函数调用,实现日志的生成以及实时性的保证。

同时在实时监控模块中,也用到了协作服务,通过servlet的函数调用,将python服务提供端和web刷新的端口进行服务之间的协作,进而实现组织之间的监护通信,同时也实现了组织内部(防火墙进行的保护情况)之间的交互通信,

在业务流程服务环节,由于需要提供流程驱动、服务调用、事务管理等功能。需要实现设计好逻辑,我们在逻辑设置中存在一定的偏差和困难,主要在于实时性的展示环节:定时与监控之间融洽统一一直是个问题,对此,我们采取了服务的思想,将后端数据与前端展示,彻底分开,也就是说,前端页面是定时更新,但是后端数据是监控更新,那么就能实现,在前端满足实时性的基础上,完成日志生成的稳定性,同时减弱用户端的计算压力,逻辑上面也更加简便。

参考资料:https://www.cnblogs.com/smartisn/

原文地址:https://www.cnblogs.com/ljm-zsy/p/13094448.html