CN106484379B - 一种应用的处理方法及装置 - Google Patents

一种应用的处理方法及装置 Download PDF

Info

Publication number
CN106484379B
CN106484379B CN201510542714.XA CN201510542714A CN106484379B CN 106484379 B CN106484379 B CN 106484379B CN 201510542714 A CN201510542714 A CN 201510542714A CN 106484379 B CN106484379 B CN 106484379B
Authority
CN
China
Prior art keywords
application
code
data
data sharing
source
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510542714.XA
Other languages
English (en)
Other versions
CN106484379A (zh
Inventor
辛华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510542714.XA priority Critical patent/CN106484379B/zh
Publication of CN106484379A publication Critical patent/CN106484379A/zh
Application granted granted Critical
Publication of CN106484379B publication Critical patent/CN106484379B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种应用的处理方法及装置,在应用从第一服务器向第二服务器迁移的过程中,在应用的源代码中确认用于实现数据共享功能的代码段,并使用目标关键字替换用于实现数据共享功能的代码段中的源关键字,源关键字从指示数据共享方式与源关键字间的对应关系的数据模型中查询,源关键字用于应用在迁移之前实现数据共享功能的过程中,调用第一服务器中的非分布式缓冲存储器,目标关键字用于在应用迁移之后,在源代码被编译运行以实现数据共享功能的过程中,调用与第二服务器连接的分布式缓冲存储器,所以,通过对应用的源代码的转换,可实现此应用与分布式缓存之间的对接,使得应用调用分布式缓存实现数据共享功能。

Description

一种应用的处理方法及装置
技术领域
本申请涉及计算机领域,尤其涉及一种应用的处理方法及装置。
背景技术
目前,将应用从大型机迁移到开放式平台的市场价值巨大,所以,大型机的迁移方案越来越受重视。
对于开放式平台而言,设置分布式缓存能够将应用间的数据共享方式改变为集群共享方式,从而提高平台上的各种应用间的数据共享功能的实现的效率。
因此,如何实现迁移到开放式平台的应用与分布式缓存之间的对接,成为目前亟待解决的问题。
发明内容
本申请提供了一种应用的处理方法及装置,目的在于解决如何实现从第一服务器迁移第二服务器的应用与分布式缓存之间的对接的问题。
为了实现上述目的,本申请提供了以下技术方案:
本申请的第一方面提供了一种应用的处理方法,应用于应用从第一服务器向第二服务器迁移的过程中,包括:
在所述应用的源代码中确认用于实现数据共享功能的代码段;
使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字,所述源关键字依据所述应用的数据共享方式从预设的数据模型中查询得到,所述预设的数据模型用于指示数据共享方式与源关键字间的对应关系,所述源关键字用于所述应用在迁移之前实现数据共享功能的过程中,调用所述第一服务器中的非分布式缓冲存储器,所述目标关键字用于在所述应用迁移之后,在所述源代码被编译运行以实现数据共享功能的过程中,调用与所述第二服务器连接的分布式缓冲存储器。
基于第一方面,在本申请的第一方面的第一种实现方式中,确定所述用于实现数据共享功能的代码段中的源关键字的过程具体包括:
确定所述应用的数据共享方式;
从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型集合中的任意一个数据模型包括类型元数据及关键字列表;
从所述目标数据模型中获取关键字列表;
将包含在所述待转换的代码段中的所述关键字列表中的关键字作为所述源关键字。
基于本申请的第一方面的第一种实现方式,在本申请的第一方面的第二种实现方式中,所述预设的数据模型中的任意一个数据模型还包括:
用于指示源关键字替换为目标关键字的替换规则;
所述使用目标关键字替换所述待转换的代码段中的源关键字包括:
使用所述目标数据模型中的替换规则,将所述源关键字替换为所述目标关键字。
基于本申请的第一方面的第一种实现方式和第二种实现方式,在本申请的第一方面的第三种实现方式中,所述确定所述应用的数据共享方式包括:确定所述应用的数据共享方式为临时存储队列TSQ;
则所述关键字列表包括以下关键字:
READQ:动作类型;
QUEUE:队列名称;
QNAME:队列名称,与QUEUE二选一;
INTO:指定接收的数据区;
SET:指明接收数据的指针,与INTO二选一;
LENGTH:接收数据区的长度;
NUMITEMS:用来返回QUEUE里的纪录的数量;
ITEM:指明读第几条纪录;
NEXT:指明读队列的下一条纪录,与ITEM二选一;
RESP:错误码;
RESP2:错误码详细说明;
SYSID:指明队列所在远程客户信息控制系统的名字。
基于本申请的第一方面的第一种实现方式和第二种实现方式,在本申请的第一方面的第四种实现方式中,所述确定所述应用的数据共享方式包括:确定所述应用的数据共享方式为数据库缓存;
则所述关键字列表包括以下关键字:
SELECT:动作类型,需要查询的字段;
FROM:从哪些表取记录;
INTO:需要赋值的字段;
WHERE:查询的条件;
AND:与条件。
基于第一方面,在本申请的第一方面的第五种实现方式中,在所述应用的源代码中确认用于实现数据共享功能的代码段包括:
在所述应用的数据共享方式为TSQ的情况下,将TSQ的开始标记出现的代码行作为代码起始行,并将TSQ的结束标记出现的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为所述用于实现数据共享功能的代码段;
在所述应用的数据共享方式为数据库数据缓存的情况下,将用户标记的起始位置所在的代码行作为代码起始行,并将用户标记的结束位置所在的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为所述用于实现数据共享功能的代码段。
基于第一方面、第一方面的第一种、第二种、第三种、第四种及第五种实现方式,在本申请的第一方面的第六种实现方式中,在所述使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字之后,还包括:
编译所述应用的源代码,生成迁移后的应用;
依据第一指令,运行所述迁移后的应用,其中,在所述应用运行的过程中产生的数据被写入所述分布式缓存中;
被写入所述分布式缓存中的数据,用于被与分所述布式缓存连接的第三服务器中运行的应用读取。
基于第一方面、第一方面的第一种、第二种、第三种、第四种及第五种实现方式,在本申请的第一方面的第七种实现方式中,在所述使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字之后,还包括:
编译所述应用的源代码,生成迁移后的应用;
依据第二指令,运行所述迁移后的应用,读取所述分布式缓存中的数据,其中,所述分布式缓存中的数据由与分所述布式缓存连接的第三服务器中运行的应用写入。
本申请的第二方面提供了一种应用的处理装置,包括:
代码段确认模块,用于在应用从第一服务器向第二服务器迁移的过程中,在所述应用的源代码中确认用于实现数据共享功能的代码段;
替换模块,用于使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字,所述源关键字依据所述应用的数据共享方式从预设的数据模型中查询得到,所述预设的数据模型用于指示数据共享方式与源关键字间的对应关系,所述目标关键字用于所述应用在迁移之前实现数据共享功能的过程中,调用所述第一服务器中的非分布式缓冲存储器,所述目标关键字用于在所述应用迁移之后,在所述源代码被编译运行以实现数据共享功能的过程中,调用与所述第二服务器连接的分布式缓冲存储器。
基于第二方面,在本申请的第二方面的第一种实现方式中,还包括:
关键字确认模块,用于确定所述应用的数据共享方式;从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型集合中的任意一个数据模型包括类型元数据及关键字列表;从所述目标数据模型中获取关键字列表;将包含在所述待转换的代码段中的所述关键字列表中的关键字作为所述源关键字。
基于本申请的第二方面的第一种实现方式,在本申请的第二方面的第二种实现方式中,所述关键字确认模块用于从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型集合中的类型元数据为所述应用的数据共享方式,所述预设的数据模型中的任意一个数据模型包括类型元数据及关键字列表包括:
所述关键字确认模块具体用于,从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型集合中的任意一个数据模型包括类型元数据及关键字列表,以及用于指示源关键字替换为目标关键字的替换规则;
所述替换模块用于使用目标关键字替换所述待转换的代码段中的源关键字包括:
使用所述目标数据模型中的替换规则,将所述源关键字替换为所述目标关键字。
基于本申请的第二方面的第一种实现方式和第二种实现方式,在本申请的第二方面的第三种实现方式中,所述关键字确认模块用于确定所述应用的数据共享方式;从所述预设的数据模型中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型中的任意一个数据模型包括类型元数据及关键字列表包括:
所述关键字确认模块具体用于,确定所述应用的数据共享方式为TSQ;从所述预设的数据模型中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型中的任意一个数据模型包括类型元数据及关键字列表,所述关键字列表包括以下关键字:
READQ:动作类型;
QUEUE:队列名称;
QNAME:队列名称,与QUEUE二选一;
INTO:指定接收的数据区;
SET:指明接收数据的指针,与INTO二选一;
LENGTH:接收数据区的长度;
NUMITEMS:用来返回QUEUE里的纪录的数量;
ITEM:指明读第几条纪录;
NEXT:指明读队列的下一条纪录,与ITEM二选一;
RESP:错误码;
RESP2:错误码详细说明;
SYSID:指明队列所在远程客户信息控制系统的名字。
基于本申请的第二方面的第一种实现方式和第二种实现方式,在本申请的第二方面的第四种实现方式中,所述关键字确认模块用于确定所述应用的数据共享方式;从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型集合中的任意一个数据模型包括类型元数据及关键字列表包括:
所述关键字确认模块具体用于,确定所述应用的数据共享方式为数据库缓存;从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型集合中的任意一个数据模型包括类型元数据及关键字列表,所述关键字列表包括以下关键字:
SELECT:动作类型,需要查询的字段;
FROM:从哪些表取记录;
INTO:需要赋值的字段;
WHERE:查询的条件;
AND:与条件。
基于第二方面,在本申请的第二方面的第五种实现方式中,所述代码段确认模块用于在所述应用的源代码中确认用于实现数据共享功能的代码段包括:
所述代码段确认模块具体用于,在所述应用的数据共享方式为TSQ的情况下,将TSQ的开始标记出现的代码行作为代码起始行,并将TSQ的结束标记出现的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为所述用于实现数据共享功能的代码段;在所述应用的数据共享方式为数据库数据缓存的情况下,将用户标记的起始位置所在的代码行作为代码起始行,并将用户标记的结束位置所在的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为所述用于实现数据共享功能的代码段。
基于第二方面、第二方面的第一种、第二种、第三种、第四种及第五种实现方式,在本申请的第二方面的第六种实现方式中,还包括:
编译模块,用于在所述替换模块使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字之后,编译所述应用的源代码,生成迁移后的应用;
第一运行控制模块,用于依据第一指令,运行所述迁移后的应用,其中,在所述应用运行的过程中产生的数据被写入所述分布式缓存中,被写入所述分布式缓存中的数据,用于被与分所述布式缓存连接的第三服务器中运行的应用读取。
基于第二方面、第二方面的第一种、第二种、第三种、第四种及第五种实现方式,在本申请的第二方面的第七种实现方式中,还包括:
编译模块,用于在所述替换模块使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字之后,编译所述应用的源代码,生成迁移后的应用;
第二运行控制模块,用于依据第二指令,运行所述迁移后的应用,读取所述分布式缓存中的数据,其中,所述分布式缓存中的数据由与分所述布式缓存连接的第三服务器中运行的应用写入。
本申请所述的应用的处理方法及装置,在应用从第一服务器向第二服务器迁移的过程中,在应用的源代码中确认用于实现数据共享功能的代码段,并使用目标关键字替换用于实现数据共享功能的代码段中的源关键字,其中,源关键字从预设的指示数据共享方式与源关键字间的对应关系的数据模型中查询,源关键字用于所述应用在迁移之前实现数据共享功能的过程中,调用所述第一服务器中的非分布式缓冲存储器,目标关键字用于在所述应用迁移之后,在所述源代码被编译运行以实现数据共享功能的过程中,调用与所述第二服务器连接的分布式缓冲存储器,所以,使用本申请所述的方法及装置,通过对应用的源代码的转换,可以实现此应用与分布式缓存之间的对接,从而使得应用调用分布式缓存实现数据共享功能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种分布式缓存的架构图;
图2为本申请实施例公开的一种应用的处理方法的流程图;
图3为一种应用间数据共享方式的示意图;
图4为本申请实施例公开的又一种应用的处理方法的流程图;
图5为本申请实施例公开的使用对接装置实现应用与分布式缓存的通信的架构示意图;
图6为一种应用间数据共享方式的示意图;
图7本申请实施例公开的又一种应用的处理方法的流程图;
图8本申请实施例公开的一种应用的处理装置的结构示意图。
具体实施方式
本申请实施例公开了一种应用的处理方法及装置,可以应用在应用从第一服务器(例如大型机)向第二服务器的迁移过程中,其中,所述第二服务器可以采用X86架构,并且第二服务器预先与分布式缓冲存储器(简称分布式缓存)相连接。
具体地,所述分布式缓冲存储器以集群的方式提供高性能、高可靠性的分布式对象缓存能力,加速数据读访问、减少对数据库的依赖。分布式缓冲存储器常用的方式是提供键值(KEY VALUE,KV)数据存储接口将数据存储到各节点的内存中,提供缓存的新增、查询、修改、删除等应用程序编程接口(Application Programming Interface,API)。主流的分布式缓存有Memcached、Redis以及distributed cache Systyem(DCS)。图1为一种分布式缓存与服务器连接的架构图,其中,应用服务器为应用运行的服务器,本申请以下的实施例中,第二服务器和第三服务器均为应用服务器,缓存服务器为分布式缓存集群中用于实现缓存功能的服务器,各个应用服务器中设置有缓存客户端,用于将此应用服务器中的数据写入缓存服务器中,各个缓存服务器中的数据可以相互复制。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开的一种应用的处理方法,如图2所示,包括:
S201:在应用的源代码中确认用于实现数据共享功能的代码段;
S202:使用目标关键字替换用于实现数据共享功能的代码段中的源关键字。
本实施例中,源关键字的功能为:在应用迁移之前实现数据共享功能的过程中,调用第一服务器中的非分布式缓冲存储器,也就是说,源关键字为用于实现数据共享功能的代码段中,用于调用第一服务器中的非分布式缓冲存储器的函数、字段或参数。
具体地,源关键字依据所述应用的数据共享方式从预设的数据模型中查询得到,预设的数据模型用于指示应用的数据共享方式与源关键字间的对应关系。
本实施例中,目标关键字用于在所述应用迁移之后,在所述源代码被编译运行以实现数据共享功能的过程中,调用与所述第二服务器连接的分布式缓存。
需要说明的是,除了第二服务器,分布式缓存还可以与其它服务器(例如第三服务器)相连,使用本实施例中所述的方法,则应用在被迁移到第三服务器中的过程中,同样可以通过修改其源代码的方式,实现第三服务器中的应用在数据共享的过程中调用此分布式缓存的目的,在此情况下,第一服务器在使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字之后,还可以编译应用的源代码,并依据第一指令,运行所述应用,因为使用本实施例所述的方法对源代码进行了修改,所以,在所述应用运行的过程中产生的数据被写入所述分布式缓存中,第三服务器中的应用可以从分布式缓存中读取被第二服务器中的应用写入的数据,以实现所述第二服务器中的应用与所述第三服务器中的应用间的数据共享。
或者,第一服务器在使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字之后,还可以编译应用的源代码,并依据第二指令,运行所述应用,因为使用本实施例所述的方法对源代码进行了修改,所以,在所述应用运行的过程中,所述应用从所述分布式缓存中读取由第三服务器中的应用写入的数据,以实现所述第二服务器中的应用与所述第三服务器中的应用间的数据共享。
换句话说,应用被迁入到第三服务器的过程,和应用被迁入到第二服务器的过程完全相同。为了节约篇幅,本发明实施例仅详细描述应用被迁入第二服务器的过程。第二服务器和第三服务器都和分布式缓存连接,共享分布式缓存提供的存储空间。
第二服务器和第三服务器,可以对分布式缓存中的同一数据进行增加(写入数据)、删除、查找或修改,实现了不同服务器的应用对同一个数据的共享。第二服务器中,进行数据共享操作的是第二服务器中的的迁入后应用。第三服务武器中,第二服务器中,进行数据共享操作的是第三服务器中的的迁入后应用,也可以是其他应用。第二服务器和第三服务器中的迁移后应用,均由第一服务器中的应用基于同样的迁移方法生成。
例如,迁入第二服务器的应用运行时,写入分布式缓存的数据可以被迁入第三服务器的应用读取。同样的,第二服务器运行迁入第三服务器的应用时,写入分布式缓存的数据可以被迁入第二服务器的应用读取。
可见,本实施例中所述方法,将应用的源代码中的源关键字替换为目标关键字,也就是将可调用分布式缓存的函数、字段或者参数封装进应用的源代码中,因此,在应用运行的过程中,可以实现与分布式缓存的通信,从而使用分布式缓存实现数据共享,以获得更高的数据读写效率。
进一步地,本实施例中,可以使用现有的Rehosting方式将应用迁移到第二服务器中,此种迁移方式的宗旨为不改或少修改应用的源代码,因此,工作量小,迁移效率高,在此种迁移方式中引入本实施例所述的方法,使得迁移后的应用可以使用分布式缓存进行数据的读写,从而实现不同应用间的数据集群共享,以解决Rehosting方式无法实现集群共享的问题。
下面将结合不同的数据共享场景,对图2所示的实施例进行详细说明。
本申请实施例公开的又一种应用的处理方法,应用在以临时存储队列(TemporaryStorage Queue,TSQ)为数据共享方式的应用的迁移过程中。
交易信息的共享为一种典型的TSQ数据共享方式,如图3所示,三个节点中的多只联机交易(例如A交易)的初始化数据是一样的,初始化一次后续的交易直接读内存里的数据,为了数据的一致性,图3所示的三个节点读到的内存里的数据都要是一样的。TSQ数据共享方式是把共享的数据放到TSQ队列里(以Enterprise Server中间件举例),这种方式只能实现单节点内的数据共享,而无法实现多节点间的数据同步,如果要同步多个节点以保证多节点间的数据同步,则需要设置应用实现这部分功能,而设置应用的过程非常繁琐。
如图4所示,本实施例中的方法包括以下步骤:
S401:确定被迁移的应用的数据共享方式为TSQ;
S402:从预设的数据模型集合中查询类型元数据为TSQ的目标数据模型;
具体地,预设的数据模型集合中的任意一个数据模型均可以包括以下元数据:
类型元数据、源关键字列表,功能元数据、关键字的类型、长度和关键字之间的关系、以及转换规则。
其中,类型元数据用于指示应用的数据共享方式是TSQ还是数据库缓存;功能元数据用于描述该应用功能是读缓存、写缓存、更新缓存还是输出缓存;关键字类型用于指示此关键字是否为入参;关键字之间的关系用于描述关键字与关键字之间的关联关系,包括依赖关系、互斥关系、包含关系、关键字和关键字之间的排列顺序(即什么关键字在前、什么关键字在后)、该关键字是否必需、关键字的参数能够为空等;转换规则用于指示源关键字转换为目标关键字的转换规则。
在类型元数据为TSQ的数据模型中,关键字列表中可以包括以下关键字:
◆读队列READQ:动作类型;
◆队列QUEUE(name):队列名称;
◆队列名QNAME(name):队列名称,与QUEUE二选一;
◆插入数据区INTO(data-area):指定接收的数据区;
◆设置指针SET(ptr-ref):指明接收数据的指针,与INTO二选一;
◆数据长度LENGTH(data-area):接收数据区的长度;
◆记录数NUMITEMS(data-area):用来返回QUEUE里一共有多少纪录;
◆条目ITEM(data-value):指明读第几条纪录;
◆下一条NEXT:指明读队列的下一条纪录,与ITEM二选一;
◆响应码RESP:错误码;
◆响应码说明RESP2:错误码详细说明;
◆系统标识SYSID(system name):指明队列所在远程客户信息控制系统(Customer Information Control System,CICS)的名字。
需要说明的是,以上各个关键字之后的括号中的字段表示此关键字的参数(入参)。
功能元数据、关键字的类型、长度和关键字之间的关系用来检查要替换的代码的语法,词法和语义的正确性。
S403:从所述目标数据模型中获取关键字列表;
S404:在所述待转换的代码段中依次查找所述关键字列表中的关键字,将找到的关键字确定为所述源关键字;
S405:将TSQ的开始标记出现的代码行作为代码起始行,并将TSQ的结束标记出现的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为用于实现数据共享功能的代码段;
具体地,可以使用现有的搜索引擎搜索“EXEC CICS WRITEQ TS”、“EXEC WRITEQTS REWRITE”、“EXEC READQ TS”、“EXEC READQ TS NEXT”、或“EXEC DELETEQ TS”标记出现的代码行,并在此代码行添加开始注解符作为代码起始行,然后从代码起始行逐行搜索“END-EXEC”标记出现的代码行,并在次代码行添加结束注解符作为代码结束行。结合分布式缓存主要的API,抽取8个注解@add cache begin,@update cache begin,@delete cachebegin,@read cache begin,@add cache end,@update cache end,@delete cache end,@read cache end分别对应分布式缓存的新增、更新、删除、读取操作的开始和结束。
其中,S405与S403或S404的顺序不做限定。
S406:使用所述目标数据模型中的替换规则,将所述源关键字替换为所述目标关键字。
本实施例中,目标关键字用于指示对接装置上的API,所述对接装置为分布式缓存与第二服务器间的连接桥梁,实现第二服务器中的应用与分布式缓存的连接。
使用对接装置实现应用与分布式缓存的通信的架构示意图如图5所示,因为目前主流的分布式缓存的客户端一般采用JAVA和C进行编译,而Rehosting迁移的应用通常采用COBOL进行编译,所以,对接装置的目的在于封装API(例如Webservice、Restful接口),这些API用于应用与分布式缓存进行通信,包括应用与分布式缓存间的连接及初始化等过程。
对接装置如何与各种分布式缓存对接可以参见现有技术。目前对分布式缓存的使用,主要是对分布式缓存的写、读、更新以及删除操作上,结合TSQ和数据库场景,对缓存数据的操作也集中在写、读、更新及删除操作上,所以,对接装置也只需封装以上4种接口即可。
从上述说明可以看出,本实施例中所述的方法,通过建立元数据模型,界定代码范围和代码转换流程,COBOL应用中就自动引入了分布式缓存,基于分布式缓存的特性,多个应用节点可以共享数据,而无需对应用进行改进,因此,使得多应用节点共享数据的方式变得简单易行。
本申请实施例公开的又一种应用的处理方法,应用在以数据库缓存为数据共享方式的应用的迁移过程中。
联机交易里有分页查询的交易,以某银行对公客户系统为例,目前的做法是把查询的中间结果放到数据库,分页查询的时候再对中间结果查询。如图6所示,三个交易(A交易、B交易和C交易)每次都要取T表的前10条记录,而这些记录的变动小,如果每次都取数据库查询无疑是种浪费,效率比较低,大数据量的查询时又增加了数据库网络交互的次数,降低了数据库性能。
本申请实施例公开的又一种应用的处理方法,如图7所示,包括以下步骤:
S701:确定被迁移的应用的数据共享方式为数据库缓存;
S702:从预设的数据模型集合中查询目标数据模型,目标数据模型中的类型元数据为数据库缓存;
同上一实施例,预设的数据模型集合中的任意一个数据模型均可以包括以下元数据:
类型元数据、源关键字列表,功能元数据、关键字的类型、长度和关键字之间的关系、以及转换规则。
与上述实施例不同的是,在类型元数据为数据库缓存的数据模型下,关键字列表中可以包括以下关键字:
◆选择SELECT:动作类型,需要查询的字段;
◆哪些FROM:从哪些表取记录;
◆插入数据区INTO:需要赋值的字段;
◆哪里WHERE:查询的条件;
◆与AND:与条件。
S703:将用户标记的起始位置所在的代码行作为代码起始行,并将用户标记的结束位置所在的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为用于实现数据共享功能的代码段;
具体地,由于不是所有的SQL都需要缓存,开始行的位置无法通过搜索的方式获取,所以需要用户指定好使用共享缓存的代码位置,并依据用户的指定,在开始位置和结束位置加上注解符号。
S704:从所述目标数据模型中获取关键字列表;
S705:在所述用于实现数据共享功能的代码段中依次查找所述关键字列表中的关键字,将找到的关键字确定为所述源关键字;
S706:检查所述用于实现数据共享功能的代码段中的源关键字的语法是否正确,如果是,执行S707,如果否,执行S708;
例如包括READQ关键字的情况下,ITEM关键字和NEXT关键字不能并存,QUEUE不能为空;又例如在元数据类型为数据缓存的情况下,WHERE关键字不能在FROM关键字前,INTO关键字不能为空等。语法判断的依据来自于数据模型里的关键字类型和长度、关键字之间的关系。
S707:使用所述目标数据模型中的替换规则,将所述源关键字替换为所述目标关键字。
S708:发出语法错误提示。
从上述步骤可以看出,使用本实施例所述的方法将被迁移的应用的源代码进行转换后,使得应用与分布式缓存对接,在此应用进行分页查询的时候,可以直接从分布式缓存中读取数据,从而能够提高查询的效率。
与上述方法相对应地,本申请实施例还提供了一种应用的处理装置,如图8所示,包括:
代码段确认模块801,用于在应用从第一服务器向第二服务器迁移的过程中,在所述应用的源代码中确认用于实现数据共享功能的代码段;
替换模块802,用于使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字,所述源关键字依据所述应用的数据共享方式从预设的数据模型中查询得到,所述预设的数据模型用于指示数据共享方式与源关键字间的对应关系,所述目标关键字用于所述应用在迁移之前实现数据共享功能的过程中,调用所述第一服务器中的非分布式缓冲存储器,所述目标关键字用于在所述应用迁移之后,在所述源代码被编译运行以实现数据共享功能的过程中,调用与所述第二服务器连接的分布式缓冲存储器。
可选地,本实施例所述装置还可以包括:
关键字确认模块803,用于确定所述应用的数据共享方式;从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型集合中的任意一个数据模型包括类型元数据及关键字列表;从所述目标数据模型中获取关键字列表;将包含在所述待转换的代码段中的所述关键字列表中的关键字作为所述源关键字。
编译模块804,用于在所述替换模块使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字之后,编译所述应用的源代码,生成迁移后的应用;
以及第一运行控制模块805和/或第二运行控制模块806。
其中,第一运行控制模块用于依据第一指令,运行所述迁移后的应用,其中,在所述应用运行的过程中产生的数据被写入所述分布式缓存中,被写入所述分布式缓存中的数据,用于被与分所述布式缓存连接的第三服务器中运行的应用读取。
第二运行控制模块用于依据第二指令,运行所述迁移后的应用,读取所述分布式缓存中的数据,其中所述分布式缓存中的数据由与分所述布式缓存连接的第三服务器中运行的应用写入。
具体地,关键字确认模块确认源关键字的具体实现方式可以为:从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型集合中的任意一个数据模型包括类型元数据及关键字列表,以及用于指示源关键字替换为目标关键字的替换规则;替换模块使用目标关键字替换所述待转换的代码段中的源关键字的具体实现方式可以为:使用所述目标数据模型中的替换规则,将所述源关键字替换为所述目标关键字。
进一步地,关键字确认模块可以依据不同的数据共享方式,确定出不同的关键字列表,具体地:
关键字确认模块确定所述应用的数据共享方式为TSQ,则所述关键字列表包括以下关键字:
READQ:动作类型;
QUEUE:队列名称;
QNAME:队列名称,与QUEUE二选一;
INTO:指定接收的数据区;
SET:指明接收数据的指针,与INTO二选一;
LENGTH:接收数据区的长度;
NUMITEMS:用来返回QUEUE里的纪录的数量;
ITEM:指明读第几条纪录;
NEXT:指明读队列的下一条纪录,与ITEM二选一;
RESP:错误码;
RESP2:错误码详细说明;
SYSID:指明队列所在远程客户信息控制系统的名字。
关键字确认模块确定所述应用的数据共享方式为数据库缓存;
则所述关键字列表包括以下关键字:
SELECT:动作类型,需要查询的字段;
FROM:从哪些表取记录;
INTO:需要赋值的字段;
WHERE:查询的条件;
AND:与条件。
具体地,代码段确认模块在所述应用的源代码中确认用于实现数据共享功能的代码段的具体实现方式可以为:在所述应用的数据共享方式为TSQ的情况下,将TSQ的开始标记出现的代码行作为代码起始行,并将TSQ的结束标记出现的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为所述用于实现数据共享功能的代码段;在所述应用的数据共享方式为数据库数据缓存的情况下,将用户标记的起始位置所在的代码行作为代码起始行,并将用户标记的结束位置所在的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为所述用于实现数据共享功能的代码段。
本实施例所述的装置,可以通过在应用的迁移过程中修改应用的源代码,将实现数据共享功能过程中调用的非分布式存储器替换为分布式缓存,从而提高数据共享的效率。
本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (16)

1.一种应用的处理方法,应用于应用从第一服务器向第二服务器迁移的过程中,其特征在于,包括:
在所述应用的源代码中确认用于实现数据共享功能的代码段;
使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字,所述源关键字依据所述应用的数据共享方式从预设的数据模型中查询得到,所述预设的数据模型用于指示数据共享方式与源关键字间的对应关系,所述源关键字用于所述应用在迁移之前实现数据共享功能的过程中,调用所述第一服务器中的非分布式缓冲存储器,所述目标关键字用于在所述应用迁移之后,在所述源代码被编译运行以实现数据共享功能的过程中,调用与所述第二服务器连接的分布式缓冲存储器。
2.根据权利要求1所述的方法,其特征在于,确定所述用于实现数据共享功能的代码段中的源关键字的过程具体包括:
确定所述应用的数据共享方式;
从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型集合中的任意一个数据模型包括类型元数据及关键字列表;
从所述目标数据模型中获取关键字列表;
将包含在待转换的代码段中的所述关键字列表中的关键字作为所述源关键字,所述待转换的代码段是指所述应用的源代码中用于实现数据共享功能的代码段。
3.根据权利要求2所述的方法,其特征在于,所述预设的数据模型中的任意一个数据模型还包括:
用于指示源关键字替换为目标关键字的替换规则;
所述使用目标关键字替换用于实现数据共享功能的代码段中的源关键字包括:
使用所述目标数据模型中的替换规则,将所述源关键字替换为所述目标关键字。
4.根据权利要求2或3所述的方法,其特征在于,所述确定所述应用的数据共享方式包括:确定所述应用的数据共享方式为临时存储队列TSQ;
则所述关键字列表包括以下关键字:
READQ:动作类型;
QUEUE:队列名称;
QNAME:队列名称,与QUEUE二选一;
INTO:指定接收的数据区;
SET:指明接收数据的指针,与INTO二选一;
LENGTH:接收数据区的长度;
NUMITEMS:用来返回QUEUE里的纪录的数量;
ITEM:指明读第几条纪录;
NEXT:指明读队列的下一条纪录,与ITEM二选一;
RESP:错误码;
RESP2:错误码详细说明;
SYSID:指明队列所在远程客户信息控制系统的名字。
5.根据权利要求2或3所述的方法,其特征在于,所述确定所述应用的数据共享方式包括:确定所述应用的数据共享方式为数据库缓存;
则所述关键字列表包括以下关键字:
SELECT:动作类型,需要查询的字段;
FROM:从哪些表取记录;
INTO:需要赋值的字段;
WHERE:查询的条件;
AND:与条件。
6.根据权利要求1所述的方法,其特征在于,在所述应用的源代码中确认用于实现数据共享功能的代码段包括:
在所述应用的数据共享方式为临时存储队列TSQ的情况下,将所述TSQ的开始标记出现的代码行作为代码起始行,并将所述TSQ的结束标记出现的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为所述用于实现数据共享功能的代码段;
在所述应用的数据共享方式为数据库数据缓存的情况下,将用户标记的起始位置所在的代码行作为代码起始行,并将用户标记的结束位置所在的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为所述用于实现数据共享功能的代码段。
7.根据权利要求1至3任一项所述的方法,其特征在于,在所述使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字之后,还包括:
编译所述应用的源代码,生成迁移后的应用;
依据第一指令,运行所述迁移后的应用,其中,在所述应用运行的过程中产生的数据被写入所述分布式缓冲存储器中;
被写入所述分布式缓冲存储器中的数据,用于被与所述分布式缓冲存储器连接的第三服务器中运行的应用读取。
8.根据权利要求1至3任一项所述的方法,其特征在于,在所述使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字之后,还包括:
编译所述应用的源代码,生成迁移后的应用;
依据第二指令,运行所述迁移后的应用,读取所述分布式缓冲存储器中的数据,其中,所述分布式缓冲存储器中的数据由与所述分布式缓冲存储器连接的第三服务器中运行的应用写入。
9.一种应用的处理装置,其特征在于,包括:
代码段确认模块,用于在应用从第一服务器向第二服务器迁移的过程中,在所述应用的源代码中确认用于实现数据共享功能的代码段;
替换模块,用于使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字,所述源关键字依据所述应用的数据共享方式从预设的数据模型中查询得到,所述预设的数据模型用于指示数据共享方式与源关键字间的对应关系,所述源关键字用于所述应用在迁移之前实现数据共享功能的过程中,调用所述第一服务器中的非分布式缓冲存储器,所述目标关键字用于在所述应用迁移之后,在所述源代码被编译运行以实现数据共享功能的过程中,调用与所述第二服务器连接的分布式缓冲存储器。
10.根据权利要求9所述的装置,其特征在于,还包括:
关键字确认模块,用于确定所述应用的数据共享方式;从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型集合中的任意一个数据模型包括类型元数据及关键字列表;从所述目标数据模型中获取关键字列表;将包含在待转换的代码段中的所述关键字列表中的关键字作为所述源关键字,所述待转换的代码段是指所述应用的源代码中用于实现数据共享功能的代码段。
11.根据权利要求10所述的装置,其特征在于,所述关键字确认模块具体用于,从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型集合中的任意一个数据模型包括类型元数据及关键字列表,以及用于指示源关键字替换为目标关键字的替换规则;
所述替换模块用于使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字包括:
使用所述目标数据模型中的替换规则,将所述源关键字替换为所述目标关键字。
12.根据权利要求10或11所述的装置,其特征在于,所述关键字确认模块具体用于,确定所述应用的数据共享方式为临时存储队列TSQ;从所述预设的数据模型中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型中的任意一个数据模型包括类型元数据及关键字列表,所述关键字列表包括以下关键字:
READQ:动作类型;
QUEUE:队列名称;
QNAME:队列名称,与QUEUE二选一;
INTO:指定接收的数据区;
SET:指明接收数据的指针,与INTO二选一;
LENGTH:接收数据区的长度;
NUMITEMS:用来返回QUEUE里的纪录的数量;
ITEM:指明读第几条纪录;
NEXT:指明读队列的下一条纪录,与ITEM二选一;
RESP:错误码;
RESP2:错误码详细说明;
SYSID:指明队列所在远程客户信息控制系统的名字。
13.根据权利要求10或11所述的装置,其特征在于,所述关键字确认模块具体用于,确定所述应用的数据共享方式为数据库缓存;从所述预设的数据模型集合中查询目标数据模型,所述目标数据模型中的类型元数据为所述应用的数据共享方式,所述预设的数据模型集合中的任意一个数据模型包括类型元数据及关键字列表,所述关键字列表包括以下关键字:
SELECT:动作类型,需要查询的字段;
FROM:从哪些表取记录;
INTO:需要赋值的字段;
WHERE:查询的条件;
AND:与条件。
14.根据权利要求9所述的装置,其特征在于,所述代码段确认模块用于在所述应用的源代码中确认用于实现数据共享功能的代码段包括:
所述代码段确认模块具体用于,在所述应用的数据共享方式为临时存储队列TSQ的情况下,将所述TSQ的开始标记出现的代码行作为代码起始行,并将所述TSQ的结束标记出现的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为所述用于实现数据共享功能的代码段;在所述应用的数据共享方式为数据库数据缓存的情况下,将用户标记的起始位置所在的代码行作为代码起始行,并将用户标记的结束位置所在的代码行作为代码结束行,所述代码起始行和所述代码结束行之间的代码段为所述用于实现数据共享功能的代码段。
15.根据权利要求9至11任一项所述的装置,其特征在于,还包括:
编译模块,用于在所述替换模块使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字之后,编译所述应用的源代码,生成迁移后的应用;
第一运行控制模块,用于依据第一指令,运行所述迁移后的应用,其中,在所述应用运行的过程中产生的数据被写入所述分布式缓冲存储器中,被写入所述分布式缓冲存储器中的数据,用于被与所述分布式缓冲存储器连接的第三服务器中运行的应用读取。
16.根据权利要求9至11任一项所述的装置,其特征在于,还包括:
编译模块,用于在所述替换模块使用目标关键字替换所述用于实现数据共享功能的代码段中的源关键字之后,编译所述应用的源代码,生成迁移后的应用;
第二运行控制模块,用于依据第二指令,运行所述迁移后的应用,读取所述分布式缓冲存储器中的数据,其中,所述分布式缓冲存储器中的数据由与所述分布式缓冲存储器连接的第三服务器中运行的应用写入。
CN201510542714.XA 2015-08-28 2015-08-28 一种应用的处理方法及装置 Active CN106484379B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510542714.XA CN106484379B (zh) 2015-08-28 2015-08-28 一种应用的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510542714.XA CN106484379B (zh) 2015-08-28 2015-08-28 一种应用的处理方法及装置

Publications (2)

Publication Number Publication Date
CN106484379A CN106484379A (zh) 2017-03-08
CN106484379B true CN106484379B (zh) 2019-11-29

Family

ID=58236150

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510542714.XA Active CN106484379B (zh) 2015-08-28 2015-08-28 一种应用的处理方法及装置

Country Status (1)

Country Link
CN (1) CN106484379B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6950634B2 (ja) * 2018-07-03 2021-10-13 オムロン株式会社 制御装置および制御方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2028592A1 (en) * 2007-08-20 2009-02-25 Hitachi, Ltd. Storage and server provisioning for virtualized and geographically dispersed data centers
WO2012173541A1 (en) * 2011-06-16 2012-12-20 Telefonaktiebolaget L M Ericsson (Publ) A client and a server and methods thereof for data management relating to shared data storage
CN103905503A (zh) * 2012-12-27 2014-07-02 中国移动通信集团公司 数据存取方法、调度方法、设备及系统
CN104239493A (zh) * 2014-09-09 2014-12-24 北京京东尚科信息技术有限公司 跨集群数据迁移方法和系统
CN104683480A (zh) * 2015-03-19 2015-06-03 成都艺辰德迅科技有限公司 一种基于应用的分布式计算方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2028592A1 (en) * 2007-08-20 2009-02-25 Hitachi, Ltd. Storage and server provisioning for virtualized and geographically dispersed data centers
WO2012173541A1 (en) * 2011-06-16 2012-12-20 Telefonaktiebolaget L M Ericsson (Publ) A client and a server and methods thereof for data management relating to shared data storage
CN103905503A (zh) * 2012-12-27 2014-07-02 中国移动通信集团公司 数据存取方法、调度方法、设备及系统
CN104239493A (zh) * 2014-09-09 2014-12-24 北京京东尚科信息技术有限公司 跨集群数据迁移方法和系统
CN104683480A (zh) * 2015-03-19 2015-06-03 成都艺辰德迅科技有限公司 一种基于应用的分布式计算方法

Also Published As

Publication number Publication date
CN106484379A (zh) 2017-03-08

Similar Documents

Publication Publication Date Title
JP7113040B2 (ja) 分散型データストアのバージョン化された階層型データ構造
US20180113771A1 (en) Transaction consistency query support for replicated data from recovery log to external data stores
CN108536761A (zh) 报表数据查询方法及服务器
JP2019517043A (ja) ハイブリッドアプリケーションの自動更新
CN107045530A (zh) 一种将对象存储系统实现为本地文件系统的方法
US20210303537A1 (en) Log record identification using aggregated log indexes
CN103023982A (zh) 一种云存储客户端的低延迟元数据访问方法
US10152239B1 (en) Migration to a multi-tiered data store
US11397749B2 (en) Asynchronous replication of in-scope table data
US11663288B2 (en) Just-in-time front end template generation using logical document object models
US20230401214A1 (en) Graph database and methods with improved functionality
US20240061712A1 (en) Method, apparatus, and system for creating training task on ai training platform, and medium
CN111966692A (zh) 针对数据仓库的数据处理方法、介质、装置和计算设备
US11704327B2 (en) Querying distributed databases
US10606805B2 (en) Object-level image query and retrieval
CN103501341A (zh) 一种Web服务的创建方法及装置
CN106484379B (zh) 一种应用的处理方法及装置
US11455305B1 (en) Selecting alternate portions of a query plan for processing partial results generated separate from a query engine
US11727022B2 (en) Generating a global delta in distributed databases
US11789971B1 (en) Adding replicas to a multi-leader replica group for a data set
CN108256019A (zh) 数据库主键生成方法、装置、设备及其存储介质
CN111680069B (zh) 数据库访问方法及装置
US11341159B2 (en) In-stream data load in a replication environment
CN108595488B (zh) 数据迁移方法和装置
US11514016B2 (en) Paging row-based data stored as objects

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211228

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Patentee after: Super fusion Digital Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right