技术开发 频道

用XML、XQuery和XML数据库技术加速SOA

    比方说,汽车零售商的零件目录响应中包含一个Time-To-Live(TTL)元素。TTL元素定义了响应有效的秒数。比如GM可能将其设为60秒。在这60秒内,FastSOA用中间层存储的目录响应缓存响应目录请求。这样服务就减少了带宽的使用,并缩短了请求响应时间。
   
    下表说明了如何计算网络中的服务提速效果,这些服务位于本地网络之外的服务器上,FastSOA数据缓冲收集服务在本地网络中。


表1.计算服务加速效果

    动作 无缓冲2 启用缓冲2
   
    第一次请求处理的时间 17651 22181
   
    在缓冲中存储请求的时间 01 4531
   
    后续相同或冗余请求 17651 3201
   
    使用的Internet带宽 30,400K字节304K位
   
    使用的总时间 2941分钟 533分钟
   
    1这里所有的时间都是毫秒,1秒=1,000毫秒。
   
    2假设:
   
    ·消费者和缓冲服务使用100M以太网连接和1.5M左右的DSL连接。
   
    ·TimetoLive(TTL)为60秒。
   
    ·请求/响应包含38,000个字节。
   
    ·TTL期间有100,000次请求。
   
    在FastSOA实现中,用XQuery实现零部件订购服务。XQuery请求目录服务,读取响应的内容,在运行时确定是否可以使用以前存储的响应而不必再次请求目录服务。
   
    这样就在服务环境中实现了FastSOA数据缓冲收集体系结构。XQuery和本机XML数据库提供了重用以前缓冲响应数据的服务,只要请求与以前的请求匹配并且数据仍然不过时。结果是服务提速了。
   
    FastSOA技术选择
    
    可以使用Java代码和关系数据库技术实现FastSOA体系结构。但是,在测试使用Java对象创建的服务绑定和使用关系数据库持久XML时,我发现了重要的性能和可伸缩性问题。这些问题很突出,考虑使用XQuery、XSLT和本机XML数据库技术很有必要。
   
    我对XQuery感兴趣,是因为它是作为应用程序开发的本机XML环境来实现的。与早期的Java技术非常相似,XQuery社区充满了扩张和证明XQuery是一种开发平台的活力。实际上,多数XQuery实现都经过扩展超出了XQuery标准,以便XQuery能够进行SOAP请求。比如,XQuery可以查询其他服务、J2EE对象和通过JDBC、SOAP、JMS协议查询数据源。此外,已经有10种或更多非常可靠的商业化和开放源码XQuery实现。
   
    最后,FastSOA使用本机XML数据库作为中间层缓冲,因为SOA数据通常采用XML编码格式,而关系数据库在持久存储和索引XML这样的层次性非结构化数据方面有很大不足。存储XML数据的关系数据库通常使用大型二进制对象(BLOB)字段类型存储XML。不仅效率低,而且很难建立索引以便快速搜索。对于流数据采用关系方法通常也不是非常好的办法。如果在基于Web服务的网络中发送XML消息,最好用基于流的方法处理该消息,而关系数据库对此无能为力。
   
    FastSOA的未来
   
    除了本文所述的SOAP绑定性能改进之外,采用中间层服务缓冲还会为企业带来很多好处。其他好处包括中间层模式转换、服务版本化、策略选路和服务质量(QOS)处理。比如,FastSOA提供了中间层XML消息模式转换,以便保证需要不同和不兼容的消息类型的服务之间的兼容性。
   
    结束语
   
    本文考察了如何提升SOA的性能和可伸缩性,详细介绍了在中间层使用XQuery支持结合XML持久的SOA设计所带来的好处。FastSOA设计结合使用了本机XML持久性和XQuery,因此每次收到服务调用时,中间层都要决定是使用以前请求的缓冲值响应,还是传递请求。服务使用XQuery根据对服务请求元数据查询的结果描述判定缓冲是否有效。

0
相关文章