具体实施方式
本说明书的实施例提出一种新的数据源切换的实现方法,根据对所有可供切换的数据源的访问操作,生成或更新访问评估参量来反映数据源的实际访问情况,按照访问评估参量和适用于数据访问请求的切换策略,来决定该数据访问请求的目标数据源,不再依赖于人工经验来确定数据源的切换,提高了业务系统的运行效率;另外由于无需修改业务系统的代码,有助于业务系统的稳定运行。
本说明书的实施例可以运行在任何具有计算和存储能力的设备上,如手机、平板电脑、PC(Personal Computer,个人电脑)、笔记本、服务器等设备;还可以由运行在两个或两个以上设备的逻辑节点来实现本说明书实施例中的各项功能。
本说明书的实施例中,数据源切换的实现方法的流程如图1所示。其中,可以用来进行切换的数据源共有N(N为大于1的自然数)个。本说明书的实施例可以运行在业务系统以外的设备上,也可以作为一个独立的软件功能模块运行在业务系统内的设备上。
步骤110,基于对N个数据源的访问操作,生成至少一个访问评估参量。
根据实际应用场景中业务系统切换数据源的目的、N个数据源之间的关系等因素,来选择对数据源访问的实际情形进行评估的一个到多个访问评估参量。
例如,如果业务系统切换数据源的目的是为了实现更快的读写数据库,可以将对每个数据源的之前t次查询请求的执行用时和之前t次写入请求的执行用时的平均值,作为该数据源的响应速度平均值,而将N个数据源的响应速度平均值作为N个访问评估参量;也可以将对每个数据源的上次查询请求的执行用时、对每个数据源上次写入请求的执行用时作为2N个访问评估参量。
在一种实现方式中,业务系统切换数据源的目的是为了以新数据源取代老数据源。设第一数据源为新数据源,第二数据源为老数据源,则可以分别对第一数据源和第二数据源执行同一个数据访问操作,比对两个执行结果是否相一致,并且以滑动统计窗口内两个访问结果相一致的占比为比对通过率,将比对通过率作为访问评估参量。其中,滑动统计窗口可以是时间窗口,可以是比对执行结果的次数窗口。当执行新一次执行结果比对后,按照最新的比对结果和当前的滑动统计窗口,来更新比对通过率。
上述实现方式中,新老数据源可能因为数据迁移时更改格式等原因导致新老数据源的字段有所不同。此时可以将在数据迁移时增加、删除、修改等导致数据记录的内容有变更的字段设置为过滤字段,在对两个访问结果进行比对时先排除过滤字段,在比对其他字段。在排除过滤字段后,如果两个查询操作的访问结果相同,则两个访问结果相一致。
在一些应用场景中,为了生成访问评估参量而执行的一些操作可能会影响到数据库或业务系统的性能,例如上述以新数据源取代老数据源的实现方式中,为生成比对通过率而对同一个数据访问请求执行的两次访问操作。为了降低对数据库或业务系统的影响,可以设置一个预定评估周期,在预定评估周期内采集对每个数据源的一次访问操作的若干个特征参数,基于采集的特征参数来生成至少访问评估参量。换言之,在每个预定评估周期内,每个数据源只会有一次访问操作用来生成访问评估参量。在访问评估参量能够及时反映对数据源访问的当前实际情形的条件下,可以采用尽可能长的预定评估周期。
步骤120,在收到数据访问请求后,获取所述数据访问请求的切流策略,切流策略中包括切换条件。
本说明书的实施例中,可以通过设置切流策略来决定以何种方式为一个数据访问请求在N个数据源中选择目标数据源。切流策略中包括切换条件,切换条件中采用访问评估参量来为一个数据访问请求在N个数据源中选择目标数据源。切流策略可以包括一条适用于全部数据访问请求的切换条件;也可以包括分别两条或更多的切换条件,每条切换条件适用于一部分数据访问请求,适用于同一条切换条件的数据访问请求具有一定的共性(如由某个具体的业务过程发起)。
在上述为了实现更快数据库读写的数据源切换例子中,如果将N个数据源的响应速度平均值作为N个访问评估参量,则切换条件可以是:将N个访问评估参量中最小的一个对应的数据源作为目标数据源;如果将对每个数据源的上次查询请求的执行用时、对每个数据源上次写入请求的执行用时作为2N个访问评估参量,则对于数据查询请求,切换条件可以是:将N个查询请求执行用时中最小的一个对应的数据源作为目标数据源,而对于数据写入请求,切换条件可以是:将N个写入请求执行用时中最小的一个对应的数据源作为目标数据源。
在上述以新数据源取代老数据源的实现方式中,在第一个例子中,可以按照即时的比对通过率来设置切换条件:当比对通过率达到预定新数据源阈值时,将第一数据源作为数据访问请求的目标数据源,否则将第二数据源作为数据访问请求的目标数据源。在第二个例子中,可以维护当前目标数据源,按照当前数据源和比对通过率来设置切换条件:如果当前目标数据源为第二数据源并且比对通过率超过预定切流阈值,则将当前目标数据源改为第一数据源;如果当前目标数据源为第一数据源并且比对通过率低于预定回切阈值,则将当前目标数据源改为第二数据源。
在上述实现方式中,可以在切换条件中设置停止数据源切换的条件,也即不再访问旧数据源的条件。例如,停止数据源切换的条件可以是:当比对通过率达到预定停止阈值的持续时间不小于预定切流停止时长时,以第一数据源作为目标数据源。当满足停止数据源切换的条件后,不再进行比对同一个数据访问请求对两个数据源的访问结果,不再更新比对通过率,这样比对通过率将一直满足达到预定停止阈值的持续时间大于预定切流停止时长的条件,第一数据源将一直作为目标数据源。换言之,当不满足停止数据源切换的条件时,才会比对在预定评估周期内分别对第一数据源和第二数据源执行同一个数据访问操作的两个访问结果是否相一致,以及按照滑动统计窗口内访问结果相一致的占比更新比对通过率。
在一些应用场景中,管理人员可能希望能够在特定情形下直接指定数据访问请求的目标数据源。可以在切流策略中包括人工干预项,管理人员可以在人工干预项中添加若干个干预条件,每个干预条件对应于一个指定数据源。当接收的数据访问请求满足人工干预项中的某个干预条件时,以所满足的干预条件对应的指定数据源作为该数据访问请求的目标数据源。具体的干预条件可以根据实际应用场景的需求确定,例如,当数据访问请求由某个具体业务过程发起时,指定数据源为哪个。
人工干预项在确定目标数据源时的优先级高于切换条件,对接收的数据访问请求,如果切流策略中包括人工干预项,先检查该数据访问请求是否满足人工干预项中的干预条件,如果有满足的干预条件,则按照该干预条件的指定数据源确定目标数据源;如果该数据访问请求不满足任何一个干预条件,则按照切换条件来确定目标数据源。人工干预项使得管理人员能够及时方便的对数据源切换施加直接和有效的控制,增加了对切换进行管理时的准确性和灵活性。
运行本说明书实施例的设备可以从本地读取保存的切换策略,也可以从预定的网络存储位置读取切换策略,还可以向其他设备(如负责生成和管理配置文件的服务器)查询得到切换策略,不做限定。
步骤130,根据访问评估参量和切换条件,在N个数据源中确定该数据访问请求的目标数据源。
将步骤110中生成的访问评估参量应用于该数据访问请求的切换策略中的切换条件,即可得到该数据访问请求的目标数据源。
需要说明的是,步骤110与步骤120之间、步骤110和步骤130之间可以没有时序关系。在一些应用场景中,可以在收到数据访问请求后,再生成访问评估参量;也可以根据访问操作实时更新访问评估参量的值,在收到数据访问请求后直接读取当前的访问评估参量值即可。例如,在上述以新数据源取代旧数据源的实现方式中,可以记录每个预定评估周期的比对结果,在收到数据访问请求后,再按照滑动统计窗口计算比对通过率;也可以在缓存中维护比对通过率,在每次比对完成后即更新比对通过率的值,收到数据访问请求后读取缓存中当前的比对通过率。
在确定数据访问请求的目标数据源后,可以执行对目标数据源的访问操作,并按照访问操作的结果对该数据访问请求进行响应。在设置有预定评估周期的上述以新数据源取代老数据源的实现方式中,如果当前的预定评估周期内尚未进行同一个数据访问操作的两个访问结果比对,可以用本次数据访问请求来进行访问结果比对;即根据该数据访问请求分别对第一数据源和第二数据源执行访问操作,将这两个访问操作的访问结果用来更新比对通过率;在对目标数据源的访问操作完成后,按照该访问操作的访问结果响应该数据访问请求。
可以采用缓存来维护当前预定评估周期的访问结果比对次数,这样在当前预定评估周期中收到数据访问请求时,可以根据维护的比对次数来确定对该数据访问请求,是执行对目标数据源的访问操作,还是执行对两个数据源的访问操作已获得两个供比对的访问结果。在每个预定评估周期开始时,将比对次数清零,在按某个数据访问请求执行对两个数据源的访问操作完成后,将比对次数加1。此外,同一个数据访问请求对两个数据源的访问结果、或者比对结果可以记录在缓存中,比对通过率也可以在缓存中更新和记录。
本说明书的实施例中,可以增加切流标识,来指定是否对数据访问请求进行切流。切流标识可以对所有的数据访问请求适用,也可以对不同部分的数据访问请求适用不同的切流标识。在采用了切流标识的应用场景中,将N个数据源中的一个作为缺省数据源。收到数据访问请求后,获取适用于该数据访问请求的切流标识,如果切流标识指定不进行切流,将缺省数据源作为该数据访问请求的目标数据源;如果切流标识指定进行切流,则根据访问评估参量和切换条件,在N个数据源中确定该数据访问请求的目标数据源。
可见,本说明书的实施例中,根据对每个可供切换的数据源的访问操作得到访问评估参量来反映数据源的实际访问情况,收到数据访问请求后按照访问评估参量和适用的切换策略来决定该数据访问请求的目标数据源,避免了人工控制数据源切换对主观经验的依赖,提高了业务系统的运行效率;同时由于无需修改业务系统的代码,有助于业务系统的稳定运行。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书的一个应用示例中,一个网络服务提供商将其业务数据从旧数据库中迁移至新的数据库中,在过渡期内新数据库和旧数据库将作为新、旧两个数据源用来进行数据查询,最终所有的数据访问将通过新数据库完成。该网络服务提供商的服务端运行通用切流器来对查询请求进行数据源切换。
通用切流器的逻辑结构如图2所示,包括配置模块、比对模块,决策模块和查询模块。其中,配置模块向管理人员提供配置界面,供管理人员设置切流标识及缺省数据源、切流策略(包括人工干预项和切换条件)和比对策略(包括预定评估周期和过滤字段)。
本应用示例中,切换条件为:当比对通过率达到预定新数据源阈值时,将新数据源作为数据查询请求的目标数据源,否则将旧数据源作为目标数据源。此外,切换条件中包括停止数据源切换的条件,即:当比对通过率达到预定停止阈值的持续时间不小于预定切流停止时长时,以新数据源作为目标数据源。为切流标识设置的缺省数据源为旧数据源。比对模块在缓存中维护有比对通过率、比对通过率达到预定停止阈值的持续时间、以及在当前预定查询周期内对两个数据源就同一数据查询请求的查询结果进行比对的比对次数。
当发生对业务数据的查询请求时,该数据查询请求被传递给通用切流器。通用切流器在处理该数据查询请求时,配置模块、比对模块,决策模块和查询模块的一种交互流程如图3所示。
传递给通用切流器的数据查询请求由决策模块接收。决策模块从配置模块中读取适用于该数据查询请求的切流标识和切流策略。
如果该数据查询请求的切流标识指定不进行切流(图中未示出),决策模块将缺省数据源(即旧数据源)作为目标数据源,指示查询模块对该数据查询请求执行到旧数据源的查询。查询模块将到旧数据源的查询结果返回给决策模块,由决策模块按照查询结果对该数据查询请求进行响应。
如果该数据查询请求的切流标识指定进行切流,决策模块查看切流策略中的人工干预项是否适用于该数据查询请求。如果该数据查询请求满足人工干预项中的某个干预条件(图中未示出),则将该干预条件对应的指定数据源作为目标数据源,指示查询模块对该数据查询请求执行到目标数据源的查询。查询模块将到目标数据源的查询结果返回给决策模块,由决策模块按照查询结果对该数据查询请求进行响应。
如果该数据查询请求不满足人工干预项中的任意一个干预条件,决策模块从比对模块获取比对通过率、比对通过率达到预定停止阈值的持续时间、以及在当前预定查询周期内的比对次数。决策模块先判断是否满足停止数据源切换的条件,如果比对通过率达到预定停止阈值的持续时间不小于预定切流停止时长(图中未示出),则将新数据源作为目标数据源,指示查询模块对该数据查询请求执行到新数据源的查询。查询模块将到新数据源的查询结果返回给决策模块,由决策模块按照查询结果对该数据查询请求进行响应。
如果不满足停止数据源切换的条件,决策模块按照在当前预定查询周期内的比对次数判断是否要采用该数据查询请求进行查询结果比对。如果当前预定查询周期内的比对次数为1(图中未示出),决策模块判断比对通过率是否达到预定新数据源阈值,如果达到则以新数据源作为目标数据源,否则以旧数据源作为目标数据源,指示查询模块对该数据查询请求执行到目标数据源的查询。查询模块将到目标数据源的查询结果返回给决策模块,由决策模块按照查询结果对该数据查询请求进行响应。
如果当前预定查询周期内的比对次数为0,决策模块指示查询模块对该数据查询请求分别执行到新数据源和旧数据源的查询,指示比对模块将当前预定查询周期内的比对次数加1。查询模块将到两个查询结果返回给决策模块,决策模块将两个查询结果传递给比对模块。决策模块判断比对通过率是否达到预定新数据源阈值,如果达到则采用到新数据源的查询结果来响应该数据查询请求,否则采用到旧数据源的查询结果来响应该数据查询请求。
比对模块根据决策模块的指示将当前预定查询周期内的比对次数更改为1。按照从配置模块中获取的过滤字段,比对模块对两个查询结果中除过滤字段外的其他字段进行比对,如果相同则比对结果为相一致,否则为不一致。比对模块采用本次比对的结果更新比对通过率以及比对通过率达到预定停止阈值的持续时间。当每个预定查询周期开始时,比对模块将当前查询周期内的比对次数重置为0。
本应用示例中,通用切流器在业务系统外实现,对原业务系统侵入性小;通用切流器基于对查询结果的数据分析进行智能的切换决策,提高了运行效率,减少了管理人员的工作;通过采用人工干预项,使管理人员能够便捷的对切换进行干预,提高了切换的准确性和灵活性。
与上述流程实现对应,本说明书的实施例还提供了一种数据源切换的实现装置。该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的CPU(Central Process Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图4所示的CPU、内存以及存储器之外,数据源切换的实现装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
图5所示为本说明书实施例提供的一种数据源切换的实现装置,包括访问评估参量生成单元、切流策略获取单元和目标数据源单元,其中:访问评估参量生成单元用于基于对N个数据源的访问操作,生成至少一个访问评估参量;N为大于1的自然数;切流策略获取单元用于在收到数据访问请求后,获取所述数据访问请求的切流策略;所述切流策略包括切换条件;目标数据源单元用于根据访问评估参量和切换条件,在N个数据源中确定所述数据访问请求的目标数据源。
可选的,所述访问评估参量生成单元具体用于:基于在预定评估周期内采集的对每个数据源的一次访问操作的若干个特征参数,生成至少一个访问评估参量。
一种实现方式中,所述数据源包括:第一数据源和第二数据源;所述访问评估参量包括:比对通过率;所述访问评估参量生成单元具体用于:比对分别对第一数据源和第二数据源执行同一个数据访问操作的两个访问结果是否相一致,按照滑动统计窗口内访问结果相一致的占比更新比对通过率。
上述实现方式中,所述切换条件包括:比对通过率达到预定新数据源阈值时,将第一数据源作为所述数据访问请求的目标数据源,否则将第二数据源作为所述数据访问请求的目标数据源;或,当当前目标数据源为第二数据源并且比对通过率超过预定切流阈值时,将当前目标数据源改为第一数据源;当当前目标数据源为第一数据源并且比对通过率低于预定回切阈值时,将当前目标数据源改为第二数据源。
上述实现方式中,所述访问操作包括:查询操作;所述访问结果相一致包括:在排除过滤字段后,两个查询操作的访问结果相同。
上述实现方式的一个例子中,所述装置还可以包括比对访问操作单元和访问请求响应单元,其中:比对访问操作单元用于当预定评估周期内尚未进行同一个数据访问操作的两个访问结果比对时,根据所述数据访问请求,分别对第一数据源和第二数据源执行访问操作;所述两个访问操作的访问结果用于更新比对通过率;访问请求响应单元用于按照对所述目标数据源的访问结果响应所述数据访问请求。
上述例子中,所述装置还可以包括:比对次数维护单元,用于在缓存维护当前预定评估周期的访问结果比对次数,用来确定是否对所述数据访问请求执行对两个数据源的访问操作。
上述实现方式中,所述切换条件还可以包括:停止数据源切换的条件;所述访问评估参量生成单元具体用于:当不满足停止数据源切换的条件时,比对在预定评估周期内分别对第一数据源和第二数据源执行同一个数据访问操作的两个访问结果是否相一致,按照滑动统计窗口内访问结果相一致的占比更新比对通过率。
可选的,所述停止数据源切换的条件包括:当比对通过率达到预定停止阈值的持续时间不小于预定切流停止时长时,以第一数据源作为目标数据源。
可选的,所述切流策略还包括:人工干预项;所述人工干预项包括至少一个干预条件和对应的指定数据源;所述装置还包括:人工干预项处理单元,用于当接收的数据访问请求满足人工干预项中的某个干预条件时,以所述干预条件对应的指定数据源作为所述数据访问请求的目标数据源。
可选的,所述装置还包括切流标识处理单元,用于在收到数据访问请求后,获取所述数据访问请求的切流标识;所述切流标识用来指定是否进行切流;如果所述切流标识指定不进行切流,将缺省数据源作为所述数据访问请求的目标数据源;所述缺省数据源为N个数据源中的一个;所述目标数据源单元具体用于:当所述切流标识指定进行切流时,根据访问评估参量和切换条件,在N个数据源中确定所述数据访问请求的目标数据源。
本说明书的实施例提供了一种计算机设备,该计算机设备包括存储器和处理器。其中,存储器上存储有能够由处理器运行的计算机程序;处理器在运行存储的计算机程序时,执行本说明书实施例中数据源切换的实现方法的各个步骤。对数据源切换的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
本说明书的实施例提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中数据源切换的实现方法的各个步骤。对数据源切换的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。