用于SOA服务转换语言保持功能一致性的方法及系统与流程

文档序号:11177047阅读:432来源:国知局
用于SOA服务转换语言保持功能一致性的方法及系统与流程

本发明涉及软件信息系统领域,特别涉及一种用于soa服务转换语言保持功能一致性的方法及系统。



背景技术:

信息系统随着业务的发展,企业从成本及语言开放性的角度,可能会考虑更换已有系统的编程语言,如从c#语言更换为java语言,对编程语言的更换,除了语言语法上的更换,开发人员多数情况下也会进行框架的升级改造,使代码质量及可读性方面得到提升,但无论多大的改动,改造的最终结果都是:新语言服务所提供的业务功能都要与旧语言服务所提供的业务功能保持一致。

soa(serviceorientedarchitecture,面向服务的架构)作为一个成熟的软件系统开发架构,在企业中有广泛的应用,soa服务进行更换编程语言有与信息系统更换语言的共性如soa服务更换编程语言后也一般采用人工比对测试来保障更换语言前后的业务服务功能一致,但也有其自身特点,如soa服务通过契约报文来交换数据,服务的语言无关性,客户端不会感知到服务的动态调整等特点,在更换语言同时维持业务的一致性方面将面临着巨大的挑战:如何快速定位服务响应的差异,大幅度减少人工测试,保障系统框架得以重构,保证新语言开发的系统较快地投入生产以及新语言服务运行的稳定性。



技术实现要素:

本发明要解决的技术问题是为了克服现有技术中需要依靠大量人工对比测试,不能很好地快速定位服务响应的差异,不能很好地保障系统框架得以重构,不能很好地保证新语言开发的soa服务快速地投入生产的缺陷,提供一种用于soa服务转换语言保持功能一致性的方法及系统。

本发明是通过下述技术方案来解决上述技术问题:

一种用于soa服务转换语言保持功能一致性的方法,包括以下步骤:

s1、旧语言soa服务、新语言soa服务同时部署在相同生产环境,所述旧语言soa服务接收客户端的服务请求报文;

s2、所述旧语言soa服务按第一预设比例将接收到的服务请求报文发送至所述新语言soa服务;

s3、在所述旧语言soa服务、所述新语言soa服务分别对同样的服务请求报文进行响应并生成相应的服务响应报文之后,记录同样的服务请求报文及相应的服务响应报文;

s4、判断步骤s3中所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文是否匹配,若否,则对所述新语言soa服务进行优化,然后返回步骤s1,若是,则执行步骤s5;

s5、将所述新语言soa服务上线,所述新语言soa服务接收并处理客户端的服务请求报文。

较佳地,所述步骤s5具体包括:将所述新语言soa服务上线后,所述新语言soa服务按第二预设比例接收并处理客户端的服务请求报文;

所述方法在步骤s5之后还包括:

s6、所述旧语言soa服务按第三预设比例将接收到的服务请求报文发送至所述新语言soa服务,所述新语言soa服务按第四预设比例将接收到的服务请求报文发送至所述旧语言soa服务;

s7、在所述旧语言soa服务、所述新语言soa服务分别对同样的服务请求报文进行响应并生成相应的服务响应报文之后,记录同样的服务请求报文及相应的服务响应报文;

s8、判断步骤s7中所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文是否一致,

若否,则对所述新语言soa服务进行优化,然后返回步骤s1,

若是,则判断所述第二预设比例是否为100%,若是,则执行步骤s9,若否,则提升所述第二预设比例,然后返回步骤s5;

s9、将所述旧语言soa服务下线。

较佳地,所述步骤s2具体包括:

s21、所述旧语言soa服务建立第一异步消息队列;

s22、所述旧语言soa服务按第一预设比例将接收到的服务请求报文放入到所述第一异步消息队列;

s23、所述旧语言soa服务将所述第一异步消息队列的服务请求报文发送至所述新语言soa服务;

所述步骤s6具体包括:

s61、所述新语言soa服务建立第二异步消息队列;

