通过经验值提高速度XML解析算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
通过经验值提高速度XML解析算法

通过经验值提高速度XML解析算法   【摘 要】从XML的属性出发,设计了一套自学习的算法,利用个别报文的解析结果作为经验值,解析新接收到的报文,避免了全量解析XML的CPU消耗,可大幅提高服务响应处理效率 【关键词】XML解析 自学习 搜索策略树 doi:10.3969/j.issn.1006-1010.2017.02.014 中图分类号:TP301 文献标志码:A 文章编号:1006-1010(2017)02-0068-06 引用格式:周实奇. 通过经验值提高速度的XML解析算法[J]. 移动通信, 2017,41(2): 68-73. 1 引言 随着分布式计算和云计算架构趋势的形成和发展,越来越多的系统需要借助企业服务总线(ESB)进行服务编排、服务路由等处理,将分散的各个业务处理单元的原子服务集成起来,形成业务处理能力,统一对外开放。目前业界流行接口协议,各个处理单元交互主要以Webservices协议为主 企业服务总线并不涉及业务处理逻辑,但是作为数据交互和服务调度的枢纽,服务的编排和服务路由等相关的处理效率,对整个系统的并发量和吞吐量起决定性的作用。由于处理过程中,需要获取数据包的个别属性字段,例如客户ID、发起方标识等,按目前的通用做法,采用如下方式解析XML数据包 文献[1]、[2]、[3]、[4]的方式,通常将XML数据包整体进行解析,按照XSD定义文件对数据内容进行校验和生成对象的处理方法,通常的处理流程如图1所示: 从以上解析过程中可以得知,在整体XML报文解析的过程中,程序需要遍历整个报文,进行字符串比较操作,同时查找相关的特征关键字。找到关键字以后,需要进行属性的堆栈入栈,并进行属性约束条件检查。同时按照校验结果生成相应的对象 在ESB企业服务总线等应用?鼍爸校?并不进行数据包的业务处理,只是用于路由判断和服务编排等,往往只需要个别的属性值即可,例如只需要请求调用的服务类型和客户ID两个属性值就可以进行服务路由处理。为了获得少数几十个字节,需要遍历处理整个报文,而且处理逻辑复杂,存在提高效率和优化的空间 在这些应用场景,需要对每一个接入的消息进行服务路由和编排的处理,如果对每个消息报文都要全部遍历,将直接影响系统的整体表现情况,而经过测试,对超过2 k大小的XML协议报文包的解析需要消耗大量CPU计算资源 文献[5]提供了一种将XML放置到缓存中,加快查询的处理方式。在本文涉及的应用场景中,消息报文已经全部在内存中,需要使用其他方式加快查询 文献[6]提供了一种将XML建立索引的技术,便于针对个别报文反复多次查询,与本文需要针对多个报文快速查询的方式不同 目前通过DTD文档生成XML报文,通常采用文献[7]的方法,经过分析可得,相同的属性值的长度如果接近,则ID出现的位置和顺序相对固定,可采用经验策略的方式进行解析 在应用优化XML解析算法前,需要针对系统中的典型报文进行统计分析,分析相关报文的大小分布情况,以评估优化算法的效果,下面以某系统为例,分析其中报文大小分布情况 通过对系统中相关Webservices协议包大小进行抽样分析,可以了解到目前接口协议中,相关消息包的大小。抽样方法为选定业务繁忙时段(15:00-16:00),按照协议包的大小,分为5个级别(0-1 k]、(1 k-5 k]、(5 k-10 k]、(10 k-30 k]、(30 k以上),分别统计数量和平均大小,统计结果如表1所示 按照消息数据总体大小所占的百分比来进行绘图,相关结果如图2所示 根据以上分析结果,该系统中大量的消息大小集中在10 k左右,平均10.3 k,少量的数据包大小为30 k以上 本次优化的主要思路是在确保准确性的前提下,基于经验值进行个别属性的解析,同时具备自我学习和调整策略的能力,能适应各种不同的应用场景,适合在企业服务总线和能力开放平台建设过程中,高效进行服务编排和服务路由判断处理等场景 2 算法描述 为了提高处理效率,本算法主要基于接收到的报文解析的经验值进行解析。经验值作为解析策略,针对不同服务ID的报文分别定义相关的解析策略。解析策略采用冒泡排序的方法进行管理,实现最优的策略最先被采用。策略可以手工清空或者定期清空,以防止长期运行以后,错误的经验值导致整体解析的处理性能下降。与文献[8]不同,本算法主要关注个别的属性,而不是全量解析 2.1 整体描述 整体上来看,算法分为三大组成部分: (1)配置关注的属性值,并生成最优搜索路径的检索树 (2)按照检索树和接收到的报文,进行分析,将相关的经验值保存为策略树,多个不同大小的报文生成的不同策略树保存为策略树数组 (3)按照接收到报文解析情况

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档