软件测试之用XML、XQuery和XML数据库技术加速SOA (2)SOA 架构
关键字:XML、XQuery和XML SOA 加快 SOA 失去的机会
除了 SOAP 绑定代理速度慢的问题,SOA 设计还常常忽略或者忽视另外两个问题。
首先,SOA 设计常常忽视了用中间层服务缓冲来提高 SOA 性能的可能性。比如多数 SOA 设计中的 XML 模式都定义了了响应的 time-to-live 值。在这种情况下,缓冲服务响应并在服务再次收到同样的请求时重新使用缓冲的响应是一种提高 SOA 服务性能的合理而适当的方法。
其次,在 SOA 性能测试中,我尝试了各种不同的 XML 消息解析方法,其中包括 Streaming API for XML (StAX)、XML 绑定编译器、Java Architecture for XML Binding (JAXB) 和 Document Object Model (DOM) 技术。一些技术的性能要优于另一些。比如,很多 StAX 解析器能够提供比 DOM 解析器快 2 到 10 倍的性能。
我怀疑如果使用其他东西而不是 Java 对象来提供 SOAP 绑定是否能够改进性能。比如,如果收到的 SOAP 请求在本机 XML 环境中处理,那么基于 Java 的 SOAP 绑定就不再是必需的了,同时还可以避免因为序列化成 Java 对象而导致的性能降低。
此外,一些本机 XML 环境使用 Java Virtual Machine 环境,但会避免构造 Java 对象。比如,Raining Data 的 TigerLogic XDMS 和 Kawa/Qexo 通过将 XQuery 查询直接转换成 Java 字节码来实现 XML 处理代码。这样做是因为与使用 Java 对象相比,使用 XQuery 字节码实现的 XML 处理代码的吞吐量更大,代码更短。
FastSOA 解决方案
FastSOA 是解决这些问题的一种体系结构和软件编码实践:
FastSOA 通过减少 Java 对象的需要,更多使用本机 XML 环境提供 SOAP 绑定来解决 SOAP 绑定(代理)性能问题。
FastSOA 引入了中间层服务缓冲来加快 SOA 服务。
FastSOA 使用本机 XML 持久性来避免 XML 到关系数据库的转换造成的性能问题。
下图显示了 FastSOA 体系结构。
图 4. FastSOA 体系结构
FastSOA 体系结构与现有的基于 Web 的基础结构结合在一起,作为中间层缓冲部署来接收服务消费者的请求。比如,一个消费者向服务发出 SOAP 请求。中间层缓冲提供 SOAP 绑定(代理)。绑定调用 XQuery 在 XQuery 引擎处理 XML 请求文档。XQuery 检查缓冲,查看以前是否收到该请求;在这种情况下,FastSOA 服务可以从缓冲中返回响应,不需要逆流而上再请求服务。该过程通过缓冲加快 SOA 执行从而实现了 SOA 提速。
FastSOA 方法的优点包括:
服务端点是标准的。对于应用程序的其他部分而言,FastSOA 中间层缓冲就像是一种服务。
不需要修改现有的系统或代码。FastSOA 中间层缓冲作为一种数据聚合和迁移服务嵌入到已有的数据中心。
如果上游服务暂时不能用,当服务离线的时候,FastSOA 方法提供了一种浏览缓冲数据的机制。
通过缓冲服务的请求降低了为支持消费者和服务之间的通信通常所需的带宽要求。
为了从实践的角度理解 FastSOA,考虑下面的应用程序。
XML 的例子
General Motors 采用 SOA 模式创建服务,让汽车代理商使用基于 ebXML 的模式和协议从生产厂家订购零部件。该服务能够识别 Software Technology in Automotive Retailing (STAR) 组织的一种 XML 模式。STAR 是大型汽车厂商共同努力的结果,其中包括 GM。STAR 创建并维护 Business Object Document (BOD) 模式,定义了目录检查请求(以及其他许多东西)。
文章来源于领测软件测试网 https://www.ltesting.net/