s62、所述旧语言soa服务按第三预设比例将接收到的服务请求报文放入到所述第一异步消息队列,所述新语言soa服务按第四预设比例将接收到的服务请求报文放入到所述第二异步消息队列;

s63、所述旧语言soa服务将所述第一异步消息队列的服务请求报文发送至所述新语言soa服务,所述新语言soa服务将所述第二异步消息队列的服务请求报文发送至所述旧语言soa服务。

较佳地,

所述步骤s4中,所述判断步骤s3中所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文是否匹配的步骤具体包括:判断所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文的业务逻辑是否一致;

所述步骤s8中,所述判断步骤s7中所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文是否一致的步骤具体包括:判断所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文的报文内容、报文业务逻辑是否一致。

一种用于soa服务转换语言保持功能一致性的系统,包括旧语言soa服务、新语言soa服务、记录模块、第一判断模块,

所述旧语言soa服务、所述新语言soa服务同时部署在相同生产环境,所述旧语言soa服务用于接收客户端的服务请求报文,并按第一预设比例将接收到的服务请求报文发送至所述新语言soa服务;

所述旧语言soa服务、所述新语言soa服务分别对同样的服务请求报文进行响应并生成相应的服务响应报文;

所述记录模块用于记录所述旧语言soa服务发送给所述新语言soa服务的服务请求报文,以及所述旧语言soa服务、所述新语言soa服务分别对同样的服务请求报文相应的服务响应报文;

所述第一判断模块用于判断所述记录模块中记录的同样的服务请求报文相应的服务响应报文是否匹配,当判断为否时,则对所述新语言soa服务进行优化,当判断为是时,则所述新语言soa服务上线,接收并处理客户端的服务请求报文。

较佳地,所述系统还包括第二判断模块,

所述新语言soa服务上线后按第二预设比例接收并处理客户端的服务请求报文;

所述旧语言soa服务按第三预设比例将接收到的服务请求报文发送至所述新语言soa服务,所述新语言soa服务按第四预设比例将接收到的服务请求报文发送至所述旧语言soa服务;

所述旧语言soa服务、所述新语言soa服务分别对同样的服务请求报文进行响应并生成相应的服务响应报文;

所述记录模块用于分别记录所述旧语言soa服务发送给所述新语言soa服务的服务请求报文和所述新语言soa服务发送给所述旧语言soa服务的服务请求报文,以及所述旧语言soa服务、所述新语言soa服务分别对同样的服务请求报文相应的服务响应报文;

所述第一判断模块用于判断所述记录模块中记录的同样的服务请求报文相应的服务响应报文是否一致,

当判断为否时,则对所述新语言soa服务进行优化,

当判断为是时,则调用所述第二判断模块,所述第二判断模块用于判断所述第二预设比例是否为100%,若是,则将所述旧语言soa服务下线,若否,则提升所述第二预设比例。

较佳地,

所述旧语言soa服务包括第一异步消息队列、第一后台线程,所述旧语言soa服务建立所述第一异步消息队列,

所述新语言soa服务上线前,所述旧语言soa服务按第一预设比例将接收到的服务请求报文放入所述第一异步消息队列,所述第一后台线程用于将所述第一异步消息队列的服务请求报文发送至所述新语言soa服务;

所述新语言soa服务上线后,所述旧语言soa服务按第三预设比例将接收到的服务请求报文放入所述第一异步消息队列,所述第一后台线程用于将所述第一异步消息队列的服务请求报文发送至所述新语言soa服务;

所述新语言soa服务包括第二异步消息队列、第二后台线程,所述新语言soa服务建立所述第二异步消息队列,所述新语言soa服务按第四预设比例将接收到的服务请求报文放入所述第二异步消息队列,所述第二后台线程用于将所述第二异步消息队列的服务请求报文发送至所述旧语言soa服务。

较佳地,

所述新语言soa服务上线前,所述第一判断模块用于判断所述记录模块中记录的同样的服务请求报文相应的服务响应报文的业务逻辑是否一致;

所述新语言soa服务上线后,所述第一判断模块用于判断所述记录模块中记录的同样的服务请求报文相应的服务响应报文的报文内容、报文业务逻辑是否一致。

