马力
摘要:借鉴民用领域和美军实施SOA的成功经验,立足国产自主知识产权产品和开源产品实现。该文详细描述SOA产品评估的规范性、安全性和易管理性及Web服务架构产品的评估和测试方法。
关键词:Web 服务;SOA;评估;测试
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)27-0178-02
Abstract: Using the successful experience of SOA in the field of civil and American forces, based on the domestic independent intellectual property products and open source products. In this paper, we describe the standard, security and easy management of the SOA product evaluation, and the evaluation and test method of the Web service architecture product.
Key words: Web services; SOA; evaluation; testing
1 概述
开源项目大都专注于 SOA 的某一领域,在遵循业界规范的基础上提供前沿的技术实现方案。但开源软件往往只专注于某个技术局部,针对于解决 SOA系统中的某些特定问题。要想真正解决复杂的企业级应用,需要对多方面的组件进行组合。而开源组件间的协调性不如商业软件,往往需要第三方进行整合和加工。因此,最大的挑战是如何将这些产品集成在一起。WSO2产品均基于Cabon框架实现,采用基于同一架构的系列产品,具有易于集成、能够快速搭建的优点。
2 ESB测试方法
2.1 技术评估
Apache Synapse诞生于2005年,是一个轻量级的ESB,具备多协议连接、转换、高性能和管理功能等,特别对WS-*系列标准有良好的支持,包括WS-Addressing、WS-ReliableMessaging、WS-Security和WS-Policy。此外,它的设计充分考虑到性能和可用性,尤其适合当作Web服务中介使用。Synapse使用非阻塞的HTTP(s),因此使用该协议的Web服务性能超强,高并发的能力也很不错,Synapse被看做是最快的开源ESB。但是,Synapse没有图形界面,需要纯手工写代码,通过XML配置。
WSO2 ESB基于Apache Synapse重新包装,紧跟Apache Synapse的正式版本,提供漂亮的图形化前端管理监控界面,作为对Synapse的增强。WSO2 ESB基于Carbon框架,Carbon框架是一个模块化的、基于OSGi的服务器基础(server foundation),处理用户管理、传输、安全、日志、集群、缓存和流量控制(throttling)等通用功能。所有WSO2产品都由运行于该核心框架之上的组件集构成。可以根据需要创建混合功能的产品(例如:WSO2 Carbon + Mediation/Proxy related components = WSO2 ESB)。WSO2的文档很好,其引入的管理特性非常有价值。不足是目前的用户社区尚不十分活跃。
2.2 测试和验证
1)在测试基础环境中下载安装WSO2 ESB
下载WSO2 ESB二进制打包文件(http://wso2.com/products/enterprise-service-bus/)将打包文件解压到某个目录
2)验证WSO2 ESB对技术架构中各项技术要求的支持情况
① 协议转换
支持以下传输协议:HTTP, HTTPS, POP, IMAP, SMTP, JMS, AMQP, FIX, TCP, UDP, FTPS, SFTP, CIFS, MLLP, SMS。
還提供对本地文件系统中或S/FTP上的文件的访问,并提供压缩的支持,如ZIP、JAR、TAR和GZIP。使用管理控制台的传输管理界面可以配置、管理每个传输的接收方和发送方。
② 消息转换
WSO2 ESB支持基于XSLT 1.0/2.0的转换,可以应用到传入和传出的消息上。可以通过XPath表达式有选择地找出消息中你希望转换的部分。更精细地转换可以使用Xquery中介来执行。其支持XML、JSON、HTML、Hessian、Text、JPEG、MP4,以及各种二进制格式。
③ 消息路由
提供多种途径来实现路由。可以使用简单的基于正则或XPath表达式的过滤器,或者用一种switch风格的语句实现过滤。求值的基础可以是消息体、消息属性或URI。对WS-Addressing也有完整支持,可以将SOAP消息定向到正确的端点服务。
④ 集群
所有WSO2产品都基于Carbon框架构建,支持多个WSO2 ESB实例的集群。集群负载通过WSO2 Elastic Load Balancer进行管理。集群采用工作者-管理者模式构建。
⑤ 安全性
支持WS-Security、LDAP、Kerberos、OpenID、SAML、XACML,支持SSL隧道和SSL配置。在管理控制台Main/Manage/Web Services/List中,可以为每个SOAP服务设置安全特性。另外,直接在
⑥ 监控和日志
提供图形化的Web控制台和基于JMX的监控支持。只需登录管理控制台,激活监控统计,即可开始收集数据。
⑦ 服务管理
与WSO2 Governance Registry配合对服务的生命期和版本等进行集中化的配置管理。
⑧ 服务可扩展性
支持创建自己定制的中介,只需要简单地扩展某个可用的接口类并实现为数不多的方法。
3 服务注册产品
3.1 技术评估
WSO2的服务注册产品作为一个专门的注册中心产品,它被设计为服务和服务描述的目录。制品可以是结构化的数据,如XML相关文件,或者二进制的文档,如Word或Excel。同时支持元数据归类、标签、版本管理、用户角色定义和配置、依赖和生命周期管理等多个特性。(WSO2 Carbon + SOA Governance Related components = WSO2 Governance Registry)
3.2 测试和验证
1)在测试基础环境中下载安装WSO2 Governance Registry。
下载解压后运行
在浏览器中输入https://localhost:9443即可进入登录页面。
2)验证WSO2 Governance Registry对技术架构中各项技术要求的支持情况。
① 制品管理
支持各类元数据和信息的存储,如WSDL、XML Schema、WS-Policy等。
② 资源管理
利用Resource Browser可以以结构化的方式管理各类资源,支持多种形式的搜索。
4 BAM工具
4.1 技术评估
BAM(Business Activity Monitorning)属于反应性监控工具。目前开源的BAM工具非常少,而且缺乏灵活性,与特定的技术栈绑定,报表类型有限,仅覆盖特定的框架。如:WSO2 Business Activity Monitor可以提供相当漂亮的图表,但采用固定形式的报告,无法定制图表,且无法监控非WSO2的服务器。适用于完全使用WSO2产品的情况。
Esper属于复杂事件处理(CEP,complex event processor)工具,长于处理、分析和关联各种事件。然而,Esper仅是一个CEP工具,未提供监测或查看这些关联事件的报表环境。
因此,目前的开源社区还没有一个能够完全满足项目需要的BAM工具。本项目在采用WSO2 Business Activity Monitor的同时,利用开源组件开发了一个易于使用、灵活的BAM工具。
4.2 测试和验证
1)在测试基础环境中下载安装WSO2 Business Activity Monitor。
http://wso2.com/products/business-activity-monitor
sh
https://
2)验证WSO2 Business Activity Monitor对技术架构中各项技术要求的支持情况。
4.3 JJBEP BAM工具的开发
事件发生器可以是任何应用或程序,如一个Apache web server模块、一个CXF解释器或者ESB。只需创建一个基于JSON的事件,然后執行一个HTTP post操作即可向事件服务发送事件。我们同时也提供了一个简单的Java类用于发送事件,方法如下所示:
public void sendEvent(String server, String serviceName, String eventClass,
long timestamp, Map
POST请求如下:
POST /services/event HTTP/1.1
Content-Type: application/json
Content-Length: 139
{"event":
{"timestamp":"1310294128455",
"service":"service1",
"eventclass":"class"
"server":"server1"
"userdata1":1344,
}}
事件处理器用于分析事件、生成新的事件或修改现存事件。例如:
统计某个特定方法被调用的次数;
计算执行某个完整业务流程所需的事件;
过滤重复事件;
利用后备信息充实事件信息。
5 服务安全
Apache ODE(Orchestration DirectorEngine,编配指导引擎)是基于Java 的开源WS-BPEL(简称BPEL) 引擎, 它于2007 年7 月18 日从Apache 的孵化器中诞生成为一个顶级项目。它的主要功能就是执行使用BPEL 描述的业务流程,实现业务流程自动化,它支持长期运行和短期运行的流程。Apache ODE是JBoss下一代ESB SwitchYard的组件之一。WSO2 Business Process Server基于Apache ODE,增加了基于Web的管理界面及一些模拟功能。
JBoss jBPM和Activiti有着紧密的渊源关系。
jBPM分为jBPM3、jBPM4和jBPM5。jBPM3是一个轻量级的嵌入式工作流系统,包括了以下组件:基于Eclipse的流程设计器、用于监控案例(流程实例)和处理任务的Web控制台以及jPDL核心库。它在Java社区的成功得益于两个方面:一是嵌入式,这降低了使用工作流的门槛;二是对开发人员友好,这表现在易读的jPDL、流程的可测试性(Eclipse插件)以及节点行为的可扩展性,可以非常容易的在流程运行中加入自己定制的行为(通过事件处理器和Action)。
jBPM之父Tom Baeyens离开JBoss加入Alfresc后,开发了新的基于jBPM4的Activiti5,同样支持BPMN2标准。与jBPM4相比,Activiti5最重要的增强就是实现了流程的可视化以及创新的Activiti Cycle协作组件。Activiti Cycle完全是一种新类型的BPM组件,它是一个用来促进业务人员、开发人员和IT运营人员协作的Web应用程序,通过BusinessLink将与流程相关的业务人员、开发团队与IT维护人员关联起来,实现他们之间的协作。此外,其对PVM的保留使其继承了jBPM4强大的可扩展能力,对jBPM的老用户来说,这是向其迁移的重要理由。Activiti5其实是jBPM3/jBPM4的后续。
6 结论
立足国产自主知识产权产品和开源产品实现。本文详细描述SOA产品评估的规范性、安全性和易管理性及Web服务架构产品的评估和测试方法,解决了开源产品的评估定位问题。
参考文献:
[1] 寒丁,沈建京,万芳,张慧.基于SOA的服务构件封装技术研究[J].计算机工程与设计,2009(7).