CN112685391A - 一种服务数据迁移方法、装置、计算机设备和存储介质 - Google Patents
一种服务数据迁移方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112685391A CN112685391A CN202110302337.8A CN202110302337A CN112685391A CN 112685391 A CN112685391 A CN 112685391A CN 202110302337 A CN202110302337 A CN 202110302337A CN 112685391 A CN112685391 A CN 112685391A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- service
- migration
- mapping
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种服务数据迁移方法、装置、计算机设备和存储介质;本申请实施例可以获取目标服务的服务调用请求,其中,服务调用请求携带调用目标服务所需的原始数据,目标服务具有进行服务数据迁移所需的源数据库与目标数据库;生成与原始数据具有映射关系的目标映射数据;通过源数据库与目标数据库,对目标映射数据进行数据校验;当目标映射数据校验通过时,基于目标映射数据,对服务调用请求进行服务响应;分别在源数据库与目标数据库,对原始数据与目标映射数据执行数据写入操作,以将目标服务的服务数据迁移至目标数据库。该方案可以提供服务无损且安全可靠的数据迁移,并提高了服务数据的迁移效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种服务数据迁移方法、装置、计算机设备和存储介质。
背景技术
服务作为计算机中的一种应用类型,通常可以在本地和通过网络为用户提供一些功能,例如客户端/服务器应用程序、Web服务器、数据库服务器以及其他基于服务器的应用程序等。在实际应用中,当对软件进行升级或重构时,可以将软件由旧版本更新到新版本,期间常常需要对服务数据进行迁移。
现有的软件升级和数据迁移方式会存在一些问题,例如,在数据迁移期间无法响应用户请求导致服务有损;或者当新版本***有故障时,发现新版本软件问题的效率不高,应对变更异常情况的处理能力不足等,从而影响了服务的使用体验与服务数据的迁移效率,需要改进。
发明内容
本申请实施例提供一种服务数据迁移方法、装置、计算机设备和存储介质,可以提供服务无损且安全可靠的数据迁移,并提高了服务数据的迁移效率。
本申请实施例提供一种服务数据迁移方法,包括:
获取目标服务的服务调用请求,其中,所述服务调用请求携带调用所述目标服务所需的原始数据,所述目标服务具有进行服务数据迁移所需的源数据库与目标数据库;
生成与所述原始数据具有映射关系的目标映射数据;
通过所述源数据库与所述目标数据库,对所述目标映射数据进行数据校验;
当所述目标映射数据校验通过时,基于所述目标映射数据,对所述服务调用请求进行服务响应;
分别在所述源数据库与所述目标数据库,对所述原始数据与所述目标映射数据执行数据写入操作,以将所述目标服务的服务数据迁移至所述目标数据库。
相应的,本申请实施例还提供一种服务数据迁移装置,包括:
第一获取单元,用于获取目标服务的服务调用请求,其中,所述服务调用请求携带调用所述目标服务所需的原始数据,所述目标服务具有进行服务数据迁移所需的源数据库与目标数据库;
生成单元,用于生成与所述原始数据具有映射关系的目标映射数据;
校验单元,用于通过所述源数据库与所述目标数据库,对所述目标映射数据进行数据校验;
第一响应单元,用于当所述目标映射数据校验通过时,基于所述目标映射数据,对所述服务调用请求进行服务响应;
写入单元,用于分别在所述源数据库与所述目标数据库,对所述原始数据与所述目标映射数据执行数据写入操作,以将所述目标服务的服务数据迁移至所述目标数据库。
在一实施例中,所述生成单元,包括:
解析子单元,用于对所述服务调用请求进行解析,以确定所述原始数据的迁移属性信息,其中,所述迁移属性信息表征所述原始数据的迁移属性;
第一映射生成子单元,用于基于所述原始数据生成第一映射数据,其中,所述第一映射数据与所述原始数据对应;
注入子单元,用于将所述迁移属性信息注入所述第一映射数据,得到与所述原始数据具有映射关系的目标映射数据。
在一实施例中,所述解析子单元,用于:
对所述服务调用请求进行解析,以确定发送所述服务调用请求的服务调用对象;将所述服务调用对象与目标对象名单进行比对,得到比对结果;根据所述比对结果,确定所述原始数据的迁移属性,得到所述原始数据的迁移属性信息。
在一实施例中,所述注入子单元,用于:
基于所述迁移属性信息生成第二映射数据,其中,所述第二映射数据与所述迁移属性信息对应;确定所述第一映射数据与所述第二映射数据之间的关联关系;根据所述关联关系,将所述第二映射数据注入所述第一映射数据,得到与所述原始数据具有映射关系的目标映射数据。
在一实施例中,所述校验单元,包括:
第一查询子单元,用于基于所述目标映射数据,分别在所述源数据库与所述目标数据库进行数据查询操作,得到所述源数据库对应的第一查询结果、以及所述目标数据库对应的第二查询结果;
校验子单元,用于根据所述第一查询结果与所述第二查询结果,对所述目标映射数据进行数据校验。
在一实施例中,所述校验子单元,用于:
若所述第一查询结果失效,基于所述第二查询结果对所述目标映射数据进行数据校验;若所述第一查询结果有效,基于所述第一查询结果对所述目标映射数据进行数据校验。
在一实施例中,所述目标映射数据设置有时效属性;所述第一响应单元,包括:
第一更新子单元,用于当所述目标映射数据校验通过时,更新所述目标映射数据的时效属性;
第一响应生成子单元,用于基于所述更新结果与所述目标映射数据,生成所述服务调用请求的响应数据;
第一发送子单元,用于向所述服务调用请求的服务调用对象发送所述响应数据,以对所述服务调用请求进行服务响应。
在一实施例中,所述写入单元,包括:
数据生成子单元,用于基于所述原始数据与所述目标映射数据,生成待写入数据;
写入子单元,用于分别在所述源数据库与所述目标数据库,对所述待写入数据执行数据写入操作,得到所述源数据库对应的第一写入结果、以及所述目标数据库对应的第二写入结果;
结果确定子单元,用于根据所述第一写入结果与所述第二写入结果,确定所述待写入数据的数据迁移结果。
在一实施例中,所述服务数据迁移装置,还包括:
第二获取单元,用于获取所述目标服务的数据查询请求,其中,所述数据查询请求包括待查询的映射数据;
解析单元,用于对所述待查询映射数据进行解析,得到所述待查询映射数据携带的迁移属性信息;
查询单元,用于基于所述迁移属性信息,通过所述源数据库与所述目标数据库,对所述待查询映射数据进行数据查询操作,得到第三查询结果;
第二响应单元,用于基于所述第三查询结果,对所述数据查询请求进行响应。
在一实施例中,所述查询单元,包括:
对象确定子单元,用于确定发送所述数据查询请求的数据查询对象;
数据库确定子单元,用于基于所述数据查询对象与所述迁移属性信息,从所述源数据库与所述目标数据库中确定所述待查询映射数据的目标查询数据库;
第二查询子单元,用于通过所述目标查询数据库对所述待查询映射数据进行数据查询操作,得到第三查询结果。
在一实施例中,所述待查询映射数据设置有时效属性;所述第二响应单元,包括:
第二更新子单元,用于基于所述第三查询结果,更新所述待查询映射数据的时效属性;
第二响应生成子单元,用于基于所述更新结果与所述第三查询结果,生成所述数据查询请求的响应数据;
第二发送子单元,用于向所述数据查询请求的数据查询对象发送所述响应数据,以对所述数据查询请求进行响应。
相应的,本申请实施例还提供一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如本申请实施例所示的服务数据迁移方法的步骤。
相应的,本申请实施例还提供一种计算机设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如本申请实施例所示的服务数据迁移方法的步骤。
本申请实施例可以获取目标服务的服务调用请求,其中,所述服务调用请求携带调用所述目标服务所需的原始数据,所述目标服务具有进行服务数据迁移所需的源数据库与目标数据库;生成与所述原始数据具有映射关系的目标映射数据;通过所述源数据库与所述目标数据库,对所述目标映射数据进行数据校验;当所述目标映射数据校验通过时,基于所述目标映射数据,对所述服务调用请求进行服务响应;分别在所述源数据库与所述目标数据库,对所述原始数据与所述目标映射数据执行数据写入操作,以将所述目标服务的服务数据迁移至所述目标数据库。
该方案在对服务数据进行迁移的过程中,仍然可以获取目标服务的服务调用请求并对该服务调用请求进行服务响应,因此,通过该方案迁移服务数据时无需停机停服,且在数据迁移期间仍可对用户提供服务,可以实现对服务无损且用户无感知。并且,该方案在进行迁移期间的数据校验时,是通过既读源数据库又读目标数据库的双读策略实现的,这样的话,有利于自动比对目标服务的新旧***之间的行为,并自动校正新***数据异常,提高了发现目标服务的新版本软件所存在问题的效率。此外,该方案在迁移期间写入数据时,是通过既写源数据库又写目标数据库的双写策略实现的,这样的话,在新***存在故障时,能无损回退到老版本,提高了应对变更异常情况的处理能力。另外,该方案有助于使得软件升级或重构更好地进行,例如,可以通过该方案将目标服务中不同模块的存储数据拆分,并将目标存储数据迁移到独立的存储,有利于简化后续分区架构升级。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的服务数据迁移方法的场景示意图;
图2是本申请实施例提供的服务数据迁移方法的流程图;
图3是本申请实施例提供的服务数据迁移方法的另一场景图;
图4是本申请实施例提供的服务数据迁移方法的序列图;
图5是本申请实施例提供的服务数据迁移方法的另一序列图;
图6是本申请实施例提供的服务数据迁移方法的另一序列图;
图7是本申请实施例提供的服务数据迁移方法的另一序列图;
图8是本申请实施例提供的服务数据迁移方法的另一流程示意图;
图9是本申请实施例提供的服务数据迁移装置的结构示意图;
图10是本申请实施例提供的服务数据迁移装置的另一结构示意图;
图11是本申请实施例提供的服务数据迁移装置的另一结构示意图;
图12是本申请实施例提供的服务数据迁移装置的另一结构示意图;
图13是本申请实施例提供的服务数据迁移装置的另一结构示意图;
图14是本申请实施例提供的服务数据迁移装置的另一结构示意图;
图15是本申请实施例提供的服务数据迁移装置的另一结构示意图;
图16是本申请实施例提供的服务数据迁移装置的另一结构示意图;
图17是本申请实施例提供的计算机设备的结构示意图;
图18是本申请实施例提供的区块链***的结构示意图;
图19是本申请实施例提供的区块链***的另一结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种服务数据迁移方法、装置、计算机设备和存储介质。具体地,本申请实施例提供适用于计算机设备的服务数据迁移装置。其中,该计算机设备可以为终端或服务器等设备,该终端可以为手机、平板电脑、笔记本电脑、车载设备等设备。该服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群。
本申请实施例将以计算机设备为服务器为例,来介绍服务数据迁移方法。
参考图1,本申请提供了服务数据迁移***包括源数据库与目标数据库等,其中,源数据库与目标数据库可以属于同一服务器,也可以分属不同服务器,源数据库与目标数据库之间可以通过网络连接,比如,通过有线或无线网络连接等。服务数据迁移装置可以集成在包括源数据库与目标数据库的服务器或服务器集群中。
服务数据迁移***可以获取目标服务的服务调用请求,其中,该服务调用请求携带调用目标服务所需的原始数据,该目标服务具有进行服务数据迁移所需的源数据库与目标数据库。例如,在对目标服务进行升级时,可以包括数据迁移的过程,其中,源数据库可以为目标服务升级前的存储数据库,目标数据库可以为目标服务升级后的存储数据库。
进一步地,服务数据迁移***可以生成与原始数据具有映射关系的目标映射数据,例如,可以在服务数据迁移***中新建模块,并通过该新建模块来生成与原始数据具有映射关系的目标映射数据。
在生成目标映射数据后,服务数据迁移***可以通过源数据库与目标数据库,对目标映射数据进行数据校验。当目标映射数据校验通过时,服务数据迁移***可以基于该目标映射数据,对服务调用请求进行服务响应,并分别在源数据库和目标数据库,对原始数据与目标映射数据执行数据写入操作,以将目标服务的服务数据迁移至目标数据库。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本申请实施例提供的一种服务数据迁移方法,该方法可以由终端或服务器执行,也可以由终端和服务器共同执行;本申请实施例以服务数据迁移方法由服务器执行为例来进行说明,具体的,由集成在服务器中的服务数据迁移装置来执行,如图2所述,该服务数据迁移方法的具体流程可以如下:
101、获取目标服务的服务调用请求,其中,服务调用请求携带调用目标服务所需的原始数据,目标服务具有进行服务数据迁移所需的源数据库与目标数据库。
其中,服务为通过利用计算机与通信网络等技术来对信息进行生产、收集、处理、加工、存储、运输、检索和利用等步骤中的一个或多个。具体地,服务为对程序或用户给予功能支持或业务辅助的一种应用程序类型。
因此,目标服务可以为操作***中执行指定***功能的程序、例程或进程;例如,目标服务可以为运行于终端或服务器端的应用程序,该应用程序通常可以在本地或通过网络为其他应用程序或用户提供一些功能。举例来说,目标服务可以为客户端/服务器应用程序,Web服务器、数据库服务器以及其他基于服务器的应用程序,等等。
在一实施例中,目标服务可以是为扫码支付提供功能或业务支持的应用程序。作为示例,目标服务可以为扫码支付服务,例如,由微信支付所提供的扫码支付服务。具体应用时,商户***可以按支付协议生成支付二维码,用户可以再用相关应用“扫一扫”该生成的支付二维码以完成支付。其中,商户生成的二维码,例如从微信支付侧生成的二维码,可以包括有静态码与动态码两种:对于动态码,商户生成的二维码有效期只有2小时,过期后,需要重新生成新的码供用户扫码支付;对于静态码,商户生成的二维码有效期为30天,且期间有用户支付,会不断的续满30天,一般的,只要该二维码有用户扫码,理论上可以一直实现支付功能。
为了对扫码支付的流程进行介绍,以下可以将扫码支付服务具体为由微信支付所提供的扫码支付服务为例进行说明,值得说明的是,本申请的应用不局限于微信支付,具体的举例只是用于帮助理解本申请的方法及其核心思想,在实际应用中,本领域的技术人员根据本申请的思想,在具体实施方式及应用范围上均会有改变之处。
参考图3,图3介绍了微信支付所提供的扫码支付服务的流程,首先,商户下单生成二维码:其中,商户后台***可以根据微信支付协议,将要发起支付的当前订单的金额、商户订单号、商品信息等提交微信支付***(也即图3中,商户后台***向微信支付***请求“生成短码”)。而微信支付***记录这些信息后,可以返回一个交易会话标识给商户后台***(也即图3中,微信支付***向商户后台***“返回短码”),其中,该交易会话标识也称“短码”,可以用以标识当前订单。商户后台***则可以将该短码生成二维码展示给用户(即为图3中商户后台***“向用户展示二维码”)。
进一步地,扫码支付服务的流程还可以包括用户扫码完成支付:用户可以使用微信支付“扫一扫”来读取二维码(也即图3中微信支付用户通过微信客户端“打开微信扫码”),并将扫码得到的短码提交到微信支付***(也即图3中,微信支付用户通过微信客户端向微信支付***“提交扫码信息”)。
值得注意的是,虽未在图3中展示,但是扫码支付服务的流程还可以包括:微信支付***根据该短码,从数据库中取出商户下单信息,完成用户后续验密、扣款等流程。
为了便于理解,以下将对扫码支付流程中涉及到的长码、短码、以及扫码过程中的交互过程进行解释。
其中,参考图3,商户后台***向微信支付***请求生成短码的时候,是通过向微信支付***发送生成短码的请求实现的,该请求中可以包括生成短码所需的关键参数,例如包括当前订单的金额、商户订单号、商品信息等数据。因此,商户后台***发送给微信支付***的请求中包括的是一个长的数据串,即长码。
若商户后台***直接根据长码生成二维码,由于长码所包含的数据量较大,会导致生成的二维码较密集,不利于用户扫码识别。因此,在扫码支付的交互流程中,可以将长码转换成短码,并基于短码来生成供用户支付所需的二维码,这样的话,可以生成适于扫码识别的二维码给用户支付。
具体地,参考图4,图4为根据长码生成短码的序列图,其旨在生成不冲突的短码,不冲突指的是不与扫码支付服务的源数据库mmpayticket中已存有的短码重复。其中,接入业务模块为服务数据迁移***中用于接入服务业务的模块,具体地,接入业务模块可以获取目标服务的真实业务请求,例如,来自商户后台***的服务调用请求,又如,来自用户的数据查询请求,等等。接入业务模块也可以获取目标服务除真实业务请求之外其他请求,例如,由研发人员可以生成的数据迁移请求,等等。
而微信支付***返回给商户后台***的短码,为标识待支付的当前交易的交易会话标识,商户后台***在获得短码后,即可根据该短码生成展示给用户支付所需的二维码,用户可以通过微信客户端扫码以读取该短码信息,并通过向微信支付***提交读取到的短码信息,以通过微信支付***对待支付的当前交易进行支付。
具体地,参考图5,图5为在扫码支付服务的源数据库mmpayticket中对短码进行查询的序列图,其旨在得到短码的明确状态,例如,存在或不存在,等等。其中,微信支付***通过接入业务模块获取用户读取到的短码后,可以在源数据库mmpayticket中对该短码进行查询,以确定该短码是否为源数据库中存储的数据。可选地,当在源数据库mmpayticket中查询到该短码有效时,可以续满该短码的有效期,例如,对于动态码则是2小时,对于静态码则是30天。
其中,服务数据迁移为对目标服务的相关数据进行迁移的过程,具体地,服务数据迁移可以为将目标服务的相关数据从源数据库迁移到目标数据库的过程。例如,当对目标服务进行升级或软件重构,或者出于其他业务需求,可以将将目标服务的相关数据从源数据库迁移到目标数据库。
作为示例,可以以目标服务为微信支付所提供的扫码支付服务为例。其中,静态码***的相关数据(以下简称为静态码数据)如长码与短码,以及动态码***的相关数据(以下简称为动态码数据)如长码与短码,均存储在微信支付***的源数据库mmpayticket中。由于当动态码数据与静态码数据混在一起,都存储在源数据库mmpayticket中时,会导致业务领域划分不清:动态码数据的生成和读取属于支付会话数据,而静态码数据由于不需要每次生成,类似于商品资料数据。在做分区改造时,对会话数据和资料数据的管理及容灾设计都需要区别对待,因此将二者拆分可以使扫码支付业务职责更清晰,分区技术改造也更为方便。
因此,可以将动态码业务与静态码业务拆分,具体地,可以将动态码数据从源数据库mmpayticket中迁移到目标数据库进行独立的存储,从而既能够对扫码支付服务进行升级改造,也有利于简化后续分区架构的升级。
其中,服务调用请求为调用目标服务的请求,例如,在微信支付所提供的扫码支付示例中,服务调用请求可以为商户后台***向微信支付***发送的请求,其中,该请求携带调用长码,该长码可以用于供微信支付***生成短码,该生成的短码可以用于供商户后台***生成动态码,该生成的动态码可以供用户进行扫码支付。
值得注意的是,服务调用请求除了可以是目标服务的真实业务请求,也可以是业务人员出于业务需求而生成的请求,例如,当要对目标服务中的相关数据进行数据迁移时,研发人员可以生成服务调用请求,以使得可以通过执行本申请所述的服务数据迁移方法来对目标服务中的相关数据进行数据迁移。
其中,原始数据为调用目标服务所需的相关数据,例如,在微信支付所提供的扫码支付服务中,原始数据可以为动态码数据的长码;又如,在数据查询服务中,原始数据可以为查询数据所需的相关数据,如用户标识信息等。
其中,源数据库为完成数据迁移前,存储目标服务的待迁移数据的数据库,例如,在微信支付所提供的扫码支付的示例中,源数据库可以为mmpayticket数据库。
其中,目标数据库为要存储目标服务的待迁移数据的数据库,在完成数据迁移后,待迁移数据即存储在目标数据库中。其中,目标数据库中可以包括至少一个模块,例如,在微信支付所提供的扫码支付的示例中,目标数据库中可以包括sessionao模块与sessionkv模块,其中,sessionao模块可以用于封装生成短码的相关逻辑,sessionkv模块可以用于存储动态码数据。
在一实施例中,可以将本申请所述的服务数据迁移方法应用在微信支付提供的扫码支付服务中,用以将动态码数据从源数据库mmpayticket迁移到目标数据库,其中,目标数据库可以包括sessionao模块与sessionkv模块。参考图6,可以由服务数据迁移***中的接入业务模块获取目标服务的服务调用请求,其中,该服务调用请求携带调用目标服务所需的原始数据,如长码,且该目标服务具有进行服务数据迁移所需的源数据库与目标数据库。
102、生成与原始数据具有映射关系的目标映射数据。
其中,映射指两个元素的集之间元素相互“对应”的关系。映射在数学及相关的领域经常等同于函数。例如,部分映射就相当于部分函数,而完全映射相当于完全函数。
在本实施例中,映射关系为原始数据与目标映射数据之间相互“对应”的关系,例如,原始数据A与目标映射数据B之间具有相互“对应”关系,则认为原始数据A与目标映射数据B具有映射关系。譬如,原始数据可以为商户后台***向微信支付***发送的长码,目标映射数据可以为微信支付***基于该长码生成的短码。
其中,由于原始数据为调用目标服务所需的相关数据,目标映射数据则为与原始数据具有映射关系的数据。例如,在微信支付所提供的扫码支付业务中,原始数据可以为动态码数据的长码,因此,目标映射数据可以为该长码对应的短码;又如,在数据查询服务中,原始数据可以为进行数据查询所需的用户标识信息,则目标映射数据可以为根据该用户标识信息查询到的信息,如脸部特征信息等。
其中,生成目标映射数据的方式可以有多种,例如,在对服务数据进行迁移的过程中,可以分批次或分阶段进行,因此,对服务数据可以设置有不同的迁移属性。例如,服务数据可以包括原始数据与目标映射数据,原始数据可以为长码,目标映射数据可以为短码,则原始数据的迁移属性可以包括:不属于待迁移数据(即该原始数据不参与该批次或该阶段的服务数据迁移),属于待迁移数据(即该原始数据参与该批次或该阶段的服务数据迁移,并且,即将对该原始数据进行迁移),属于迁移中数据(即该原始数据参与该批次或该阶段的服务数据迁移,并且,该原始数据处于迁移中的状态),属于迁移后数据(即该原始数据已完成了数据迁移),等等。
因此,可以基于原始数据的迁移属性,生成与该原始数据具有映射关系的目标映射数据。具体地,步骤“生成与原始数据具有映射关系的目标映射数据”,可以包括:
对服务调用请求进行解析,以确定原始数据的迁移属性信息,其中,该迁移属性信息表征该原始数据的迁移属性;
基于原始数据生成第一映射数据,其中,该第一映射数据与该原始数据对应;
将迁移属性信息注入第一映射数据,得到与原始数据具有映射关系的目标映射数据。
其中,迁移属性为服务数据在进行数据迁移时的相关属性。例如,在对服务数据进行迁移时,迁移属性可以包括:不属于待迁移数据,属于待迁移数据,属于迁移中数据,属于迁移后数据。
其中,迁移属性信息为用于表征迁移属性的信息,迁移属性信息的形式可以有多种,例如,可以为对不同的迁移属性所对应设置的标识,譬如,可以用1表示迁移属性为不属于待迁移数据,用2表示迁移属性为属于待迁移数据,用3表示迁移属性为属于迁移中数据,用4表示迁移属性为属于迁移后数据;等等。
在一实施例中,在对服务数据进行迁移的过程中,可以分批次或分阶段进行,这样的话,即可以对处于不同批次或不同阶段的原始数据设置对应的迁移属性,以使得可以基于原始数据的迁移属性,生成与该原始数据具有映射关系的目标映射数据。
作为示例,目标服务可以为微信支付提供的扫码支付服务,在对动态码数据进行迁移的过程中,可以采取分批迁移的策略,例如,可以按照商户分批进行,这样的话,可以有序地进行服务数据的迁移,并避免因单次数据迁移量过大而导致的风险问题。
因此,可以通过对商户后台***发送的服务调用请求进行解析,以确定原始数据的迁移属性信息,其中,该迁移属性信息表征该原始数据的迁移属性。具体地,步骤“对服务调用请求进行解析,以确定原始数据的迁移属性信息”,可以包括:
对服务调用请求进行解析,以确定发送该服务调用请求的服务调用对象;
将该服务调用对象与目标对象名单进行比对,得到比对结果;
根据比对结果,确定原始数据的迁移属性,得到该原始数据的迁移属性信息。
其中,服务调用对象为调用目标服务的对象,例如,服务调用对象可以为通过向目标服务发送服务调用请求来调用目标服务的对象。作为示例,目标服务可以为微信支付提供的扫码支付服务,则服务调用对象可以为调用扫码支付服务的商户。
其中,目标对象名单为按照服务调用对象分批进行服务数据迁移时,针对不同批次所设置的对象名单,该对象名单中包括不同批次的服务调用对象。作为示例,目标服务可以为微信支付提供的扫码支付服务,并且,在对动态码数据进行迁移时,可以按照商户分批进行,因此,在该示例中,目标对象名单中可以包括不同迁移批次的商户,也即,目标对象名单可以为不同迁移批次的商户白名单。
在确定服务调用请求的服务调用对象后,即可通过将该服务调用对象与目标对象名单进行比对,以得到比对结果。例如,比对结果可以为该服务调用对象是否为当前迁移批次的服务调用对象。作为示例,目标服务可以是微信支付提供的扫码支付服务,通过对服务调用请求进行解析,确定发送该服务调用请求的服务调用对象为商户A,则可以通过将商户A与目标对象名单进行对比,以确定商户A是否为属于当前迁移批次的商户。
进一步地,在得到比对结果后,即可根据比对结果,确定原始数据的迁移属性,以得到原始数据的迁移属性信息。在上述例子中,若比对结果为商户A属于当前迁移批次的商户,则可以确定原始数据当前的迁移属性为属于迁移中数据,迁移属性信息为3;若比对结果为商户A不属于任意迁移批次的商户,则可以确定原始数据当前的迁移属性为不属于待迁移数据,迁移属性信息为1;若比对结果为商户A不属于当前迁移批次但属于历史迁移批次,则可以确定原始数据当前的迁移属性为属于迁移后数据,迁移属性信息为4;若比对结果为商户A不属于当前迁移批次但属于未来迁移批次,则可以确定原始数据当前的迁移属性为属于待迁移数据,迁移属性信息为2。
在一实施例中,参考图6,该图描述的是对扫码支付业务中的动态码数据进行迁移的过程。其中,接入业务模块可以获取服务调用请求,该服务调用请求可以携带调用支付码业务所需的长码。接入业务模块可以对该服务调用请求进行解析,以确定发送该服务调用请求的服务调用对象,即确定发送该服务调用请求的商户。并且,接入业务模块可以将该商户与目标对象名单进行比对,得到比对结果。若比对结果为该商户属于当前迁移批次的商户,则可以确定长码当前的迁移属性为属于迁移中数据,迁移属性信息为3;若比对结果为该商户不属于任意迁移批次的商户,则可以确定长码当前的迁移属性为不属于待迁移数据,迁移属性信息为1;若比对结果为该商户不属于当前迁移批次但属于历史迁移批次,则可以确定长码当前的迁移属性为属于迁移后数据,迁移属性信息为4;若比对结果为该商户不属于当前迁移批次但属于未来迁移批次,则可以确定长码当前的迁移属性为属于待迁移数据,迁移属性信息为2。
要生成与原始数据具有映射关系的目标映射数据,除了需要确定原始数据的迁移属性信息外,还需基于原始数据生成第一映射数据,其中,该第一映射数据与该原始数据对应。
其中,第一映射数据为与原始数据对应的映射数据。例如,第一映射数据可以为根据原始数据映射生成的数据,这样的话,第一映射数据与原始数据对应。
其中,生成原始数据对应的第一映射数据的方式可以有多种,例如,可以通过随机生成;又如,可以通过哈希映射生成;等等。
在一实施例中,参考图6,当接入业务模块将商户与目标对象名单进行比对,得到比对结果为该商户属于当前迁移批次的商户时,也即该商户的商户账号(IdentityDocument,ID)命中预设的灰度商户id时,即可通过服务数据迁移***中的sessionao模块来生成长码对应的第一映射数据。具体地,sessionao模块可以通过生成随机数来生成第一映射数据,例如,可以生成7字节长度的随机数,并将该生成的随机数确定为该长码的第一映射数据。这样的话,通过使用灰度控制开关,按照商户来逐步灰度,可以将服务数据迁移期间的风险收敛在一定范围内。
值得注意的是,生成随机数的方式可以有多种,例如,可以调用随机数生成函数得到来生成随机数,又如,可以将原始数据作为输入,通过哈希算法来生成随机数;等等。因此,生成原始数据对应的第一映射数据的方式可以有多种,本申请不对此作限制。
对于步骤“生成与原始数据具有映射关系的目标映射数据”,在确定原始数据的迁移属性信息,并生成原始数据对应的第一映射数据后,即可将迁移属性信息注入第一映射数据,得到与原始数据具有映射关系的目标映射数据。
其中,将迁移属性信息注入第一映射数据的方式可以有多种,例如,可以基于迁移属性信息生成原始数据的第二映射数据,并通过将第二映射数据注入第一映射数据来实现。具体地,步骤“将迁移属性信息注入第一映射数据,得到与原始数据具有映射关系的目标映射数据”,可以包括:
基于迁移属性信息生成第二映射数据,其中,该第二映射数据与该迁移属性信息对应;
确定第一映射数据与第二映射数据之间的关联关系;
根据关联关系,将第二映射数据注入第一映射数据,得到与原始数据具有映射关系的目标映射数据。
其中,第二映射数据为与迁移属性信息对应的映射数据。例如,第二映射数据可以为根据迁移属性信息生成的数据,这样的话,第二映射数据与迁移属性信息对应。
其中,生成第二映射数据的方式可以有多种,例如,可以通过随机生成;又如,可以通过哈希映射生成;又如,可以基于业务需求进行设置;等等。
在一实施例中,参考图6,接入业务模块可以通过对服务调用请求解析,确定发送该服务调用请求的商户,并将该商户与目标对象名单进行比对,确定该商户为属于当前迁移批次的商户时,可以确定长码的迁移属性为迁移中数据,迁移属性信息为3。在该实施例中,可以基于业务需求,将该迁移属性信息对应的第二映射数据设置为“zz”。也即,对于任何原始数据,若其迁移属性为迁移中数据,迁移属性信息为3,则该迁移属性信息对应的第二映射数据都为“zz”。
其中,关联关系为描述第一映射数据与第二映射数据之间相互关联的关系。该关联关系可以用于确定如何基于第一映射数据与第二映射数据来生成目标映射数据,具体地,可以用于如何将第二映射数据注入第一映射数据,以得到与原始数据具有映射关系的目标映射数据。例如,关联关系可以包括级联,位计算等。
其中,级联为常见的连接方式,将第一个***的输出作为第二个***的输入,即可将第一个***与第二个***级联。因此,当第一映射数据与第二映射数据之间的关联关系为级联时,可以通过将第二映射数据与第一映射数据进行连接,以实现将第二映射数据注入第一映射数据中,得到目标映射数据。
作为示例,原始数据的第一映射数据可以为“57428556”,第二映射数据可以为“zz”,并且,第一映射数据与第二映射数据之间的关联关系为级联时,可以通过将第二映射数据与第一映射数据进行连接,譬如,将第二映射数据置于第一映射数据的开头,得到目标映射数据为“zz57428556”;又如,可以将第二映射数据置于第一映射数据的结尾,得到目标映射数据为“57428556zz”。
确定第一映射数据与第二映射数据之间的关联关系后,即可根据该关联关系,将第二映射数据注入第一映射数据,得到与原始数据具有映射关系的目标映射数据。
在一实施例中,参考图6,服务数据迁移***中的sessionao模块可以生成7字节长度的随机数,并将该生成的随机数确定为原始数据的第一映射数据。此外,sessionao模块在确定原始数据的迁移属性为迁移中数据,迁移属性信息为3后,可以确定与该迁移属性信息对应的第二映射数据为“zz”,并通过将第二映射数据置于第一映射数据的结尾,来将第二映射数据与第一映射数据级联,从而实现将第二映射数据注入第一映射数据中,得到目标映射数据。参考图6,目标映射数据即为由7字节短码key与“zz”级联后得到的短码。
值得注意的是,将第二映射数据注入第一映射数据的方式,与第一映射数据与第二映射数据之间的关联关系有关,而关联关系可以基于业务需求进行设置,因此,本申请不对注入方式作限制。
103、通过源数据库与目标数据库,对目标映射数据进行数据校验。
其中,数据校验用于确定目标映射数据的合法性,具体地,由于在对服务数据进行迁移时,除了要完成迁移的任务以外,还需要如常地向用户提供服务。因此,对目标映射数据进行数据校验,有助于确定目标映射数据是否为合法数据,这样的话,在对服务数据进行迁移的过程中,既有利于确保了迁移任务的完成,又保证了目标服务能够提供给用户可靠的服务,使得数据迁移的过程对目标服务的使用用户而言是无感知的。如此,可以对服务数据迁移的用户、以及目标服务的使用用户,均提供最好的用户体验。
通过源数据库与目标数据库,对目标映射数据进行数据校验的方式可以有多种,例如,可以通过在源数据库与目标数据库中对目标映射数据进行查询实现,其中,若查询后确定目标映射数据存在于数据库中,则可以确定目标映射数据是该数据库的合法写入数据,因此,可以借由数据查询操作来对目标映射数据进行数据校验。具体地,步骤“通过源数据库与目标数据库,对目标映射数据进行数据校验”,可以包括:
基于目标映射数据,分别在源数据库与目标数据库进行数据查询操作,得到源数据库对应的第一查询结果、以及目标数据库对应的第二查询结果;
根据第一查询结果与第二查询结果,对目标映射数据进行数据校验。
其中,数据查询操作用于在数据库中进行查询,以检索出满足条件的数据信息,例如,可以在源数据库对目标映射数据进行数据查询操作,又如,可以在目标数据库对目标映射数据进行数据查询操作。
其中,第一查询结果可以确定源数据库中是否存在目标映射数据,以及目标映射数据在源数据库中的状态信息,如存入时间,读取记录,是否失效等。
类似地,第二查询结果可以确定目标数据库中是否存在目标映射数据,以及目标映射数据在目标数据库中的状态信息,如存入时间,读取记录,是否失效等。
在一实施例中,参考图6,服务数据迁移***的sessionao模块,可以在生成目标映射数据,即短码后,在源数据库mmpayticket查询该短码,得到第一查询结果,并在目标数据库sessionkv中查询该短码,得到第二查询结果。值得注意的是,本申请中,不限制在源数据库中进行数据查询操作与在目标数据库中进行数据查询操作的先后顺序。
在得到第一查询结果与第二查询结果后,即可根据第一查询结果与第二查询结果,对目标映射数据进行数据校验。具体地,步骤“根据第一查询结果与第二查询结果,对目标映射数据进行数据校验”,可以包括:
若第一查询结果失效,基于第二查询结果对目标映射数据进行数据校验;
若第一查询结果有效,基于第一查询结果对目标映射数据进行数据校验。
由于第一查询结果与源数据库对应,第二查询结果与目标数据库对应,且源数据库为目标服务存储服务数据的原始数据库,而目标数据库为目标服务进行服务数据迁移“终点”数据库,因此,根据第一查询结果与第二查询结果,对目标映射数据进行数据校验时,可能存在多种情况,以下分别阐述:
情况1:第一查询结果失效。其中,第一查询结果失效即为源数据库无法基于目标映射数据执行数据查询操作,导致第一查询结果无效。例如,由于技术原因导致源数据库无法响应,导致第一查询结果失效。
若第一查询结果失效,即目标服务的原始数据库无法执行数据查询操作,但在此期间目标服务仍要对用户提供服务,因此,可以基于第二查询结果对目标映射数据进行数据校验,以使得数据迁移期间目标服务仍然可以对用户提供服务。
基于第二查询结果对目标映射数据进行数据校验的方式可以有多种,例如,若第二查询结果为查询通过,则确定目标映射数据校验通过,否则,则确定目标映射数据校验未通过。
情况2:第一查询结果有效。其中,第一查询结果有效即为源数据库能够基于目标映射数据执行数据查询操作,这样的话,第一查询结果有效。例如,源数据库正常工作,可以对目标映射数据的数据查询请求进行响应,则第一查询结果有效。
值得注意的是,第一查询结果有效的情况也包括多种可能情形:
情况2.1:第一查询结果有效,且第二查询结果无效。
其中,第二查询结果无效即为目标数据库无法基于目标映射数据执行数据查询操作,导致第二查询结果无效。例如,在支付码业务的示例中,目标数据库的sessionkv模块读写逻辑可能存在漏洞,导致目标数据库无法响应,从而使得第二查询结果失效。对于这种情况,由于仅第一查询结果有效,因此,需要基于第一查询结果对目标映射数据进行数据校验,来确定目标映射数据的数据校验结果。
情况2.2:第一查询结果有效,且第二查询结果有效。
对于情况2.2,还包括两种可能的情形:
情况2.1.1:第一查询结果与第二查询结果一致。
情况2.1.2:第一查询结果与第二查询结果不一致。
对于情况2.1.1,由于第一查询结果与第二查询结果一致,因此,基于第一查询结果对目标映射数据进行数据校验,即为基于第二查询结果对目标映射数据进行数据校验。
对于情况2.1.2,由于源数据库为目标服务的原始数据库,因此,在目标数据库与源数据库的查询结果不一致时,基于源数据库的第一查询结果来确定目标映射数据的数据校验结果,可以确保目标服务无误。
类似地,基于第一查询结果对目标映射数据进行数据校验的方式还可以有多种,例如,若第一查询结果为查询通过,则确定目标映射数据校验通过,否则,则确定目标映射数据校验未通过;等等。
在一实施例中,参考图6,服务数据迁移***中的sessionao模块可以根据短码在源数据库mmpayticket中的第一查询结果,与短码在目标数据库sessionkv中的第二查询结果,来对短码进行数据校验。具体地,若第一查询结果与第二查询结果不一致,则以第一查询结果为准;若由于源数据库mmpayticket失效导致第一查询结果失效,则以目标数据库sessionkv的第二查询结果为准。
由于本申请是通过源数据库与目标数据库,来对目标映射数据进行数据校验的,例如,通过分别在源数据库与目标数据库进行数据查询操作,以确定目标映射数据的数据校验结果,因此,在数据迁移过程中,既读了源数据库又读了目标数据库。除了双读策略以外,还会比对新旧***的行为,例如,比对源数据库的第一查询结果与目标数据库的第二查询结果。通过双读策略与新旧比对策略,能够保障目标服务在迁移期间仍旧可以平稳地提供服务,并且,对于新***数据异常的情况,例如,第二查询结果无效,可以自动校正。
104、当目标映射数据校验通过时,基于该目标映射数据,对服务调用请求进行服务响应。
其中,服务为对程序或用户给予功能支持或业务辅助的一种应用类型,因此,服务响应即为目标服务对程序或用户给予功能支持或业务辅助。
作为示例,在微信支付所提供的支付码业务中,服务调用请求可以为由商户发送的且携带长码的请求,该服务调用请求可以用于请求支付码业务生成该长码对应的短码,以使得商户可以根据该短码生成支付码展示给用户,供用户扫码支付。则支付码服务的服务响应可以为生成长码对应的短码,并在数据库中记录该长码与该短码,并将该短码返回给商户。
在一实施例中,目标映射数据可以设置有时效属性,其中,时效指在一定时期内能够发生的效用,因此,目标映射数据的时效属性,描述的是目标映射数据在一定时期内能够发生效用的属性。
作为示例,在微信支付所提供的支付码业务中,目标映射数据可以为支付码对应的短码,支付码具体可以以二维码的形式存在,而二维码可以包括有动态码与静态码两种,其中,动态码与静态码均具有对应的时效属性。对于动态码,商户生成的二维码有效期只有2小时,过期后,需要重新生成新的码供用户扫码支付;对于静态码,商户生成的二维码有效期为30天,且期间有用户支付,会不断的续满30天,一般的,只要该二维码有用户扫码,理论上可以一直实现支付功能。
又如,在身份证查询业务中,目标映射数据可以为用户所要查询的身份证信息,区别于支付码的有限时效,该目标映射数据的时效属性可以设置为长期有效。
因此,目标映射数据在数据库中可以设置有时效属性,则具体地,步骤“当目标映射数据校验通过时,基于该目标映射数据,对服务调用请求进行服务响应”,可以包括:
当目标映射数据校验通过时,更新该目标映射数据的时效属性;
基于更新结果与目标映射数据,生成服务调用请求的响应数据;
向服务调用请求的服务调用对象发送响应数据,以对服务调用请求进行服务响应。
其中,更新目标映射数据的时效属性,可以包括有多种情况。例如,可以包括刷新与修改,具体地,刷新为不修改目标映射数据的时效属性,仅是读取目标映射数据在数据库中当前的时效属性信息;而修改可以包括重置,例如,增加或者减小目标映射数据在数据库中的时效,等等。
在一实施例中,目标服务为微信支付所提供的支付码业务为例,目标映射数据可以为动态码对应的短码,当该短码校验通过时,可以在源数据库mmpayticket与目标数据库sessionkv中均将该短码的时效属性设置为2小时。
在将目标映射数据的时效属性更新后,即可基于更新结果与目标映射数据,生成服务调用请求的响应数据,并通过向服务调用请求的服务调用对象发送响应数据,以对服务调用请求进行服务响应。
在一实施例中,目标映射数据可以为动态码对应的短码,当在源数据库mmpayticket或目标数据库sessionkv中该短码的时效属性成功更新后,可以生成服务调用请求的响应数据,其中,该响应数据中携带目标映射数据。目标服务可以向服务调用请求的服务调用对象,例如商户,发送生成的响应数据,以对商户的服务调用请求进行服务响应。
105、分别在源数据库与目标数据库,对原始数据与目标映射数据执行数据写入操作,以将目标服务的服务数据迁移至目标数据库。
其中,数据写入操作为数据库访问方式的一种,可以用于将数据写入数据库中。
值得注意的是,在本申请中,不对在源数据库执行数据写入操作,与在目标数据库执行数据写入操作的先后顺序做限制。
由于本申请是通过在源数据库与目标数据库中,均对原始数据与目标映射数据执行数据写入操作,来实现将目标服务的服务数据迁移至目标数据的,而不是仅在目标数据库执行数据写入操作。这样的话,通过双写策略(双写指既写源数据库,又写目标数据库),可以在目标服务的新***(目标服务的新***为由目标数据库担任存储模块的***,类似地,目标服务的旧***为由源数据库担任存储模块的***)存在故障时,能够无损回退到旧版本,有利于支持目标服务在服务数据迁移期间的稳定性。
其中,对原始数据与目标映射数据执行数据写入操作的方式可以有多种,例如,可以基于原始数据与目标映射数据,生成待写入数据,并通过分别在源数据库与目标数据库对待写入数据执行数据写入操作来实现,具体地,步骤“分别在源数据库与目标数据库,对原始数据与目标映射数据执行数据写入操作,以将目标服务的服务数据迁移至目标数据库”,可以包括:
基于原始数据与目标映射数据,生成待写入数据;
分别在源数据库与目标数据库,对待写入数据执行数据写入操作,得到源数据库对应的第一写入结果、以及目标数据库对应的第二写入结果;
根据第一写入结果与第二写入结果,确定待写入数据的数据迁移结果。
其中,生成待写入数据的方式可以有多种,例如,可以根据原始数据与目标映射数据之间的映射来生成。譬如,可以根据从原始数据指向目标映射数据的映射生成待写入数据;又如,可以根据从目标映射数据指向原始数据的映射生成待写入数据,等等。
在一实施例中,参考图6,可以根据短码指向长码的映射,生成待写入数据。在实际应用中,也可以根据长码指向短码的映射,生成待写入数据。
在生成待写入数据后,即可分别在源数据库与目标数据库,对待写入数据执行数据写入操作,得到源数据库对应的第一写入结果、以及目标数据库对应的第二写入结果。在一实施例中,参考图6,可以分别在源数据库mmpayticket与目标数据库的sessionkv模块中写入短码指向长码的映射。在实际应用中,也可以通过在数据库中写入长码指向短码的映射来实现。
根据第一写入结果与第二写入结果,确定待写入数据的数据迁移结果的方式可以有多种,具体地,可以分以下几种情况进行讨论。
情况1:第一写入结果无效,并且,第二写入结果有效或无效。其中,第一写入结果无效即为源数据库未成功对原始数据与目标映射数据执行数据写入操作。
情况2:第一写入结果有效,并且,第二写入结果有效或无效。其中,第一写入结果有效即为源数据库成功对原始数据与目标映射数据执行数据写入操作。
在确定如何根据第一写入结果与第二写入结果,确定待写入数据的数据迁移结果时,存在以下两方面的考虑:一来,服务数据迁移是分批次或者分阶段的,而非一蹴而就的,因此,可能存在用户调用的是旧版本***的数据读取流程,而非新版本***的数据读取流程的情况;二来,目标数据库为新版本***的存储模块,因此,可能存在新版本***存在故障的情况。
因此,考虑到上述两方面问题,根据第一写入结果与第二写入结果,确定待写入数据的数据迁移结果的方式可以有多种,例如,可以优先以第一写入结果为准,也即,对于情况1,则根据第二写入结果确定待写入数据的数据迁移结果;对于情况2,则根据第一写入结果确定待写入数据的数据迁移结果。
又如,可以仅以第一写入结果为准,例如,参考图6,服务数据迁移***的sessionao模块分别在源数据库mmpayticket与目标数据库的sessionkv模块,对由从短码指向长码的映射构成的待写入数据,执行数据写入操作,可以得到源数据库mmpayticket对应的第一写入结果、以及目标数据库sessionkv对应的第二写入结果。并且,可以仅以源数据库mmpayticket对应的第一写入结果为准,来确定待写入数据的数据迁移结果。这样的话,通过双写策略,使得即使在服务数据迁移期间,出现了用户调用的是旧版本***的数据读取流程,而非新版本***的数据读取流程的情况,该用户也能从源数据库mmpayticket读取数据;另一方面,如果新版本***的存储模块,也即目标数据库sessionkv模块有故障,目标服务也能通过回退***读到源数据库mmpayticket的数据。
在本申请中,对目标服务进行服务数据迁移,除了要实现将服务数据从源数据库迁移到目标数据库以外,还要保障目标服务能够在数据迁移期间、以及数据迁移后依旧向用户提供服务。
考虑在实际应用中,将服务数据写入数据库、以及读取写入后的服务数据是服务向用户提供的常见功能,因此,在本申请中,目标服务除了可以通过双读双写策略,对原始数据及目标映射数据执行数据校验及写入操作,以实现平滑地迁移服务数据以外,还可以在目标服务处于服务数据迁移期间时,向用户提供针对服务数据的数据查询功能,具体地,服务数据迁移方法,还可以包括:
获取目标服务的数据查询请求,其中,该数据查询请求包括待查询的映射数据;
对待查询映射数据进行解析,得到待查询映射数据携带的迁移属性信息;
基于迁移属性信息,通过源数据库与目标数据库,对待查询映射数据进行数据查询操作,得到第三查询结果;
基于第三查询结果,对数据查询请求进行响应。
其中,数据查询请求用于请求目标服务进行数据查询,具体地,数据查询请求用于请求目标服务对待查询的映射数据进行查询。
其中,待查询的映射数据为基于原始数据生成的,与该原始数据具有映射关系的数据。
作为示例,目标服务可以为微信支付所提供的扫码支付业务,其中,原始数据可以为生成静态码所需的长码,则待查询的映射数据可以为该长码对应的短码,该短码可以用于供商户生成静态码以供用户扫码支付;又如,原始数据可以为生成动态码所需的长码,则待查询的映射数据可以为该长码对应的短码,该短码可以用于供商户生成动态码以供用户扫码支付。
在另一示例中,目标服务可以为用户信息查询业务,其中,原始数据可以包括用户的原始生物特征数据,例如原始脸部图像,原始指纹图像,原始声音数据等。与原始数据具有映射关系的目标映射数据可以为对原始生物特征数据进行处理后得到的数据,例如,目标映射数据可以对应地包括该用户的脸部特征向量,指纹特征向量,声音特征向量等。因此,在该实施例中,待查询的映射数据可以为用户的脸部特征向量,指纹特征向量,声音特征向量等。
在一实施例中,参考图7,服务数据迁移***中的接入业务模块可以获取目标服务的数据查询请求,其中,该数据查询请求包括待查询的短码,该短码用于查询与其具有映射关系的长码。
进一步地,可以对待查询映射数据进行解析,得到待查询映射数据携带的迁移属性信息。
对待查询映射数据进行解析,以确定待查询映射数据携带的迁移属性信息的方式可以有多种。在一实施例中,可以从待查询映射数据中解析出第一映射数据与第二映射数据,其中,第一映射数据与待查询映射数据的原始数据对应,第二映射数据与原始数据的迁移属性信息对应。
其中,迁移属性信息为用于表征迁移属性的信息,迁移属性信息的形式可以有多种,例如,可以为对不同的迁移属性所对应设置的标识,譬如,可以用1表示迁移属性为不属于待迁移数据,用2表示迁移属性为属于待迁移数据,用3表示迁移属性为属于迁移中数据,用4表示迁移属性为属于迁移后数据;等等。
在确定待查询映射数据的迁移属性信息后,即可基于该迁移属性信息,对待查询映射数据进行数据查询操作。由于服务数据迁移的过程,可以是分批进行,例如,按照服务调用对象分批进行的,因此,具体地,步骤“基于迁移属性信息,通过源数据库与目标数据库,对待查询映射数据进行数据查询操作,得到第三查询结果”,可以包括:
确定发送数据查询请求的数据查询对象;
基于数据查询对象与迁移属性信息,从源数据库与目标数据库中确定待查询映射数据的目标查询数据库;
通过目标查询数据库对待查询映射数据进行数据查询操作,得到第三查询结果。
由于对目标服务进行服务数据迁移的过程可以为分批次或分阶段进行,例如,可以按照服务请求对象分批进行。值得注意的是,数据查询也为调用目标服务的一种,因此,服务请求对象可以包括发送数据查询请求的数据查询对象。
在一实施例中,可以采取分批迁移的策略对目标服务进行服务数据迁移,例如,目标服务可以包括有3个迁移批次,其中,迁移批次1包括的服务调用对象为对象A、对象B、对象C;迁移批次2包括的服务调用对象为对象D、对象E;迁移批次3包括的服务调用对象为对象F、对象G、对象H。
因此,确定发送数据查询请求的数据查询对象后,即可确定该数据查询对象所属的目标迁移批次。进一步地,可以通过确定该目标迁移批次是还未进行迁移,或者处于迁移当中,或者已经迁移完成,来确定待查询映射数据的目标查询数据库。
而确定目标迁移批次当前是还未进行迁移,或者处于迁移当中,或者已经迁移完成的方式可以有多种,例如,可以结合待查询映射数据携带的迁移属性信息,与发送数据查询请求的数据查询对象来确定。
其中,待查询映射数据携带的迁移属性信息,可以通过待查询映射数据的第二映射数据反映,因此,可以确定待查询映射数据是否属于未迁移的服务数据。
作为示例,待查询映射数据可以为动态码对应的短码,并且,可以从该短码中解析出与迁移属性信息对应的第二映射数据“zz”,因此,可以反映该短码为处于迁移当中的服务数据,或者为迁移完成后的服务数据;否则,可以反映该短码为未迁移的服务数据。
进一步地,若待查询映射数据不属于未迁移的服务数据,可以结合发送数据查询请求的数据查询对象,来确定待查询映射数据为迁移当中的服务数据,还是迁移完成的服务数据。
在一实施例中,目标服务可以设置有配置文件,其中,该配置文件中可以记录有目标服务的当前迁移进展,例如,当前迁移批次。这样的话,可以通过将发送数据查询请求的数据查询对象与目标服务的当前迁移进展进行匹配,来确定待查询映射数据所属的迁移批次是还未进行迁移,或者处于迁移当中,或者已经迁移完成。这样的话,便可以从源数据库与目标数据库中确定待查询映射数据的目标查询数据库。值得注意的是,在实际应用中,参考图7,还可以基于业务需求设置预设条件,以进一步确定待查询预设数据的是否为处于迁移当中的服务数据。
具体地,若该迁移批次已经迁移完成,代表该迁移批次对应的服务数据已经成功从源数据库迁移至目标数据库,因此,待查询数据的目标查询数据库应为目标数据库。若该迁移批次还未进行迁移,代表该迁移批次对应的服务数据仍然存储在源数据库中,因此,待查询数据的目标查询数据库应为源数据库。而若该迁移批次为迁移当中,由于本申请采取的是双读双写的策略,因此,待查询数据的目标查询数据库可以包括源数据库与目标数据库。
进一步地,在确定待查询映射数据的目标查询数据库后,即可通过目标查询数据库对待查询映射数据进行数据查询操作,得到第三查询结果。在一实施例中,参考图7,待查询映射数据为短码,并且,该短码的目标查询数据库为源数据库mmpayticket与目标数据库中的sessionkv模块。服务数据迁移***可以通过源数据库mmpayticket与目标数据库中的sessionkv模块对该短码进行数据查询操作,得到第三查询结果,其中,该第三查询结果中包括源数据库mmpayticket对应的查询结果、基于目标数据库sessionkv对应的查询结果。
值得注意的是,若待查询映射数据的目标查询数据库仅为源数据库,则第三查询结果中仅包括源数据库对应的查询结果,因此,可以根据源数据库对应的查询结果确定待查询映射数据的第三查询结果。类似地,若待查询映射数据的目标查询数据库仅为目标数据库,则第三查询结果中仅包括目标数据库对应的查询结果,因此,可以根据目标数据库对应的查询结果确定待查询映射数据的第三查询结果。
而若待查询映射数据的目标查询数据库包括源数据库与目标数据库,则第三查询结果中包括源数据库对应的查询结果(以下简称:源查询结果)与目标数据库对应的目标查询结果(以下简称:目标查询结果),因此,可以根据源查询结果与目标查询结果来确定第三查询结果。
根据源查询结果与目标查询结果确定第三查询结果的方式可以有多种,例如,以下将对图7所示的实现方式具体展开:
1)若源查询结果为查询失败,由于无法判断源数据库与目标数据库中存储是否一致,因此,可以确定第三查询结果为查询失败;
2)若目标查询结果为查询失败,由于目标数据库为目标服务的新存储模块,因此,可能存在目标数据库的读写逻辑的稳定性不如旧数据库(即源数据库)的情况,这样的话,可以以源查询结果为准来确定第三查询挤过,不影响业务;
3)若源查询结果与目标查询结果都正常返回,且两者结果不一致:
3.1)若源查询结果与目标查询结果均为:数据库中不存在待查询映射数据,则确定第三查询结果为:数据库中不存在待查询映射数据;
3.2)若仅源查询结果为:数据库中存在待查询映射数据,则第三查询结果以源查询结果为准;
3.3)若仅目标查询结果为:数据库中存在待查询映射数据,则第三查询结果以目标查询结果为准;
3.4)若源查询结果与目标查询结果均为:数据库中存在待查询映射数据,则第三查询结果以源查询结果为准;
这样的话,通过设计双读策略,能够应对目标服务新老***出错、失效、数据丢失、写脏等常见,也能自我纠错并告警,供服务负责人排查定位,即使目标服务的目标数据库的读写逻辑可能存在问题,也可以确保目标服务能够提供稳定可靠的服务。
进一步地,在确定待查询映射数据的第三查询结果后,即可基于第三查询结果对数据查询请求进行响应,例如,可以基于该第三查询结果,生成数据查询请求的响应数据,并通过向数据查询请求的数据查询对象发送该响应数据,来对该数据查询请求进行响应。
在实际应用中,待查询映射数据可以设置有时效属性,因此,在执行基于第三查询结果,对数据查询请求进行响应时,还可以对待查询映射数据的时效属性进行更新,具体地,步骤“基于第三查询结果,对数据查询请求进行响应”,可以包括:
基于第三查询结果,更新待查询映射数据的时效属性;
基于更新结果与第三查询结果,生成数据查询请求的响应数据;
向数据查询请求的数据查询对象发送响应数据,以对该数据查询请求进行响应。
其中,时效指在一定时期内能够发生的效用,因此,待查询映射数据的时效属性,描述的是待查询映射数据在一定时期内能够发生效用的属性。
作为示例,在微信支付所提供的支付码业务中,待查询映射数据可以为支付码对应的短码,支付码可以以二维码的形式存在,而二维码可以包括有动态码与静态码两种,其中,动态码与静态码均具有对应的时效属性。对于动态码,商户生成的二维码有效期只有2小时,过期后,需要重新生成新的码供用户扫码支付;对于静态码,商户生成的二维码有效期为30天,且期间有用户支付,会不断的续满30天,一般的,只要该二维码有用户扫码,理论上可以一直实现支付功能。
基于第三查询结果,更新待查询映射数据的时效属性的方式可以有多种,例如,若第三查询结果为存在,则更新待查询映射数据的时效属性;若第三查询结果为不存在,则不更新待查询映射数据的时效属性。
其中,更新待查询映射数据的时效属性,可以包括有多种情况。例如,可以包括刷新与修改,具体地,刷新为不修改待查询映射数据的时效属性,仅是读取待查询映射数据在数据库中当前的时效属性信息;而修改可以包括重置,例如增加或者减小待查询映射数据在数据库中的时效,等等。
进一步地,可以基于更新结果与第三查询结果,生成数据查询请求的响应数据,并向数据查询请求的数据查询对象发送响应数据,以对该数据查询请求进行响应。
在一实施例中,目标服务可以为微信支付提供的支付码服务,目标服务获取的数据查询请求中,可以包括待查询的映射数据,其中,该待查询映射数据可以为静态码对应的短码。目标服务可以通过源数据库与目标数据库,对该短码进行数据查询操作,得到第三查询结果。若该第三查询结果为存在,则可以更新该短码的时效属性,具体地,可以将该短码的时效属性重置为30天。进一步地,若更新成功,目标服务可以生成该数据查询请求的响应数据,并通过向该数据查询请求的商户发送该响应数据,以对该数据查询请求进行响应。
由上可知,本实施例可以获取目标服务的服务调用请求,其中,所述服务调用请求携带调用所述目标服务所需的原始数据,所述目标服务具有进行服务数据迁移所需的源数据库与目标数据库;生成与所述原始数据具有映射关系的目标映射数据;通过所述源数据库与所述目标数据库,对所述目标映射数据进行数据校验;当所述目标映射数据校验通过时,基于所述目标映射数据,对所述服务调用请求进行服务响应;分别在所述源数据库与所述目标数据库,对所述原始数据与所述目标映射数据执行数据写入操作,以将所述目标服务的服务数据迁移至所述目标数据库。
该方案在对服务数据进行迁移的过程中,仍然可以获取目标服务的服务调用请求并对该服务调用请求进行服务响应,因此,通过该方案迁移服务数据时无需停机停服,且在数据迁移期间仍可对用户提供服务,可以实现对服务无损且用户无感知。并且,该方案在进行迁移期间的数据校验时,是通过既读源数据库又读目标数据库的双读策略实现的,这样的话,有利于自动比对目标服务的新旧***之间的行为,并自动校正新***数据异常,提高了发现目标服务的新版本软件所存在问题的效率。此外,该方案在迁移期间写入数据时,是通过既写源数据库又写目标数据库的双写策略实现的,这样的话,在新***存在故障时,能无损回退到老版本,提高了应对变更异常情况的处理能力。另外,该方案有助于使得软件升级或重构更好地进行,例如,可以通过该方案将目标服务中不同模块的存储数据拆分,并将目标存储数据迁移到独立的存储,有利于简化后续分区架构升级。
根据上面实施例所描述的方法,以下将举例进一步详细说明。
在本实施例中,将以服务数据迁移装置集成在服务器与终端为例进行说明,该服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群;该终端可以为手机、平板电脑、笔记本电脑等设备。
如图8所示,一种服务数据迁移方法,具体流程如下:
201、服务器获取目标服务的服务调用请求,其中,服务调用请求携带调用目标服务所需的原始数据,目标服务具有进行服务数据迁移所需的源数据库与目标数据库。
在一实施例中,目标服务可以为微信支付所提供的动态码服务,服务器可以获取由商户发送的目标服务的服务调用请求,其中,该服务调用请求携带调用该目标服务所需的长码,参考图6,该目标服务具有进行服务数据迁移所需的源数据库mmpayticket与目标数据库。其中,该目标服务的目标数据库可以包括sessionao模块与sessionkv模块,sessionao模块可以用于封装生成短码的相关逻辑,sessionkv模块可以用于存储动态码数据。
202、服务器生成与原始数据具有映射关系的目标映射数据。
在一实施例中,参考图6,当发送服务调用请求的商户的id命中灰度商户id时,服务器可以通过sessionao模块生成7字节长度的随机数,并将该生成的随机数确定为长码的第一映射数据,其中,该第一映射数据可以与长码对应。此外,服务器可以生成长码的第二映射数据“zz”,其中,该第二映射数据可以与长啊的迁移属性信息对应。
进一步地,参考图6,服务器可以根据第一映射数据与第二映射数据,生成长码的目标映射数据,该目标映射数据由7字节长度的随机数短码与“zz”构成。
203、服务器通过源数据库与目标数据库,对目标映射数据进行数据校验。
在一实施例中,参考图6,服务器可以通过在源数据库mmpayticket与目标数据库sessionkv中对生成的短码执行数据查询操作,以实现对该短码进行数据校验。
204、当目标映射数据校验通过时,服务器基于目标映射数据,对服务调用请求进行服务响应。
在一实施例中,当对短码的数据校验通过时,服务器可以通过将生成的短码返回给调用目标服务的商户,来对商户的服务调用请求进行服务响应。
205、服务器分别在源数据库与目标数据库,对原始数据与目标映射数据执行数据写入操作,以将目标服务的服务数据迁移至目标数据库。
在一实施例中,参考图6,服务器可以分别在源数据库mmpayticket与目标数据库sessionkv,对短码指向长码的映射执行数据写入操作,以将目标服务的服务数据迁移至目标数据库sessionkv。
值得注意的是,在本申请中,不对步骤204与步骤205作先后顺序的限制。
206、终端向服务器发送数据查询请求。
在一实施例中,目标服务的用户可以通过终端向服务器发送目标服务的数据查询请求,以触发目标服务向用户提供数据查询服务。例如,微信支付的用户可以通过“扫一扫”动态码对应的支付码,获取对应的短码,并且,用户可以通过终端向微信支付***的服务器发送数据查询请求,来查询该短码对应的交易信息,以使得用户可以进行交易支付。
207、服务器获取目标服务的数据查询请求,其中,数据查询请求包括待查询的映射数据。
在一实施例中,参考图7,微信支付***的服务器可以获取动态码服务的数据查询请求,其中,该数据查询请求包括待查询的短码。
208、服务器对待查询映射数据进行解析,得到待查询映射数据携带的迁移属性信息。
在一实施例中,参考图7,微信支付***的服务器可以对短码进行解析,得到该短码携带的迁移属性信息“zz”,该迁移属性信息可以表征该短码为处于迁移当中或者迁移完成的服务数据。
209、服务器基于迁移属性信息,通过源数据库与目标数据库,对待查询映射数据进行数据查询操作,得到第三查询结果。
在一实施例中,参考图7,微信支付***的服务器可以在源数据库mmpayticket与目标数据库sessionkv中,对短码进行数据查询操作,得到第三查询结果。
210、服务器基于第三查询结果,对数据查询请求进行响应。
在一实施例中,参考图7,若第三查询结果为存在,微信支付***的服务器可以将查询到的长码返回给商户,以使得商户可以根据基于该长码发起对用户的收费请求。若第三查询结果为不存在,微信支付***的服务器可以将该结果范围给商户,以使得商户可以根据该结果向用户反馈。
由上可知,本申请实施例在对服务数据进行迁移的过程中,仍然可以获取目标服务的服务调用请求并对该服务调用请求进行服务响应,因此,通过该方案迁移服务数据时无需停机停服,且在数据迁移期间仍可对用户提供服务,可以实现对服务无损且用户无感知。并且,本申请实施例在进行迁移期间的数据校验时,是通过既读源数据库又读目标数据库的双读策略实现的,这样的话,有利于自动比对目标服务的新旧***之间的行为,并自动校正新***数据异常,提高了发现目标服务的新版本软件所存在问题的效率。此外,本申请实施例在迁移期间写入数据时,是通过既写源数据库又写目标数据库的双写策略实现的,这样的话,在新***存在故障时,能无损回退到老版本,提高了应对变更异常情况的处理能力。另外,该方案有助于使得软件升级或重构更好地进行,例如,可以通过该方案将目标服务中不同模块的存储数据拆分,并将目标存储数据迁移到独立的存储,有利于简化后续分区架构升级。
为了更好地实施以上方法,相应的,本申请实施例还提供一种服务数据迁移装置,其中,该服务数据迁移装置可以集成在服务器或终端中。该服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群;该终端可以为手机、平板电脑、笔记本电脑等设备。
例如,如图9所示,该服务数据迁移装置可以包括第一获取单元301,生成单元302,校验单元303,第一响应单元304以及写入单元305,如下:
第一获取单元301,可以用于获取目标服务的服务调用请求,其中,所述服务调用请求携带调用所述目标服务所需的原始数据,所述目标服务具有进行服务数据迁移所需的源数据库与目标数据库;
生成单元302,可以用于生成与所述原始数据具有映射关系的目标映射数据;
校验单元303,可以用于通过所述源数据库与所述目标数据库,对所述目标映射数据进行数据校验;
第一响应单元304,可以用于当所述目标映射数据校验通过时,基于所述目标映射数据,对所述服务调用请求进行服务响应;
写入单元305,可以用于分别在所述源数据库与所述目标数据库,对所述原始数据与所述目标映射数据执行数据写入操作,以将所述目标服务的服务数据迁移至所述目标数据库。
在一实施例中,参考图10,所述生成单元302,可以包括:
解析子单元3021,可以用于对所述服务调用请求进行解析,以确定所述原始数据的迁移属性信息,其中,所述迁移属性信息表征所述原始数据的迁移属性;
第一映射生成子单元3022,可以用于基于所述原始数据生成第一映射数据,其中,所述第一映射数据与所述原始数据对应;
注入子单元3023,可以用于将所述迁移属性信息注入所述第一映射数据,得到与所述原始数据具有映射关系的目标映射数据。
在一实施例中,所述解析子单元3021,可以用于:
对所述服务调用请求进行解析,以确定发送所述服务调用请求的服务调用对象;将所述服务调用对象与目标对象名单进行比对,得到比对结果;根据所述比对结果,确定所述原始数据的迁移属性,得到所述原始数据的迁移属性信息。
在一实施例中,所述注入子单元3023,可以用于:
基于所述迁移属性信息生成第二映射数据,其中,所述第二映射数据与所述迁移属性信息对应;确定所述第一映射数据与所述第二映射数据之间的关联关系;根据所述关联关系,将所述第二映射数据注入所述第一映射数据,得到与所述原始数据具有映射关系的目标映射数据。
在一实施例中,参考图11,所述校验单元303,可以包括:
第一查询子单元3031,可以用于基于所述目标映射数据,分别在所述源数据库与所述目标数据库进行数据查询操作,得到所述源数据库对应的第一查询结果、以及所述目标数据库对应的第二查询结果;
校验子单元3032,可以用于根据所述第一查询结果与所述第二查询结果,对所述目标映射数据进行数据校验。
在一实施例中,所述校验子单元3032,可以用于:
若所述第一查询结果失效,基于所述第二查询结果对所述目标映射数据进行数据校验;若所述第一查询结果有效,基于所述第一查询结果对所述目标映射数据进行数据校验。
在一实施例中,参考图12,所述目标映射数据设置有时效属性;所述第一响应单元304,可以包括:
第一更新子单元3041,可以用于当所述目标映射数据校验通过时,更新所述目标映射数据的时效属性;
第一响应生成子单元3042,可以用于基于所述更新结果与所述目标映射数据,生成所述服务调用请求的响应数据;
第一发送子单元3043,可以用于向所述服务调用请求的服务调用对象发送所述响应数据,以对所述服务调用请求进行服务响应。
在一实施例中,参考图13,所述写入单元305,可以包括:
数据生成子单元3051,可以用于基于所述原始数据与所述目标映射数据,生成待写入数据;
写入子单元3052,可以用于分别在所述源数据库与所述目标数据库,对所述待写入数据执行数据写入操作,得到所述源数据库对应的第一写入结果、以及所述目标数据库对应的第二写入结果;
结果确定子单元3053,可以用于根据所述第一写入结果与所述第二写入结果,确定所述待写入数据的数据迁移结果。
在一实施例中,参考图14,所述服务数据迁移装置,还可以包括:
第二获取单元306,可以用于获取所述目标服务的数据查询请求,其中,所述数据查询请求包括待查询的映射数据;
解析单元307,可以用于对所述待查询映射数据进行解析,得到所述待查询映射数据携带的迁移属性信息;
查询单元308,可以用于基于所述迁移属性信息,通过所述源数据库与所述目标数据库,对所述待查询映射数据进行数据查询操作,得到第三查询结果;
第二响应单元309,可以用于基于所述第三查询结果,对所述数据查询请求进行响应。
在一实施例中,参考图15,所述查询单元308,可以包括:
对象确定子单元3081,可以用于确定发送所述数据查询请求的数据查询对象;
数据库确定子单元3082,可以用于基于所述数据查询对象与所述迁移属性信息,从所述源数据库与所述目标数据库中确定所述待查询映射数据的目标查询数据库;
第二查询子单元3083,可以用于通过所述目标查询数据库对所述待查询映射数据进行数据查询操作,得到第三查询结果。
在一实施例中,参考图16,所述待查询映射数据设置有时效属性;所述第二响应单元309,可以包括:
第二更新子单元3091,可以用于基于所述第三查询结果,更新所述待查询映射数据的时效属性;
第二响应生成子单元3092,可以用于基于所述更新结果与所述第三查询结果,生成所述数据查询请求的响应数据;
第二发送子单元3093,可以用于向所述数据查询请求的数据查询对象发送所述响应数据,以对所述数据查询请求进行响应。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本实施例的服务数据迁移装置中第一获取单元301获取目标服务的服务调用请求,其中,所述服务调用请求携带调用所述目标服务所需的原始数据,所述目标服务具有进行服务数据迁移所需的源数据库与目标数据库;由生成单元302生成与所述原始数据具有映射关系的目标映射数据;由校验单元303通过所述源数据库与所述目标数据库,对所述目标映射数据进行数据校验;由第一响应单元304当所述目标映射数据校验通过时,基于所述目标映射数据,对所述服务调用请求进行服务响应;由写入单元305分别在所述源数据库与所述目标数据库,对所述原始数据与所述目标映射数据执行数据写入操作,以将所述目标服务的服务数据迁移至所述目标数据库。
该方案在对服务数据进行迁移的过程中,仍然可以获取目标服务的服务调用请求并对该服务调用请求进行服务响应,因此,通过该方案迁移服务数据时无需停机停服,且在数据迁移期间仍可对用户提供服务,可以实现对服务无损且用户无感知。并且,该方案在进行迁移期间的数据校验时,是通过既读源数据库又读目标数据库的双读策略实现的,这样的话,有利于自动比对目标服务的新旧***之间的行为,并自动校正新***数据异常,提高了发现目标服务的新版本软件所存在问题的效率。此外,该方案在迁移期间写入数据时,是通过既写源数据库又写目标数据库的双写策略实现的,这样的话,在新***存在故障时,能无损回退到老版本,提高了应对变更异常情况的处理能力。另外,该方案有助于使得软件升级或重构更好地进行,例如,可以通过该方案将目标服务中不同模块的存储数据拆分,并将目标存储数据迁移到独立的存储,有利于简化后续分区架构升级。
此外,本申请实施例还提供一种计算机设备,该计算机设备可以为服务器或终端等设备,如图17所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括有一个或一个以上计算机可读存储介质的存储器401、包括有一个或者一个以上处理核心的处理器402、以及电源403等部件。本领域技术人员可以理解,图17中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
存储器401可用于存储软件程序以及模块,处理器402通过运行存储在存储器401的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器401可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器401可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器401还可以包括存储器控制器,以提供处理器402和输入单元对存储器401的访问。
处理器402是计算机设备的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器401内的软件程序和/或模块,以及调用存储在存储器401内的数据,执行计算机设备的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器402可包括一个或多个处理核心;优选的,处理器402可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器402中。
计算机设备还包括给各个部件供电的电源403(比如电池),优选的,电源可以通过电源管理***与处理器402逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,计算机设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,计算机设备中的处理器402会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器401中,并由处理器402来运行存储在存储器401中的应用程序,从而实现各种功能,如下:
获取目标服务的服务调用请求,其中,所述服务调用请求携带调用所述目标服务所需的原始数据,所述目标服务具有进行服务数据迁移所需的源数据库与目标数据库;生成与所述原始数据具有映射关系的目标映射数据;通过所述源数据库与所述目标数据库,对所述目标映射数据进行数据校验;当所述目标映射数据校验通过时,基于所述目标映射数据,对所述服务调用请求进行服务响应;分别在所述源数据库与所述目标数据库,对所述原始数据与所述目标映射数据执行数据写入操作,以将所述目标服务的服务数据迁移至所述目标数据库。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,本实施例的计算机设备在对服务数据进行迁移的过程中,仍然可以获取目标服务的服务调用请求并对该服务调用请求进行服务响应,因此,通过该方案迁移服务数据时无需停机停服,且在数据迁移期间仍可对用户提供服务,可以实现对服务无损且用户无感知。并且,本实施例的计算机设备在进行迁移期间的数据校验时,是通过既读源数据库又读目标数据库的双读策略实现的,这样的话,有利于自动比对目标服务的新旧***之间的行为,并自动校正新***数据异常,提高了发现目标服务的新版本软件所存在问题的效率。此外,本实施例的计算机设备在迁移期间写入数据时,是通过既写源数据库又写目标数据库的双写策略实现的,这样的话,在新***存在故障时,能无损回退到老版本,提高了应对变更异常情况的处理能力。另外,该方案有助于使得软件升级或重构更好地进行,例如,可以通过该方案将目标服务中不同模块的存储数据拆分,并将目标存储数据迁移到独立的存储,有利于简化后续分区架构升级。
本申请实施例涉及的***可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式***。
以分布式***为区块链***为例,参见图18,图18 是本申请实施例提供的分布式***100应用于区块链***的一个可选的结构示意图,由多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端形成,节点之间形成组成的点对点(P2P,PeerTo Peer)网络,P2P 协议是一个运行在传输控制协议(TCP,Transmission ControlProtocol )协议之上的应用层协议。在分布式***中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作***层和应用层。
参见图18 示出的区块链***中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链***中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链***中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币;
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链***中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链***中节点提交的记录数据。
参见图19,图19是本申请实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种服务数据迁移方法中的步骤。例如,该指令可以执行如下步骤:
获取目标服务的服务调用请求,其中,所述服务调用请求携带调用所述目标服务所需的原始数据,所述目标服务具有进行服务数据迁移所需的源数据库与目标数据库;生成与所述原始数据具有映射关系的目标映射数据;通过所述源数据库与所述目标数据库,对所述目标映射数据进行数据校验;当所述目标映射数据校验通过时,基于所述目标映射数据,对所述服务调用请求进行服务响应;分别在所述源数据库与所述目标数据库,对所述原始数据与所述目标映射数据执行数据写入操作,以将所述目标服务的服务数据迁移至所述目标数据库。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种服务数据迁移方法中的步骤,因此,可以实现本申请实施例所提供的任一种服务数据迁移方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述服务数据迁移方面的各种可选实现方式中提供的方法。
以上对本申请实施例所提供的一种服务数据迁移方法、装置、计算机设备、存储介质和***进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种服务数据迁移方法,其特征在于,包括:
获取目标服务的服务调用请求,其中,所述服务调用请求携带调用所述目标服务所需的原始数据,所述目标服务具有进行服务数据迁移所需的源数据库与目标数据库;
生成与所述原始数据具有映射关系的目标映射数据;
通过所述源数据库与所述目标数据库,对所述目标映射数据进行数据校验;
当所述目标映射数据校验通过时,基于所述目标映射数据,对所述服务调用请求进行服务响应;
分别在所述源数据库与所述目标数据库,对所述原始数据与所述目标映射数据执行数据写入操作,以将所述目标服务的服务数据迁移至所述目标数据库。
2.根据权利要求1所述的服务数据迁移方法,其特征在于,生成与所述原始数据具有映射关系的目标映射数据,包括:
对所述服务调用请求进行解析,以确定所述原始数据的迁移属性信息,其中,所述迁移属性信息表征所述原始数据的迁移属性;
基于所述原始数据生成第一映射数据,其中,所述第一映射数据与所述原始数据对应;
将所述迁移属性信息注入所述第一映射数据,得到与所述原始数据具有映射关系的目标映射数据。
3.根据权利要求2所述的服务数据迁移方法,其特征在于,对所述服务调用请求进行解析,以确定所述原始数据的迁移属性信息,包括:
对所述服务调用请求进行解析,以确定发送所述服务调用请求的服务调用对象;
将所述服务调用对象与目标对象名单进行比对,得到比对结果;
根据所述比对结果,确定所述原始数据的迁移属性,得到所述原始数据的迁移属性信息。
4.根据权利要求2所述的服务数据迁移方法,其特征在于,将所述迁移属性信息注入所述第一映射数据,得到与所述原始数据具有映射关系的目标映射数据,包括:
基于所述迁移属性信息生成第二映射数据,其中,所述第二映射数据与所述迁移属性信息对应;
确定所述第一映射数据与所述第二映射数据之间的关联关系;
根据所述关联关系,将所述第二映射数据注入所述第一映射数据,得到与所述原始数据具有映射关系的目标映射数据。
5.根据权利要求1所述的服务数据迁移方法,其特征在于,通过所述源数据库与所述目标数据库,对所述目标映射数据进行数据校验,包括:
基于所述目标映射数据,分别在所述源数据库与所述目标数据库进行数据查询操作,得到所述源数据库对应的第一查询结果、以及所述目标数据库对应的第二查询结果;
根据所述第一查询结果与所述第二查询结果,对所述目标映射数据进行数据校验。
6.根据权利要求5所述的服务数据迁移方法,其特征在于,根据所述第一查询结果与所述第二查询结果,对所述目标映射数据进行数据校验,包括:
若所述第一查询结果失效,基于所述第二查询结果对所述目标映射数据进行数据校验;
若所述第一查询结果有效,基于所述第一查询结果对所述目标映射数据进行数据校验。
7.根据权利要求1所述的服务数据迁移方法,其特征在于,所述目标映射数据设置有时效属性;
当所述目标映射数据校验通过时,基于所述目标映射数据,对所述服务调用请求进行服务响应,包括:
当所述目标映射数据校验通过时,更新所述目标映射数据的时效属性;
基于所述更新结果与所述目标映射数据,生成所述服务调用请求的响应数据;
向所述服务调用请求的服务调用对象发送所述响应数据,以对所述服务调用请求进行服务响应。
8.根据权利要求1所述的服务数据迁移方法,其特征在于,分别在所述源数据库与所述目标数据库,对所述原始数据与所述目标映射数据执行数据写入操作,以将所述目标服务的服务数据迁移至所述目标数据库,包括:
基于所述原始数据与所述目标映射数据,生成待写入数据;
分别在所述源数据库与所述目标数据库,对所述待写入数据执行数据写入操作,得到所述源数据库对应的第一写入结果、以及所述目标数据库对应的第二写入结果;
根据所述第一写入结果与所述第二写入结果,确定所述待写入数据的数据迁移结果。
9.根据权利要求1所述的服务数据迁移方法,其特征在于,所述方法还包括:
获取所述目标服务的数据查询请求,其中,所述数据查询请求包括待查询的映射数据;
对所述待查询映射数据进行解析,得到所述待查询映射数据携带的迁移属性信息;
基于所述迁移属性信息,通过所述源数据库与所述目标数据库,对所述待查询映射数据进行数据查询操作,得到第三查询结果;
基于所述第三查询结果,对所述数据查询请求进行响应。
10.根据权利要求9所述的服务数据迁移方法,其特征在于,基于所述迁移属性信息,通过所述源数据库与所述目标数据库,对所述待查询映射数据进行数据查询操作,得到第三查询结果,包括:
确定发送所述数据查询请求的数据查询对象;
基于所述数据查询对象与所述迁移属性信息,从所述源数据库与所述目标数据库中确定所述待查询映射数据的目标查询数据库;
通过所述目标查询数据库对所述待查询映射数据进行数据查询操作,得到第三查询结果。
11.根据权利要求9所述的服务数据迁移方法,其特征在于,所述待查询映射数据设置有时效属性;
基于所述第三查询结果,对所述数据查询请求进行响应,包括:
基于所述第三查询结果,更新所述待查询映射数据的时效属性;
基于所述更新结果与所述第三查询结果,生成所述数据查询请求的响应数据;
向所述数据查询请求的数据查询对象发送所述响应数据,以对所述数据查询请求进行响应。
12.一种服务数据迁移装置,其特征在于,包括:
获取单元,用于获取目标服务的服务调用请求,其中,所述服务调用请求携带调用所述目标服务所需的原始数据,所述目标服务具有进行服务数据迁移所需的源数据库与目标数据库;
生成单元,用于生成与所述原始数据具有映射关系的目标映射数据;
校验单元,用于通过所述源数据库与所述目标数据库,对所述目标映射数据进行数据校验;
响应单元,用于当所述目标映射数据校验通过时,基于所述目标映射数据,对所述服务调用请求进行服务响应;
写入单元,用于分别在所述源数据库与所述目标数据库,对所述原始数据与所述目标映射数据执行数据写入操作,以将所述目标服务的服务数据迁移至所述目标数据库。
13.一种电子设备,其特征在于,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行权利要求1至11任一项所述的服务数据迁移方法中的操作。
14.一种存储介质,其特征在于,所述存储介质存储有至少一条指令,所述指令适于处理器进行加载,以执行权利要求1至11任一项所述的服务数据迁移方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110302337.8A CN112685391B (zh) | 2021-03-22 | 2021-03-22 | 一种服务数据迁移方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110302337.8A CN112685391B (zh) | 2021-03-22 | 2021-03-22 | 一种服务数据迁移方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112685391A true CN112685391A (zh) | 2021-04-20 |
CN112685391B CN112685391B (zh) | 2021-06-08 |
Family
ID=75455738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110302337.8A Active CN112685391B (zh) | 2021-03-22 | 2021-03-22 | 一种服务数据迁移方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685391B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113364806A (zh) * | 2021-06-30 | 2021-09-07 | 深圳前海微众银行股份有限公司 | 一种服务接口迁移的校验方法及装置 |
CN115858489A (zh) * | 2022-11-23 | 2023-03-28 | 中电金信软件有限公司 | 基于数据迁移的交易处理方法、装置、计算机设备及介质 |
CN116821100A (zh) * | 2023-07-20 | 2023-09-29 | 广州云臻数据科技有限公司 | 一种基于双态协同的数据库高保真迁移方法 |
WO2024104046A1 (zh) * | 2022-11-15 | 2024-05-23 | 华为云计算技术有限公司 | 一种主动变更的方法、***、服务器及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364186A (zh) * | 2008-09-27 | 2009-02-11 | 腾讯科技(深圳)有限公司 | 数据迁移方法、***、数据迁移服务器及数据接口服务器 |
US20090282044A1 (en) * | 2008-05-08 | 2009-11-12 | International Business Machines Corporation (Ibm) | Energy Efficient Data Provisioning |
CN101945131A (zh) * | 2010-09-16 | 2011-01-12 | 华中科技大学 | 一种基于存储虚拟化的数据迁移方法 |
CN106649335A (zh) * | 2015-10-30 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN106686070A (zh) * | 2016-12-13 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 一种数据库数据迁移方法、装置、终端及*** |
CN108268496A (zh) * | 2016-12-30 | 2018-07-10 | 北京国双科技有限公司 | 数据的校验方法及装置 |
CN112256675A (zh) * | 2020-11-05 | 2021-01-22 | 深圳壹账通智能科技有限公司 | 数据迁移方法、装置、终端设备及存储介质 |
CN112306994A (zh) * | 2020-11-10 | 2021-02-02 | 北京沃东天骏信息技术有限公司 | 数据库数据迁移方法、装置以及存储介质 |
-
2021
- 2021-03-22 CN CN202110302337.8A patent/CN112685391B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090282044A1 (en) * | 2008-05-08 | 2009-11-12 | International Business Machines Corporation (Ibm) | Energy Efficient Data Provisioning |
CN101364186A (zh) * | 2008-09-27 | 2009-02-11 | 腾讯科技(深圳)有限公司 | 数据迁移方法、***、数据迁移服务器及数据接口服务器 |
CN101945131A (zh) * | 2010-09-16 | 2011-01-12 | 华中科技大学 | 一种基于存储虚拟化的数据迁移方法 |
CN106649335A (zh) * | 2015-10-30 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN106686070A (zh) * | 2016-12-13 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 一种数据库数据迁移方法、装置、终端及*** |
CN108268496A (zh) * | 2016-12-30 | 2018-07-10 | 北京国双科技有限公司 | 数据的校验方法及装置 |
CN112256675A (zh) * | 2020-11-05 | 2021-01-22 | 深圳壹账通智能科技有限公司 | 数据迁移方法、装置、终端设备及存储介质 |
CN112306994A (zh) * | 2020-11-10 | 2021-02-02 | 北京沃东天骏信息技术有限公司 | 数据库数据迁移方法、装置以及存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113364806A (zh) * | 2021-06-30 | 2021-09-07 | 深圳前海微众银行股份有限公司 | 一种服务接口迁移的校验方法及装置 |
CN113364806B (zh) * | 2021-06-30 | 2023-04-07 | 深圳前海微众银行股份有限公司 | 一种服务接口迁移的校验方法及装置 |
WO2024104046A1 (zh) * | 2022-11-15 | 2024-05-23 | 华为云计算技术有限公司 | 一种主动变更的方法、***、服务器及存储介质 |
CN115858489A (zh) * | 2022-11-23 | 2023-03-28 | 中电金信软件有限公司 | 基于数据迁移的交易处理方法、装置、计算机设备及介质 |
CN116821100A (zh) * | 2023-07-20 | 2023-09-29 | 广州云臻数据科技有限公司 | 一种基于双态协同的数据库高保真迁移方法 |
CN116821100B (zh) * | 2023-07-20 | 2023-12-22 | 广州云臻数据科技有限公司 | 一种基于双态协同的数据库高保真迁移方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112685391B (zh) | 2021-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112685391B (zh) | 一种服务数据迁移方法、装置、计算机设备和存储介质 | |
CN108389129B (zh) | 基于区块链的交易执行方法及装置、电子设备 | |
CN108846659B (zh) | 基于区块链的转账方法、装置及存储介质 | |
US20230004537A1 (en) | Extracting data from a blockchain network | |
CN108572986B (zh) | 一种数据更新的方法及节点设备 | |
CN112488855B (zh) | 一种基于规则模板的业务校验方法及设备 | |
CN109598598A (zh) | 基于区块链的交易处理方法及装置、电子设备 | |
CN111327613B (zh) | 分布式服务的权限控制方法、装置及计算机可读存储介质 | |
WO2016118429A1 (en) | System for efficient processing of transaction requests related to an account in a database | |
US20210073177A1 (en) | Blockchain-as-a-service integrated hybrid object storage system in multi-cloud computing environment | |
US20210326359A1 (en) | Compare processing using replication log-injected compare records in a replication environment | |
CN111782551B (zh) | 针对区块链项目的测试方法、装置及计算机设备 | |
EP4379556A1 (en) | Blockchain-based data processing method, and device and computer-readable storage medium | |
EP3812917A1 (en) | Data structure reading method and apparatus, data structure updating method and apparatus, and electronic device | |
CN114971827A (zh) | 一种基于区块链的对账方法、装置、电子设备及存储介质 | |
CN112035350B (zh) | 针对区块链***的测试方法、装置及计算机设备 | |
CN111429250A (zh) | 一种货押贷款场景中的数据管理方法和装置 | |
WO2022206439A1 (zh) | 提供跨链消息的方法和装置 | |
CN117742843B (zh) | 一种交割服务业务表单生成方法和*** | |
CN113626510B (zh) | 交易核对方法、装置、电子设备及存储介质 | |
US20230267430A1 (en) | Data processing method and device, and computer-readable storage medium | |
WO2019145799A1 (en) | System and method for decentralized validation of data exchange in a computer network | |
CN111488345A (zh) | 业务数据区块链的存储优化方法及装置 | |
CN112712433B (zh) | 一种基于区块链的数据状态管理和查询方法及区块链装置 | |
US20230119482A1 (en) | Method for securing private structured databases within a public blockchain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40042466 Country of ref document: HK |