本发明的积极进步效果在于:本发明通过定量对比分析新旧语言soa服务的响应报文来快速定位服务响应差异并根据差异情况来优化新语言soa服务,从而可大幅度减少前期的人工测试,很好地保障系统框架重构的正确性,保证新语言soa服务的开发效率并快速投入生产。另外,新旧语言的soa服务在一定时期内共同运行,通过新旧语言soa服务的相互监督对比进一步保障新语言soa服务运行的稳定性。

附图说明

图1为本发明的实施例1的用于soa服务转换语言保持功能一致性的方法的流程图。

图2为本发明的实施例2的用于soa服务转换语言保持功能一致性的方法的流程图。

图3为本发明的实施例3的用于soa服务转换语言保持功能一致性的系统的示意图。

图4为本发明的实施例4的用于soa服务转换语言保持功能一致性的系统的示意图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

实施例1

本实施例的用于soa服务转换语言保持功能一致性的方法,如图1所示,包括:

步骤101、旧语言soa服务、新语言soa服务同时部署在相同生产环境,所述旧语言soa服务接收客户端的服务请求报文;

本实施例中,鉴于客户端每天近千万次的服务请求,为确保服务准确性,在所述步骤101中新语言soa服务暂不接收和处理客户端的服务请求,仅旧语言soa服务接收并处理客户端的服务请求。

步骤102、所述旧语言soa服务按第一预设比例将接收到的服务请求报文发送至所述新语言soa服务;

本实施例在具体实施中,所述步骤102中的第一预设比例可根据后续步骤中所述新语言soa服务、所述旧语言soa服务对同样的服务请求报文的服务响应差异情况通过参数配置来进行设定,比如鉴于所述新语言soa服务刚完成开发,在早期阶段可将第一预设比例设置得低一点,如5%;而在运行监测一段时间后可将第一预设比例设置得高些,如10%、20%、50%、甚至为100%。

步骤103、在所述旧语言soa服务、所述新语言soa服务分别对同样的服务请求报文进行响应并生成相应的服务响应报文之后,记录同样的服务请求报文及相应的服务响应报文;

步骤104、判断步骤103中所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文是否匹配,若否,则对所述新语言soa服务进行优化,然后返回步骤101,若是,则执行步骤105;

本实施例在具体实施中,所述判断步骤103中所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文是否匹配的步骤具体包括:判断所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文的业务逻辑是否一致。若经判断,所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文响应生成的服务响应报文在业务逻辑上不一致,此时可通过人工查找及分析业务逻辑不一致的原因,然后根据具体原因对所述新语言soa服务进行优化,然后返回步骤101;若经判断,所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文响应生成的服务响应报文在业务逻辑上保持一致,则在经一段时间的运行监测,比如运行监测1-2个月后,若所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文响应生成的服务响应报文在业务逻辑上仍旧能保持一致,可认为所述新语言soa服务已具备上线服务要求,即可以执行步骤105。

步骤105、将所述新语言soa服务上线,所述新语言soa服务接收并处理客户端的服务请求报文。

本实施例中,经过上述步骤101-105后,通过定量对比分析所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文所响应生成的响应报文,能快速定位出服务响应的差异,并根据差异情况对所述新语言soa服务进行优化,从而可大幅度减少前期的人工测试,很好地保障系统框架重构的正确性,保证所述新语言soa服务的开发效率并快速投入生产。

实施例2

实施例2的用于soa服务转换语言保持功能一致性的方法包括实施例1中的步骤101-105,还有不同之处在于,如图2所示,

所述步骤105具体包括:将所述新语言soa服务上线后,所述新语言soa服务按第二预设比例接收并处理客户端的服务请求报文;

本实施例在具体实施中,鉴于客户端每天近千万次的服务请求,为确保服务准确性及稳定性,所述旧语言soa服务仍然接收并处理客户端的服务请求,并在所述步骤105中,在将所述新语言soa服务上线后,所述新语言soa服务按第二预设比例接收并处理客户端的服务请求报文,比如鉴于所述新语言soa服务刚上线,在早期阶段可将第二预设比例设置得低一点,如5%。

