CN113760475A - 线上***迁移方法、装置、介质及电子设备 - Google Patents
线上***迁移方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN113760475A CN113760475A CN202010501900.XA CN202010501900A CN113760475A CN 113760475 A CN113760475 A CN 113760475A CN 202010501900 A CN202010501900 A CN 202010501900A CN 113760475 A CN113760475 A CN 113760475A
- Authority
- CN
- China
- Prior art keywords
- online
- migrated
- data
- request
- switching
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000013509 system migration Methods 0.000 title claims abstract description 64
- 238000012360 testing method Methods 0.000 claims abstract description 99
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013508 migration Methods 0.000 abstract description 41
- 230000005012 migration Effects 0.000 abstract description 41
- 230000008569 process Effects 0.000 abstract description 19
- 238000004883 computer application Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 14
- 230000004048 modification Effects 0.000 description 12
- 238000012986 modification Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供一种线上***迁移方法、线上***迁移装置、计算机可读介质及电子设备;涉及计算机应用技术领域。该线上***迁移方法包括:确定待迁移***的测试***;根据针对所述待迁移***的数据写入请求,更新所述待迁移***的源数据以及所述测试***的目标数据;若所述源数据与所述目标数据一致,则将所述待迁移***的线上请求切换到所述测试***对应的线上***,以通过所述线上***提供数据服务。本公开中的线上***迁移方法能够在一定程度上克服***迁移过程中数据容易出错,迁移风险较高的问题,进而提升***迁移的可靠性。
Description
技术领域
本公开涉及计算机应用技术领域,具体而言,涉及一种线上***迁移方法、线上***迁移装置、计算机可读介质及电子设备。
背景技术
***迁移是指新***开发完成后将老***流量切到新***上来,最终使新***完全替换掉老***,也称为***切换。在***上线后,为了优化或者对数据进行结构上的修改等原因,需要进行***迁移,可以通知用户***需要在特定时间停机维护,然后再这段时间将服务停止,执行迁移,但是这种方式会影响用户体验。因此,在大多数的业务场景中,都会采用平滑迁移的方式,不停止服务,可以使用户无感知的对***进行迁移。
目前,***迁移过程中,如果老***的流量已经切换到新***上,则不能在切换回老***,一旦数据发生错误,那么错误数据可能会持续增加,迁移风险过高。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种线上***迁移方法、线上***迁移装置、计算机可读介质及电子设备,进而在一定程度上克服***迁移过程中风险过高的问题,提升***迁移的安全性。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的第一方面,提供一种线上***迁移方法,包括:
确定待迁移***的测试***;
根据针对所述待迁移***的数据写入请求,更新所述待迁移***的源数据以及所述测试***的目标数据;
若所述源数据与所述目标数据一致,则将所述待迁移***的线上请求切换到所述测试***对应的线上***,以通过所述线上***提供数据服务。
在本公开的一种示例性实施例中,所述根据针对所述待迁移***的数据写入请求更新所述待迁移***的源数据以及所述测试***的目标数据,包括:
若所述待迁移***接收到所述数据写入请求,则执行与所述数据写入请求对应的数据更新操作,以更新所述待迁移***的源数据;
通过所述待迁移***的异步调用任务对所述测试***执行所述数据更新操作,以更新所述测试***的目标数据。
在本公开的一种示例性实施例中,根据针对所述待迁移***的数据写入请求,更新所述待迁移***的源数据以及所述测试***的目标数据之后,还包括:
对比更新后的所述源数据与所述目标数据;
若更新后的所述源数据与所述目标数据不一致,则对所述测试***进行修改。
在本公开的一种示例性实施例中,所述若所述源数据与所述目标数据一致,则将所述待迁移***的线上请求切换到所述测试***对应的线上***,包括:
若所述源数据与所述目标数据一致,则根据所述测试***部署线上***;
将针对所述待迁移***的线上请求路由至所述线上***,以通过所述线上***执行所述线上请求对应的数据更新任务;
通过所述线上***的回写任务在所述待迁移***中执行所述数据更新任务,以保持所述待迁移***的目标数据的更新。
在本公开的一种示例性实施例中,将所述待迁移***的线上请求切换到所述测试***对应的线上***之前,还包括:
将所述待迁移***的调用信息序列化为字符串信息;
在所述线上***中利用所述字符串信息生成所述回写任务。
在本公开的一种示例性实施例中,所述通过所述线上***的回写任务在所述待迁移***中执行所述数据更新任务,包括:
通过所述线上***的回写任务对所述待迁移***进行泛化调用,以使所述待迁移***执行所述数据更新任务。
在本公开的一种示例性实施例中,所述将所述待迁移***的线上请求切换到所述测试***对应的线上***,包括:
将符合预设条件的线上请求切换到所述线上***,以通过所述线上***响应所述线上请求。
在本公开的一种示例性实施例中,所述将符合预设条件的线上请求切换到所述线上***,包括:
按照所述待迁移***的请求方对所述线上请求进行分类,以确定所述线上请求的请求类型;
若所述请求类型为目标类型,则将所述线上请求切换至所述线上***。
在本公开的一种示例性实施例中,所述将符合预设条件的线上请求切换到所述线上***,包括:
确定所述线上请求对应的随机数;
若所述随机数大于预设百分比,则将所述线上请求切换至所述线上***。
在本公开的一种示例性实施例中,所述将所述待迁移***的线上请求切换到所述测试***对应的线上***之后,还包括:
检测所述线上***的数据服务是否出错,若所述线上***的数据服务出错,则停止将所述线上请求切换至所述线上***。
根据本公开的第二方面,提供一种线上***迁移装置。该线上***迁移装置可以包括:***获取模块、***测试模块以及***迁移模块,其中:
***获取模块,用于确定待迁移***的测试***;
***测试模块,用于根据针对所述待迁移***的数据写入请求,更新所述待迁移***的源数据以及所述测试***的目标数据;
***迁移模块,用于若所述源数据与所述目标数据一致,则将所述待迁移***的线上请求切换到所述测试***对应的线上***,以通过所述线上***提供数据服务。
在本公开的一种示例性实施方式中,***测试模块可以具体包括数据更新模块,以及***调用模块,其中:
数据更新模块,用于若所述待迁移***接收到所述数据写入请求,则执行与所述数据写入请求对应的数据更新操作,以更新所述待迁移***的源数据;
***调用模块,用于通过所述待迁移***的异步调用任务对所述测试***执行所述数据更新操作,以更新所述测试***的目标数据。
在本公开的一种示例性实施方式中,该装置还包括数据对比模块,以及***修改模块,其中:
数据对比模块,用于对比更新后的所述源数据与所述目标数据;
***修改模块,用于若更新后的所述源数据与所述目标数据不一致,则对所述测试***进行修改
在本公开的一种示例性实施方式中,***迁移模块可以包括***部署模块、流量路由模块,以及数据回写模块,其中:
***部署模块,用于若所述源数据与所述目标数据一致,则根据所述测试***部署线上***;
流量路由模块,用于将针对所述待迁移***的线上请求路由至所述线上***,以通过所述线上***执行所述线上请求对应的数据更新任务;
数据回写模块,用于通过所述线上***的回写任务在所述待迁移***中执行所述数据更新任务,以保持所述待迁移***的目标数据的更新。
在本公开的一种示例性实施方式中,该线上***迁移装置还包括字符串信息转化模块,以及回写任务生成模块,其中:
字符串信息转化模块,用于将所述待迁移***的调用信息序列化为字符串信息;
回写任务生成模块,用于在所述线上***中利用所述字符串信息生成所述回写任务。
在本公开的一种示例性实施方式中,数据回写模块可以具体用于通过所述线上***的回写任务对所述待迁移***进行泛化调用,以使所述待迁移***执行所述数据更新任务。
在本公开的一种示例性实施方式中,***迁移模块可以用于将符合预设条件的线上请求切换到所述线上***,以通过所述线上***响应所述线上请求。
在本公开的一种示例性实施方式中,***迁移模块可以具体包括分类模块,以及请求切换模块,其中:
分类模块,用于按照所述待迁移***的请求方对所述线上请求进行分类,以确定所述线上请求的请求类型;
请求切换模块,用于若所述请求类型为目标类型,则将所述线上请求切换至所述线上***。
在本公开的一种示例性实施方式中,***迁移模块可以具体包括随机数确定模块,以及百分比切换模块,其中:
随机数确定模块,用于确定所述线上请求对应的随机数;
百分比切换模块,用于若所述随机数大于预设百分比,则将所述线上请求切换至所述线上***。
在本公开的一种示例性实施方式中,该线上***迁移装置还可以包括迁移停止模块,用于检测所述线上***的数据服务是否出错,若所述线上***的数据服务出错,则停止将所述线上请求切换至所述线上***。
根据本公开的第三方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。
根据本公开的第四方面,提供一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。
本公开示例性实施例可以具有以下部分或全部有益效果:
在本公开的一示例实施方式所提供的线上***迁移方法中,一方面,通过测试***预先对迁移过程进行测试,并且在迁移过程中保持待迁移***数据的更新,能够保证待迁移***正常提供数据服务,提高迁移的可靠性;另一方面,通过对比测试***与待迁移***的数据,可以对测试***数据服务进行测试,确定测试***数据服务是否正常,进而保证在后续迁移时不出错,降低迁移的风险,提高***迁移的安全性;再一方面,在数据一致的情况下,才将待迁移***的请求切换到线上***,从而实现老***到新***的切换,可以最大程度地减少迁移过程中的问题,提高稳定性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出了根据本公开的一个实施例的线上***迁移方法的流程图;
图2示意性示出了根据本公开的另一个实施例的线上***迁移方法的流程图;
图3示意性示出了根据本公开的另一个实施例的线上***迁移方法的流程图;
图4示意性示出了根据本公开的另一个实施例的线上***迁移方法的流程图;
图5示意性示出了根据本公开的另一个实施例的线上***迁移方法的流程图;
图6示意性示出了根据本公开的一个实施例的线上***迁移方法的应用场景示意图;
图7示意性示出了根据本公开的一个实施例的线上***迁移装置的框图;
图8示出了适于用来实现本公开实施例的电子设备的计算机***的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
以下对本公开实施例的技术方案进行详细阐述:
本示例实施方式首先提供一种线上***迁移方法。参考图1所示,该线上***迁移方法可以包括步骤S110、步骤S120以及步骤S130,其中:
步骤S110:确定待迁移***的测试***。
步骤S120:根据针对所述待迁移***的数据写入请求,更新所述待迁移***的源数据以及所述测试***的目标数据。
步骤S130:若所述源数据与所述目标数据一致,则将所述待迁移***的线上请求切换到所述测试***对应的线上***,以通过所述线上***提供数据服务。
在本公开的一示例实施方式所提供的线上***迁移方法中,一方面,通过测试***预先对迁移过程进行测试,并且在迁移过程中保持待迁移***数据的更新,能够保证待迁移***正常提供数据服务,提高迁移的安全性;另一方面,通过对比测试***与待迁移***的数据,可以对测试***数据服务进行测试,确定测试***数据服务是否正常,进而保证在后续迁移时不出错,提高***迁移的可靠性;再一方面,在数据一致的情况下,才将待迁移***的请求切换到线上***,从而实现老***到新***的切换,可以最大程度地减少迁移过程中的问题,提高稳定性。
下面,对于本示例实施方式的上述步骤进行更加详细的说明。
在步骤S110中,确定待迁移***的测试***。
在本实施方式中,待迁移***为已经上线的老***,而测试***则是针对该老***开发的新***;并且,测试***为测试人员使用,用户不可见,而待迁移***则是为用户提供数据服务的***。在新***开发完成之后,可以搭建一测试环境,该测试环境中可以包括开发完成的***以及***运行时的依赖的操作***、数据库等其他应用软件,然后利用该测试环境中来对***进行测试。
在步骤S120中,根据针对所述待迁移***的数据写入请求,更新所述待迁移***的源数据以及所述测试***的目标数据。
其中,数据写入请求为待迁移***接收到的外部请求,例如http请求等;外部的数据请求方可以通过数据写入请求中对待迁移***的数据进行修改、添加、删除等;数据写入请求中可以包括需要更新的数据的信息,以及数据的标识信息;还可以包括其他信息,例如请求方的信息等,本实施方式对此不做特殊限定。源数据可以包括待迁移***的数据库,或者数据表,而目标数据则为测试***的数据库。本实施方式中,待迁移***接收到外部请求方的请求后,根据数据写入请求可以对待迁移***的源数据进行更新,例如,若数据写入请求为增加数据,则将数据写入请求中包含的数据增加至源数据中;同理的,根据该数据写入请求也可以对测试***的目标数据进行修改。示例性的,可以采用双写的方式来将需要更新的数据同时写入待迁移***以及测试***的源数据和目标数据。
示例性实施方式中,该方法可以包括以下步骤S210以及步骤S220,如图2所示,其中:
在步骤S210中,若所述待迁移***接收到所述数据写入请求,则执行与所述数据写入请求对应的数据更新操作,以更新所述待迁移***的源数据。示例性的,数据更新操作可以包括数据添加、数据删除、数据修改等操作。待迁移***是为用户提供线上服务的***,因此通过待迁移***来接收外部请求方的数据写入请求,数据写入请求中可以包括脚本代码,例如sql语句等,每一脚本代码可以对应一数据更新操作,待迁移***在接收到数据写入请求后可以执行其中的脚本代码,从而实现对应的数据更新操作,更新待迁移***的源数据。
在步骤S220中,通过所述待迁移***的异步调用任务对所述测试***执行所述数据更新操作,以更新所述测试***的目标数据。示例性的,在待迁移***中可以创建异步调用任务,从而异步调用测试***,将其接收到的数据写入请求发送至测试***,或者将数据写入请求对应的数据更新操作发送给测试***,例如,将数据写入请求对应的脚本代码发送给测试***等,从而使得测试***执行同样的数据更新操作,对目标数据进行更新。
继续参考图1,在步骤S130中,若所述源数据与所述目标数据一致,则将所述待迁移***的线上请求切换到所述测试***对应的线上***,以通过所述线上***提供数据服务。
其中,线上***是新***的线上环境,对待迁移***以及测试***进行更新之后,可以对比更新后的源数据与目标数据,如果源数据与目标数据一致,则可以确定新***逻辑正确,进而将新***部署到线上,得到线上***,将待迁移***的线上请求切换到线上新***,完成***迁移。在本公开的其他实施方式中,如果更新后的源数据与目标数据不一致,则可以对测试***进行修改。具体的,首先可以提取出不一致的数据,然后根据不一致的数据进行问题定位,判断是否需要修改,如果是***逻辑问题则需要修改,如果是创建时间、修改时间这类不一致的字段则不需要修改。
示例性实施方式中,将待迁移***的线上请求切换到测试***对应的线上***的方法可以具体包括以下步骤S310、步骤S320以及步骤S330,如图3所示,具体的:
在步骤S310中,若所述源数据与所述目标数据一致,则根据所述测试***部署线上***。对比过源数据与目标数据之后,如果目标数据与源数据不一致,则可以对测试***进行修改,然后用修改后的测试***重新执行步骤S120,直到测试***不会出现问题,目标数据与源数据一致。然后根据测试***部署线上***。具体的,可以将测试***的***代码文件复制到特定的服务器或者指定的路径中,从而得到线上***,线上***能够被外部请求方使用,满足请求方的数据需求。
在步骤S320中,将针对所述待迁移***的线上请求路由至所述线上***,以通过所述线上***执行所述线上请求对应的数据更新任务。待迁移***的线上请求与数据写入请求都是外部请求方发送的请求,因此,同理的,线上请求中也可以包括需要更新的数据的信息,也可以包括请求方的信息等。通过路由服务可以将待迁移***的线上请求路由至线上***,由线上***来响应请求。并且,可选的,可以将符合预设条件的线上请求切换到线上***,从而实现待迁移***的流量分批量地迁移至新***,如果迁移过程中发现数据出错,则可以立即停止迁移,避免出错数据越累越多导致***不可用,能够提高数据的安全性。
在步骤S330中,通过所述线上***的回写任务在所述待迁移***中执行所述数据更新任务,以保持所述待迁移***的目标数据的更新。示例性的,线上***中的数据更新任务中可以包括一回写任务,在线上***每执行一数据更新任务就可以执行一回写任务,从而通过回写任务将需要更新的数据写回待迁移***中,保证老***数据的完整性和一致性。其中,回写任务是用于调用待迁移***,将数据写入待迁移***数据库的任务。回写任务可以读取线上***的binlog文件,获取线上***执行的数据更新语句,利用该数据更新语句将数据写入待迁移***。Binlog是一个二进制格式的文件,用于记录用户对数据库更新的sql语句信息,例如修改数据表和修改数据表中字段的sql语句均会进行记录,而对数据库表内容的查询则不会进行记录。因此,从binlog文件中可以获取线上***在处理线上请求时执行的语句信息,从而通过回写任务将对应的语句在待迁移***中执行,对待迁移***的数据库进行更新。
首先,可以将待迁移***的调用信息序列化成字符串信息;然后在线上***中利用字符串信息生成回写任务。具体的,待迁移***的调用信息可以包括待迁移***的接口信息,例如接口名称等,也可以包括待迁移***的入口参数、调用方法等,本实施方式对此不做特殊限定。将待迁移***的调用信息可以序列化为字符串信息,示例性的,可以按照一定的顺序将调用信息中包含的多个字段拼接成字符串信息等,例如,可以按照“入口参数、调用方法”的顺序将对应的字段转化成一字符串。得到的字符串信息可以作为参数传递给回写任务,例如作为回写任务的入参,从而在线上新***中生成回写任务。
可选的,通过回写任务可以对待迁移***进行泛化调用,以使待迁移***执行数据更新任务。泛化调用可以在不知道待迁移***的接口的情况下,调用方法,实现对应的功能。本实施方式中,在***迁移的过程中,***安全稳定,数据始终保持一致,极大的提高了迁移的可靠性。
在本公开的示例性实施方式中,***迁移时,可以将待迁移***的符合预设条件的线上请求切换到线上***,从而平滑、稳定地将待迁移***的流量全部迁移到线上新***。具体的,可以按照一定的比例对线上请求进行切换,例如,按照待迁移***线上请求的10%迁移到线上***,在迁移过程中,待迁移***与线上***同时提供服务,如果迁移过程中出现问题,则可以停止迁移,通过待迁移***提供服务,能够保证整个迁移过程中服务的可用性。示例性的,该方法可以包括以下步骤S410以及步骤S420,如图4所示,其中:
在步骤S410中,确定所述线上请求对应的随机数。在待迁移***接收到线上请求时,可以生成一个随机数,该随机数的取值范围可以为0-1,也可以为1到100,本实施方式不限于此。
在步骤S420中,若所述随机数大于预设百分比,则将所述线上请求切换至所述线上***。其中,该预设百分比为迁移到线上***的请求对应的百分比,可以具体包括10%、15%等,也可以包括其他数值,例如5%、20%、42%等等,本实施方式对此不做特殊限定。在生成随机数后,可以将随机数与该预设百分比进行对比,通过随机数来判断是否需要将线上请求切换至线上***,如果随机数大于该预设百分比,则可以将该线上请求切换到线上***。通过本实施方式中的方法,可以按照一定的百分比将待迁移***的线上请求逐步迁移到线上***,最终完成迁移,在迁移出错的情况下,错误的数据不会一直增加,能够降低风险。
示例性的,该方法可以具体包括以下步骤S510和步骤S520,如图5所示。
在步骤S510中,按照所述待迁移***的请求方对所述线上请求进行分类,以确定所述线上请求的请求类型。示例性的,可以按照请求方的业务类型对线上请求进行分类,或者也可以将同一请求方发送的线上请求分为同一类,不同请求方的线上请求分为不同类,例如,请求方A的线上请求的请求类型可以为A,而请求方B的线上请求类型可以为B;也可以预先定义请求方对应的请求类型,例如,指定请求方A和请求方B为第一请求类型等。此外,在本公开的其他实施方式中,还可以按照其他方式对线上请求进行分类,进而分批次进行切换,例如,按照黑白名单进行分类,按照请求方式进行分类等,这些均属于本公开的保护范围。
在步骤S520中,若所述请求类型为目标类型,则将线上请求切换至线上***。其中,目标类型可以为线上请求所有的请求类型中任意一种,根据实际情况可以预先指定目标类型。然后在接收到线上请求之后,对线上请求进行判断,判断请求类型是否为目标类型,如果请求类型为目标类型,则可以将该线上请求切换到线上***。并且如果目标类型的线上请求全部迁移至线上***后,还可以更新目标类型,例如,将目标类型从请求类型A更新为请求类型B,从而对B类的线上请求进行切换,逐步完成所有的线上请求的切换。
在本公开的实施方式中,开始将待迁移***的线上请求切换到线上***之后,可以实时检测线上***的数据服务是否正常,如果检测到线上***的数据服务出错,则可以停止将线上请求切换至线上***。示例性的,可以通过一切换开关来开启或者停止迁移,在开启流量迁移之后,对线上***进行实时检测,一旦发现数据出错,则可以发送指令关闭该切换开关,从而停止迁移,定位数据出错的原因,对线上***进行完善,并确定出错的数据是否需要修复,在数据修复之后可以重新开始迁移。在待迁移***的所有流量全部迁移到新的线上***之后,可以停止迁移,将所有依赖待迁移***的请求方全部接到新的线上***,从而完成***迁移。
图6示出了本公开实施方式的一种应用场景。如图6所示,在测试阶段,可以在待迁移***601与测试***603之间进行迁移,通过测试***603来模拟***迁移,从而发现新***中存在的问题,对新***进行完善和优化。在迁移过程中,已经上线的待迁移***601接收到数据写入请求时,可以先判断该请求是否满足预设条件,如果满足预设条件,则执行该数据写入请求对应的数据更新操作,从而将数据写入源数据602中,并且异步调用测试***603,将数据写入测试***对应的目标数据604中。如果数据库604和数据库602中数据一致时,则可以确定新***逻辑正确,则开始正式迁移,即,在线上***与待迁移***之间进行迁移,可以避免迁移过程中出错,降低迁移风险,从而提高***迁移的可靠性。线上请求是实时产生的请求,因此在正式开始迁移后,可以将后续接收到的线上请求切换到新的线上***605中,线上***605可以响应该线上请求将数据写入对应的数据库606中,并且通过回写任务将数据同样写入待迁移***的数据库602中,从而保证新***与老***数据一致,保证数据的完整性。如果数据在迁移过程中出错,则可以停止迁移,对问题进行定位和修改,然后再继续迁移,实现高可靠性的***迁移。
进一步的,本示例实施方式中,还提供一种线上***迁移装置,用于执行本公开上述的线上***迁移方法。
参考图7所示,该线上***迁移装置700可以包括:***获取模块710、***测试模块720以及***迁移模块730,其中:
***获取模块710,用于确定待迁移***的测试***;
***测试模块720,用于根据针对所述待迁移***的数据写入请求,更新所述待迁移***的源数据以及所述测试***的目标数据;
***迁移模块730,用于若所述源数据与所述目标数据一致,则将所述待迁移***的线上请求切换到所述测试***对应的线上***,以通过所述线上***提供数据服务。
在本公开的一种示例性实施方式中,***测试模块720可以具体包括数据更新模块,以及***调用模块,其中:
数据更新模块,用于若所述待迁移***接收到所述数据写入请求,则执行与所述数据写入请求对应的数据更新操作,以更新所述待迁移***的源数据;
***调用模块,用于通过所述待迁移***的异步调用任务对所述测试***执行所述数据更新操作,以更新所述测试***的目标数据。
在本公开的一种示例性实施方式中,该装置还包括数据对比模块,以及***修改模块,其中:
数据对比模块,用于对比更新后的所述源数据与所述目标数据;
***修改模块,用于若更新后的所述源数据与所述目标数据不一致,则对所述测试***进行修改
在本公开的一种示例性实施方式中,***迁移模块730可以包括***部署模块、流量路由模块,以及数据回写模块,其中:
***部署模块,用于若所述源数据与所述目标数据一致,则根据所述测试***部署线上***;
流量路由模块,用于将针对所述待迁移***的线上请求路由至所述线上***,以通过所述线上***执行所述线上请求对应的数据更新任务;
数据回写模块,用于通过所述线上***的回写任务在所述待迁移***中执行所述数据更新任务,以保持所述待迁移***的目标数据的更新。
在本公开的一种示例性实施方式中,该线上***迁移装置还包括字符串信息转化模块,以及回写任务生成模块,其中:
字符串信息转化模块,用于将所述待迁移***的调用信息序列化为字符串信息;
回写任务生成模块,用于在所述线上***中利用所述字符串信息生成所述回写任务。
在本公开的一种示例性实施方式中,数据回写模块可以具体用于通过所述线上***的回写任务对所述待迁移***进行泛化调用,以使所述待迁移***执行所述数据更新任务。
在本公开的一种示例性实施方式中,***迁移模块730可以用于将符合预设条件的线上请求切换到所述线上***,以通过所述线上***响应所述线上请求。
在本公开的一种示例性实施方式中,***迁移模块730可以具体包括分类模块,以及请求切换模块,其中:
分类模块,用于按照所述待迁移***的请求方对所述线上请求进行分类,以确定所述线上请求的请求类型;
请求切换模块,用于若所述请求类型为目标类型,则将所述线上请求切换至所述线上***。
在本公开的一种示例性实施方式中,***迁移模块730可以具体包括随机数确定模块,以及百分比切换模块,其中:
随机数确定模块,用于确定所述线上请求对应的随机数;
百分比切换模块,用于若所述随机数大于预设百分比,则将所述线上请求切换至所述线上***。
在本公开的一种示例性实施方式中,该线上***迁移装置还可以包括迁移停止模块,用于检测所述线上***的数据服务是否出错,若所述线上***的数据服务出错,则停止将所述线上请求切换至所述线上***。
由于本公开的示例实施例的线上***迁移装置的各个功能模块与上述线上***迁移方法的示例实施例的步骤对应,因此对于本公开装置实施例中未披露的细节,请参照本公开上述的线上***迁移方法的实施例。
图8示出了适于用来实现本公开实施例的电子设备的计算机***的结构示意图。
需要说明的是,图8示出的电子设备的计算机***800仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,计算机***800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有***操作所需的各种程序和数据。CPU801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的方法和装置中限定的各种功能。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图1和图2所示的各个步骤等。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (13)
1.一种线上***迁移方法,其特征在于,包括:
确定待迁移***的测试***;
根据针对所述待迁移***的数据写入请求,更新所述待迁移***的源数据以及所述测试***的目标数据;
若所述源数据与所述目标数据一致,则将所述待迁移***的线上请求切换到所述测试***对应的线上***,以通过所述线上***提供数据服务。
2.根据权利要求1所述的方法,其特征在于,所述根据针对所述待迁移***的数据写入请求更新所述待迁移***的源数据以及所述测试***的目标数据,包括:
若所述待迁移***接收到所述数据写入请求,则执行与所述数据写入请求对应的数据更新操作,以更新所述待迁移***的源数据;
通过所述待迁移***的异步调用任务对所述测试***执行所述数据更新操作,以更新所述测试***的目标数据。
3.根据权利要求1所述的方法,其特征在于,根据针对所述待迁移***的数据写入请求,更新所述待迁移***的源数据以及所述测试***的目标数据之后,还包括:
对比更新后的所述源数据与所述目标数据;
若更新后的所述源数据与所述目标数据不一致,则对所述测试***进行修改。
4.根据权利要求1所述的方法,其特征在于,所述若所述源数据与所述目标数据一致,则将所述待迁移***的线上请求切换到所述测试***对应的线上***,包括:
若所述源数据与所述目标数据一致,则根据所述测试***部署线上***;
将针对所述待迁移***的线上请求路由至所述线上***,以通过所述线上***执行所述线上请求对应的数据更新任务;
通过所述线上***的回写任务在所述待迁移***中执行所述数据更新任务,以保持所述待迁移***的目标数据的更新。
5.根据权利要求4所述的方法,其特征在于,将所述待迁移***的线上请求切换到所述测试***对应的线上***之前,还包括:
将所述待迁移***的调用信息序列化为字符串信息;
在所述线上***中利用所述字符串信息生成所述回写任务。
6.根据权利要求4所述的方法,其特征在于,所述通过所述线上***的回写任务在所述待迁移***中执行所述数据更新任务,包括:
通过所述线上***的回写任务对所述待迁移***进行泛化调用,以使所述待迁移***执行所述数据更新任务。
7.根据权利要求1所述的方法,其特征在于,所述将所述待迁移***的线上请求切换到所述测试***对应的线上***,包括:
将符合预设条件的线上请求切换到所述线上***,以通过所述线上***响应所述线上请求。
8.根据权利要求7所述的方法,其特征在于,所述将符合预设条件的线上请求切换到所述线上***,包括:
按照所述待迁移***的请求方对所述线上请求进行分类,以确定所述线上请求的请求类型;
若所述请求类型为目标类型,则将所述线上请求切换至所述线上***。
9.根据权利要求7所述的方法,其特征在于,所述将符合预设条件的线上请求切换到所述线上***,包括:
确定所述线上请求对应的随机数;
若所述随机数大于预设百分比,则将所述线上请求切换至所述线上***。
10.根据权利要求1所述的方法,其特征在于,所述将所述待迁移***的线上请求切换到所述测试***对应的线上***之后,还包括:
检测所述线上***的数据服务是否出错,若所述线上***的数据服务出错,则停止将所述线上请求切换至所述线上***。
11.一种线上***迁移装置,其特征在于,包括:
***获取模块,用于确定待迁移***的测试***;
***测试模块,用于根据针对所述待迁移***的数据写入请求,更新所述待迁移***的源数据以及所述测试***的目标数据;
***迁移模块,用于若所述源数据与所述目标数据一致,则将所述待迁移***的线上请求切换到所述测试***对应的线上***,以通过所述线上***提供数据服务。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-10任一项所述的方法。
13.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010501900.XA CN113760475A (zh) | 2020-06-04 | 2020-06-04 | 线上***迁移方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010501900.XA CN113760475A (zh) | 2020-06-04 | 2020-06-04 | 线上***迁移方法、装置、介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113760475A true CN113760475A (zh) | 2021-12-07 |
Family
ID=78783705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010501900.XA Pending CN113760475A (zh) | 2020-06-04 | 2020-06-04 | 线上***迁移方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113760475A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090037679A1 (en) * | 2007-08-01 | 2009-02-05 | Balakumar Kaushik | Data migration without interrupting host access |
EP2251788A1 (en) * | 2009-05-13 | 2010-11-17 | Hitachi Ltd. | Data migration management apparatus and information processing system |
CN109067823A (zh) * | 2018-06-11 | 2018-12-21 | 中国平安人寿保险股份有限公司 | 一种数据迁移方法、装置、计算机设备及存储介质 |
CN109189756A (zh) * | 2018-06-29 | 2019-01-11 | 平安科技(深圳)有限公司 | 电子装置、数据迁移的方法及存储介质 |
CN110399356A (zh) * | 2019-06-14 | 2019-11-01 | 阿里巴巴集团控股有限公司 | 一种在线数据迁移方法、装置、计算设备及存储介质 |
-
2020
- 2020-06-04 CN CN202010501900.XA patent/CN113760475A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090037679A1 (en) * | 2007-08-01 | 2009-02-05 | Balakumar Kaushik | Data migration without interrupting host access |
EP2251788A1 (en) * | 2009-05-13 | 2010-11-17 | Hitachi Ltd. | Data migration management apparatus and information processing system |
CN109067823A (zh) * | 2018-06-11 | 2018-12-21 | 中国平安人寿保险股份有限公司 | 一种数据迁移方法、装置、计算机设备及存储介质 |
CN109189756A (zh) * | 2018-06-29 | 2019-01-11 | 平安科技(深圳)有限公司 | 电子装置、数据迁移的方法及存储介质 |
CN110399356A (zh) * | 2019-06-14 | 2019-11-01 | 阿里巴巴集团控股有限公司 | 一种在线数据迁移方法、装置、计算设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
刘健;张军伟;张浩;邵冰清;杨洪章;刘振军;: "蓝鲸元数据服务器集群的细粒度负载迁移", 计算机研究与发展, no. 1, 15 December 2014 (2014-12-15) * |
王大鹏;刘飞;王建;: "一种基于Windows操作***的存储虚拟化在线扩展技术", 计算机应用与软件, no. 05, 15 May 2017 (2017-05-15) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109977012B (zh) | ***的联调测试方法、装置、设备及计算机可读存储介质 | |
US8311794B2 (en) | Testing executable logic | |
US11144437B2 (en) | Pre-populating continuous delivery test cases | |
US11663113B2 (en) | Real time fault localization using combinatorial test design techniques and test case priority selection | |
CN112947907B (zh) | 一种创建代码分支的方法 | |
CN112100070A (zh) | 版本缺陷的检测方法、装置、服务器及存储介质 | |
CN112650689A (zh) | 测试方法、装置、电子设备及存储介质 | |
CN116955198A (zh) | 一种规则集合的确定方法及装置 | |
CN113360365A (zh) | 一种流程测试方法和流程测试*** | |
CN113760475A (zh) | 线上***迁移方法、装置、介质及电子设备 | |
CN115687129A (zh) | 一种覆盖率报告生成方法、装置、存储介质和计算机设备 | |
CN115080433A (zh) | 基于流量回放的测试方法及装置 | |
CN112084114B (zh) | 用于测试接口的方法和装置 | |
CN116467156A (zh) | 联调测试方法、装置、存储介质及电子设备 | |
CN114356401A (zh) | 灰度发布方法、装置、电子设备及计算机可读存储介质 | |
CN115701591A (zh) | 业务流程测试方法、装置、介质及电子设备 | |
CN112965910A (zh) | 自动化回归测试方法、装置、电子设备、存储介质 | |
CN112286549A (zh) | 一种灰度发布方法 | |
CN112596781A (zh) | 一种业务执行以及业务配置方法及装置 | |
CN113806327A (zh) | 一种数据库设计方法、装置及相关设备 | |
CN116594914B (zh) | 测试数据的生成方法、装置、设备及存储介质 | |
CN111176718A (zh) | 脚本上线方法、装置、存储介质及电子设备 | |
CN112650679B (zh) | 一种测试校验方法、装置及计算机*** | |
CN113448822B (zh) | 测试方法、装置、计算机可读介质及电子设备 | |
CN115190008B (zh) | 故障处理方法、故障处理装置、电子设备及存储介质 |
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 |