所述方法在步骤105之后还包括:

步骤106、所述旧语言soa服务按第三预设比例将接收到的服务请求报文发送至所述新语言soa服务,所述新语言soa服务按第四预设比例将接收到的服务请求报文发送至所述旧语言soa服务;

本实施例在具体实施中,所述步骤106中的第三、第四预设比例可根据后续步骤中所述新语言soa服务、所述旧语言soa服务对同样的服务请求报文的服务响应一致性情况通过参数配置来进行设定,比如鉴于所述新语言soa服务刚上线,在早期可将第三、第四预设比例设置得低一点,如5%;而在运行监测一段时间后可将第三、第四预设比例设置得高些,如10%、20%、50%、甚至为100%。

步骤107、在所述旧语言soa服务、所述新语言soa服务分别对同样的服务请求报文进行响应并生成相应的服务响应报文之后,记录同样的服务请求报文及相应的服务响应报文;

步骤108、判断步骤107中所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文是否一致,若否,则对所述新语言soa服务进行优化,然后返回步骤101,若是,则判断所述第二预设比例是否为100%,若否,则提升所述第二预设比例,然后返回步骤105,若是,则执行步骤109;

本实施例在具体实施中,所述第二预设比例可根据所述新语言soa服务、所述旧语言soa服务对同样的服务请求报文的服务响应一致性情况自动逐步调整,比如所述新语言soa服务刚上线的早期阶段可将第二预设比例设置得低一点如5%,而所述新语言soa服务、所述旧语言soa服务共同运行监测一段时间后所述新语言soa服务运行稳定,这时可将第二预设比例自动按一定比例如5%逐步提升,直到所述新语言soa服务、所述旧语言soa服务对同样的服务请求报文的服务响应完全一致,所述新语言soa服务的业务无偏差遗漏。

进一步,所述判断步骤107中所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文是否一致的步骤具体包括:判断所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文相应的服务响应报文的报文内容、报文业务逻辑是否一致。经判断,若所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文响应生成的服务响应报文在业务逻辑上一致,仅小部分报文内容如报文的头信息不一致,此时可通过人工查找及分析不一致的原因,如果该报文内容的不一致属于可忽略的不影响服务的微小的不一致情况,可将该不一致情况列入到对比规则工具中从而在今后的对比中认为该报文内容相同而排除掉,对于那些不能作为对比规则进行排除的不一致情况则需要根据不一致的原因对新语言soa服务进行优化,然后返回步骤101;若所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文响应生成的服务响应报文在报文内容、报文业务逻辑上都保持一致,则在经一段时间的运行监测,比如运行监测1-2个月后,若所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文响应生成的服务响应报文在报文内容、报文业务逻辑上仍旧能保持一致,可认为新语言soa服务已具备良好的服务稳定性,即可以执行步骤109。

步骤109、将所述旧语言soa服务下线。

本实施例中,经过上述步骤101-109后,通过定量对比分析所述旧语言soa服务、所述新语言soa服务对同样的服务请求报文所响应生成的响应报文,能快速定位出服务响应的差异,并根据差异情况对所述新语言soa服务进行优化,从而可大幅度减少前期的人工测试,很好地保障系统框架重构的正确性,保证所述新语言soa服务的开发效率并快速投入生产。另外,新旧语言的soa服务在一定时期内共同运行,通过新旧语言soa服务的相互监督对比进一步保障新语言soa服务运行的稳定性。

进一步,本实施例在具体实施中,为了不影响所述旧语言soa服务接收及处理客户端的服务请求的性能,从而将所述步骤102进一步细化,即所述步骤102具体包括:所述旧语言soa服务建立第一异步消息队列;所述旧语言soa服务按第一预设比例将接收到的服务请求报文放入到所述第一异步消息队列;所述旧语言soa服务将所述第一异步消息队列的服务请求报文发送至所述新语言soa服务。

进一步,本实施例在具体实施中,为了不影响所述旧语言soa服务、所述新语言soa服务接收及处理客户端的服务请求的性能,同样将所述步骤106进一步细化,即所述步骤106具体包括:所述新语言soa服务建立第二异步消息队列;所述旧语言soa服务按第三预设比例将接收到的服务请求报文放入到所述第一异步消息队列,所述新语言soa服务按第四预设比例将接收到的服务请求报文放入到所述第二异步消息队列;所述旧语言soa服务将所述第一异步消息队列的服务请求报文发送至所述新语言soa服务,所述新语言soa服务将所述第二异步消息队列的服务请求报文发送至所述旧语言soa服务。

实施例3

本实施例的用于soa服务转换语言保持功能一致性的系统,如图3所示,包括旧语言soa服务1、新语言soa服务2、记录模块3、第一判断模块4,

所述旧语言soa服务1、所述新语言soa服务2同时部署在相同生产环境,所述旧语言soa服务1用于接收客户端的服务请求报文,并按第一预设比例将接收到的服务请求报文发送至所述新语言soa服务2;

所述旧语言soa服务1、所述新语言soa服务2分别对同样的服务请求报文进行响应并生成相应的服务响应报文;

所述记录模块3用于记录所述旧语言soa服务1发送给所述新语言soa服务2的服务请求报文,以及所述旧语言soa服务1、所述新语言soa服务2分别对同样的服务请求报文相应的服务响应报文;

所述第一判断模块4用于判断所述记录模块3中记录的同样的服务请求报文相应的服务响应报文是否匹配,当判断为否时,则对所述新语言soa服务2进行优化,当判断为是时,则所述新语言soa服务2上线,接收并处理客户端的服务请求报文。

进一步,所述旧语言soa服务1包括第一异步消息队列11、第一后台线程12,所述旧语言soa服务1建立所述第一异步消息队列11,所述旧语言soa服务1按第一预设比例将接收到的服务请求报文放入所述第一异步消息队列11,所述第一后台线程12用于将所述第一异步消息队列11的服务请求报文发送至所述新语言soa服务2。

进一步,所述第一判断模块4用于判断所述记录模块3中记录的同样的服务请求报文相应的服务响应报文的业务逻辑是否一致。

实施例4

实施例4的用于soa服务转换语言保持功能一致性的系统与实施例3基本相同,不同之处在于,如图4所示,还包括第二判断模块5,

所述新语言soa服务2上线后按第二预设比例接收并处理客户端的服务请求报文;

所述旧语言soa服务1按第三预设比例将接收到的服务请求报文发送至所述新语言soa服务2,所述新语言soa服务2按第四预设比例将接收到的服务请求报文发送至所述旧语言soa服务1;

所述旧语言soa服务1、所述新语言soa服务2分别对同样的服务请求报文进行响应并生成相应的服务响应报文;

所述记录模块3用于分别记录所述旧语言soa服务发1送给所述新语言soa服务2的服务请求报文和所述新语言soa服务2发送给所述旧语言soa服务1的服务请求报文,以及所述旧语言soa服务1、所述新语言soa服务2分别对同样的服务请求报文相应的服务响应报文;

所述第二判断模块5用于判断所述记录模块3中记录的同样的服务请求报文相应的服务响应报文是否一致,

当判断为否时,则对所述新语言soa服务3进行优化,

当判断为是时,则调用所述第二判断模块5,所述第二判断模块5用于判断所述第二预设比例是否为100%,若是,则将所述旧语言soa服务1下线,若否,则提升所述第二预设比例。

进一步,所述旧语言soa服务1按第三预设比例将接收到的服务请求报文放入所述第一异步消息队列11,所述第一后台线程12将所述第一异步消息队列11的服务请求报文发送至所述新语言soa服务2;所述新语言soa服务2包括第二异步消息队列21、第二后台线程22,所述新语言soa服务2建立所述第二异步消息队列21,所述新语言soa服务2按第四预设比例将接收到的服务请求报文放入所述第二异步消息队列21,所述第二后台线程22用于将所述第二异步消息队列21的服务请求报文发送至所述旧语言soa服务1。

进一步,所述第一判断模块5用于判断所述记录模块3中记录的同样的服务请求报文相应的服务响应报文的报文内容、报文业务逻辑是否一致。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1