数据实时迁移的方法和装置与流程

文档序号:12363904阅读:445来源:国知局
数据实时迁移的方法和装置与流程

本发明属于互联网技术领域,具体地说,涉及一种数据实时迁移的方法和装置。



背景技术:

随着互联网的发展,上网用户不断增加,使网站的访问量也随之大幅增加,对此,各厂商采用服务器镜像技术,在用户相对集中的地方放上缓存设备,作为对原始服务器的镜像服务器,用户访问原来的服务器时,被网络重定向到离用户最近的镜像服务器,从而提高了网络用户的访问质量和访问速度。

但近年来随着电子商务以及社交平台等互联网应用的持续火爆,出现了网络热点集中而且切换频率加快的现象。经常出现网站数据库中某些数据的瞬间并发度极高,对该数据进行写操作的请求急剧增加,这时会使大量请求在数据库等待对该数据进行行锁,同时占用着数据库的工作线程资源,而数据库的工作线程资源是有限的。例如,数据库的系统吞吐量为7000tps,当前在该数据库中存在10个热点数据,每个热点数据的并发数达到了1000tps,则10个热点数据的并发数达到10000tps,已超过系统吞吐量,导致数据库的工作线程得不到释放而变得不可用,使其他非热点数据的处理也会受到影响。



技术实现要素:

有鉴于此,本申请提供了一种数据实时迁移的方法和装置,解决了由于瞬时出现热点数据而导致数据库不可用的技术问题。

为了解决上述技术问题,本申请公开了一种数据实时迁移的方法,包括:

监测数据请求量;根据监测到的数据请求量确定出第一热点数据;在迁移列表中添加所述第一热点数据的数据标识,并启动将所述第一热点数据迁移至第一数据库的过程。

所述方法还包括:判断所述将所述第一热点数据迁移至第一数据库的过程是否完成,当所述将所述第一热点数据迁移至第一数据库的过程已完成时,在所述迁移列表中删除所述第一热点数据的数据标识,并在预设的第一热点数据列表中添加所述第一热点数据的数据标识。

所述方法还包括:当所述将所述第一热点数据迁移至第一数据库的过程未完成时,判断接收到的对所述第一热点数据的请求是否为写入请求;当接收到的对所述第一热点数据的请求是写入请求时,返回写入失败的信息;当接收到的对所述第一热点数据的请求是读取请求时,允许对所述第一热点数据的读取操作。

所述方法还包括:获取所述第一数据库的负载信息;根据所述负载信息确定需要从所述第一数据库迁移至第二数据库的第二热点数据。

所述根据所述负载信息确定需要从所述第一数据库迁移至第二数据库的第二热点数据,包括:获取所述负载信息中的数据锁定队列;根据所述数据锁定队列确定每条第一热点数据所对应的执行中的会话数量;将所述执行中的会话数量超过预设阈值的第一热点数据确定为需要从所述第一数据库迁移至第二数据库的第二热点数据。

所述在预设的第一热点数据列表中添加所述第一热点数据的数据标识之后,所述方法还包括:判断是否接收到对所述第一热点数据的请求;当接收到对所述第一热点数据的请求时,将对所述第一热点数据的请求路由至所述第一数据库。

所述方法还包括:判断接收到的请求是否是对预设的第一热点数据列表中的第一热点数据的请求;当接收到的请求是对所述预设的第一热点数据列表中的第一热点数据的请求时,将所述请求路由至所述第一数据库。

为了解决上述技术问题,本申请还公开了一种数据实时迁移的装置,包括:监测模块,用于监测数据请求量;第一确定模块,用于根据检测到的数 据请求量确定出第一热点数据;第一处理模块,在迁移列表中添加所述第一热点数据的数据标识,并启动将所述第一热点数据迁移至第一数据库的过程。

所述装置还包括:第一判断模块,用于判断所述将所述第一热点数据迁移至第一数据库的过程是否完成,第二处理模块,用于当所述将所述第一热点数据迁移至第一数据库的过程已完成时,在所述迁移列表中删除所述第一热点数据的数据标识,并在预设的第一热点数据列表中添加所述第一热点数据的数据标识。

所述装置还包括:第二判断模块,用于当所述将所述第一热点数据迁移至第一数据库的过程未完成时,判断接收到的对所述第一热点数据的请求是否为写入请求;第三处理模块,用于当接收到的对所述第一热点数据的请求是写入请求时,返回写入失败的信息;第四处理模块,用于当接收到的对所述第一热点数据的请求是读取请求时,允许对所述第一热点数据的读取操作。

所述装置还包括:获取模块,用于获取所述第一数据库的负载信息;第二确定模块,用于根据所述负载信息确定需要从所述第一数据库迁移至第二数据库的第二热点数据。

所述第二确定模块包括:获取子模块,用于获取所述负载信息中的数据锁定队列;第一确定子模块,用于根据所述数据锁定队列确定每条第一热点数据所对应的执行中的会话数量;第二确定子模块,用于将所述执行中的会话数量超过预设阈值的第一热点数据确定为需要从所述第一数据库迁移到第二数据库的第二热点数据。

所述装置还包括:第三判断模块,用于判断是否接收到对所述第一热点数据的请求;第一路由模块,用于当接收到对所述第一热点数据的请求时,将对所述第一热点数据的请求路由至所述第一数据库。

所述装置还包括:第四判断模块,用于判断接收到的请求是否是对预设的第一热点数据列表中的第一热点数据的请求;第二路由模块,用于当接收到的请求是对所述预设的第一热点数据列表中的第一热点数据的请求时,将所述请求路由至所述第一数据库。

与现有技术相比,本申请可以获得包括以下技术效果:监测到数据请求量较大的第一热点数据时,启动将该第一热点数据向第一数据库迁移的过程,释放服务器的工作线程资源,缓解服务器压力,维持数据处理的正常运行。

当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是本申请实施例提供的一种数据实时迁移的方法流程示意图;

图2是本申请实施例提供的将第一热点数据再次进行迁移的方法流程示意图;

图3是本申请实施例提供的一种数据实时迁移的方法流程示意图;

图4是本申请实施例提供的一种数据实时迁移的装置的结构示意图。

具体实施方式

以下将配合附图及实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。

图1是本申请实施例提供的一种数据实时迁移的方法,适用于服务器设备,该方法包括以下步骤。

在步骤S10中,监测数据请求量。

服务器设备监测本地接收到的数据请求量,包括对本地数据的读取请求和写入请求。

在步骤S11中,根据监测到的数据请求量确定出第一热点数据。

对于服务器设备来说,如果接收到数据请求是写入请求,需要对该数据加入行锁,防止其他写入请求同时对该数据进行写入操作;而对于数据的读取请求由于其并不修改数据的值,则可以允许多个请求同时读取该数据。因此,如果同时对某一条数据的写入请求过多,会出现大量写入请求处于等待状态,从而占用服务器线程资源。为了防止这种情况出现,根据检测到的数据请求量确定出第一热点数据,该第一热点数据是指接收到的写入请求频率过高的数据。服务器可以对每条数据在单位时间内接收到的写入请求数量(即写入请求的频率)进行监测,将超过阈值的数据确定为第一热点数据。

在步骤S12中,在迁移列表中添加第一热点数据的数据标识,并启动将第一热点数据迁移至第一数据库的过程。

当某条数据成为第一热点数据时,说明该第一热点数据已占用过多的服务器线程资源,会对服务器的处理能力带来影响,此时需要将该第一热点数据迁移至第一数据库。该第一数据库用于处理针对第一热点数据的数据请求,其本身的数据处理能力也强于该服务器。当某条数据被确定为第一热点数据而需要迁移时,服务器添加该第一热点数据的数据标识到迁移列表中,并同时启动将该第一热点数据迁移到第一数据库的过程。该迁移列表用于记录处于数据迁移状态中的第一热点数据的数据标识,该迁移列表中的第一热点数据是已经开始向第一数据库迁移但迁移过程还没有完成的第一热点数据。

将成为第一热点数据的数据从服务器迁移出去,能够释放该第一热点数据占用的工作线程资源,有效缓解服务器的压力,维持服务器其他数据处理的正常运行。

服务器启动将已成为第一热点数据的数据迁移至第一数据库的过程后,判断该迁移过程是否完成。当该迁移过程未完成时,服务器判断接收到的对该第一热点数据的请求是否为写入请求;如果是写入请求,则直接返回写入失败的信息;如果是读取请求,则允许对该第一热点数据的读取操作。由于该第一热点数据处于向第一数据库的迁移过程中,而写入请求会涉及修改该第一热点数据,因此对所有针对该第一热点数据的写入请求均返回写入失败的信息。由于读取请求不会涉及对该第一热点数据的修改,因此仍然允许对 该第一热点数据的读取操作。服务器中的数据采用单条记录的形式,每次数据迁移的过程最多能够迁移的数据量为10条,因此该第一热点数据处于数据迁移状态的持续时间很短,数据迁移的过程会很快,出现返回写入失败的信息的时间属于毫秒级别,受到该数据迁移过程影响的用户会非常少。

当服务器判断出该迁移过程已经完成时,在迁移列表中删除该第一热点数据的数据标识,而将该第一热点数据的数据标识添加到预设的第一热点数据列表中。该预设的第一热点数据列表用于记录在第一数据库中保存的第一热点数据的数据标识。上述处理代表着该第一热点数据向第一数据库的迁移过程已经完成。

在该第一热点数据向第一数据库迁移的过程完成后,服务器判断是否接收到对该第一热点数据的请求。当接收到对该第一热点数据的请求时,将对该第一热点数据的请求路由至第一数据库。由于该第一热点数据已迁移至第一数据库,服务器接收到对该第一热点数据的请求时,通过预设的路由表将对该第一热点数据的请求路由至第一数据库,由该第一数据库响应对该第一热点数据的请求,从而降低服务器的负载,维持服务器的有效运行。

在一个实施例中,可以预先判断服务器中哪些数据极有可能成为第一热点数据,例如,根据预期判断出对该数据的请求将会非常多,对这些极有可能成为第一热点数据的数据,把它们的数据标识预先添加到该预设的第一热点数据列表,同时把这些数据初始化到第一数据库中,防止其以后出现过高的数据请求而对服务器的数据处理造成影响。。服务器接收到对该预设的第一热点数据列表中的数据的请求时,根据预设的路由表直接将该请求路由至第一数据库,由第一数据库来响应针对该预设的第一热点数据列表中的数据的请求。

在一个实施例中,当第一数据库中的第一热点数据越来越多或者请求量持续升高,使第一数据库的处理能力也受到影响时,则需要将第一数据库中请求量较高的第一热点数据再次进行迁移,该迁移方法如图2所示,包括以下步骤。

在步骤S20中,获取第一数据库的负载信息。

该负载信息包括第一数据库的线程占用率、数据锁定队列等信息。可通 过监控和告警软件获取第一数据库的负载信息。

在步骤S21中,根据负载信息确定需要从第一数据库迁移至第二数据库的第二热点数据。

该第二热点数据是第一数据库中请求量较高或者持续升高的第一热点数据,当第一数据库的负载较高并且自身处理能力受到影响时,需要将该第二热点数据迁移至第二数据库,由第二数据库处理对该第二热点数据的请求,以降低第一数据库的负载。确定需要迁移至第二数据库的第二热点数据方法包括以下步骤:

在步骤S210中,获取负载信息中的数据锁定队列。

该数据锁定是一种保护共享资源的锁定机制,该锁定机制保护共享资源,如数据库中的数据,以避免两个用户在同一时间更新同一数据,该数据锁定包括一个先进先出的队列机制,即先请求的先对数据进行锁定并执行写入操作。

在步骤S211中,根据数据锁定队列确定每条第一热点数据所对应的执行中的会话数量。

该第一数据库的每一个数据锁定队列都对应着其保存的一条第一热点数据。通过该数据锁定队列即可确定该第一数据库接收到了针对哪些第一热点数据的数据请求,再进一步根据数据锁定队列中的会话数量即可确定每条第一热点数据对应的执行中的会话数量。

在步骤S212中,将执行中的会话数量超过预设阈值的第一热点数据确定为需要从第一数据库迁移至第二数据库的第二热点数据。

将第二热点数据迁移至第二数据库的过程与前面所述将第一热点数据迁移至第一数据库的过程相同,在此不进行重复说明。通过上述流程可以在第一数据库出现负载压力过大的情况下,将数据请求量较高的第一热点数据再次迁移,以缓解第一数据库的数据处理压力。

下面通过一个应用场景对本申请实施例提供的数据实时迁移的方法做进一步说明。在线商品销售系统中,商家会针对一些在线商品推出促销活动,用户则会在很短的时间内集中浏览促销商品信息并下单订购。其中,浏览商 品促销信息属于对在线销售服务器中的商品数据的读取操作,而下单订购需要在线销售服务器执行库存数量的扣减,属于对商品数据的写入操作。而在促销期间,会出现极多的用户同时下单订购促销商品的情况,这时会使在线销售服务器的负载过大,数据处理缓慢,而且其他正常销售的商品数据的处理也会受到影响。采用本申请实施例提供的数据实时迁移的方法,能够缓解在线商品服务器的压力,如图3所示,实施过程包括以下步骤。

在步骤S300中,在服务器的第一热点数据列表中预先添加极可能成为热点商品的商品数据标识。

根据商家的促销策略,预判哪些商品极可能成为热点商品,将这类商品在服务器数据中的数据标识预先添加到第一热点数据列表中,并且将这类商品的数据初始化到第一数据库中。

在步骤S301中,判断接收到的数据请求是否是对第一热点数据列表中的数据的请求。当是对第一热点数据列表中的数据的请求时,执行步骤S302;当不是对第一热点数据列表中的数据的请求时,执行步骤S303。

在步骤S302中,将该数据请求路由至第一数据库。

在步骤S303中,将该数据请求在本地处理。

同时,在步骤S304中,服务器监测本地数据请求量。

对于没有被预判为热点商品的商品数据,服务器实时监测这些商品的数据请求量。

在步骤S305中,根据监测到的数据请求量确定出第一热点数据。

某些商品会随着数据请求量的瞬间增多而成为热点商品,服务器将这些商品的数据确定为第一热点数据。

在步骤S306中,在迁移列表中添加第一热点数据的数据标识,并启动将第一热点数据迁移至第一数据库的过程。

服务器将成为热点商品的商品数据的数据标识添加到迁移列表中,并启动将成为热点商品的商品数据向第一数据库进行迁移的过程。

在步骤S307中,判断将第一热点数据迁移至第一数据库的过程是否完成。当将第一热点数据迁移至第一数据库的过程未完成时,执行步骤S308; 当将第一热点数据迁移至第一数据库的过程已完成时,执行步骤S311。

在步骤S308中,判断接收到的对第一热点数据的请求是否为写入请求,当接收到的对第一热点数据的请求是写入请求时,执行步骤S309;当接收到的对第一热点数据的请求是读取请求时,执行步骤S310。

成为热点商品的商品数据向第一数据库的迁移还没有完成时,判断是否有用户对该商品下单订购以及浏览该商品的信息。

在步骤S309中,返回写入失败的信息。

在步骤S310中,允许对第一热点数据的读取操作。

如果有用户浏览该商品的信息,属于对该商品数据的读取请求,则允许浏览,而用户对该商品下单订购属于对该商品数据的写入请求,则直接返回失败信息,该商品当前还不能下单。

在步骤S311中,在迁移列表中删除第一热点数据的数据标识,并在预设的第一热点数据列表中添加第一热点数据的数据标识。

成为热点商品的商品数据向第一数据库的迁移完成后,在迁移列表中删除该商品数据的数据标识,并将该商品数据的数据标识添加到预设的第一热点数据列表中。

在步骤S312中,判断接收到的数据请求是否是对该第一热点数据的请求。当接收到的数据请求是对第一热点数据的请求时,执行步骤S302;当接收到的数据请求不是对第一热点数据的请求时,执行步骤S303。

服务器再接收到对已成为热点商品的商品数据的数据请求后,将该数据请求路由至第一数据库。

同时,在步骤S313中,获取第一数据库的负载信息。

服务器获取第一数据库的负载信息,以防止该第一数据库由于热点商品的商品数据请求量持续增多而导致处理能力下降。

在步骤S314中,获取负载信息中的数据锁定队列;

在步骤S315中,根据数据锁定队列确定每条第一热点数据所对应的执行中的会话数量。

在步骤S316中,将执行中的会话数量超过预设阈值的第一热点数据确定为需要从第一数据库迁移至第二数据库的第二热点数据。

确定出第一数据库中哪些商品数据的请求量过高,需要再次进行迁移,以缓解第一数据库的压力。

图4是本申请实施例提供的一种数据实时迁移的装置,包括:

监测模块40,用于监测数据请求量;

第一确定模块41,用于根据检测到的数据请求量确定出第一热点数据;

第一处理模块42,在迁移列表中添加第一热点数据的数据标识,并启动将第一热点数据迁移至第一数据库的过程。

在一个实施例中,该装置还包括:

第一判断模块,用于判断将第一热点数据迁移至第一数据库的过程是否完成,

第二处理模块,用于当将第一热点数据迁移至第一数据库的过程已完成时,在迁移列表中删除第一热点数据的数据标识,并在预设的第一热点数据列表中添加第一热点数据的数据标识。

在一个实施例中,该装置还包括:

第二判断模块,用于当将第一热点数据迁移至第一数据库的过程未完成时,判断接收到的对第一热点数据的请求是否为写入请求;

第三处理模块,用于当接收到的对第一热点数据的请求是写入请求时,返回写入失败的信息;

第四处理模块,用于当接收到的对第一热点数据的请求是读取请求时,允许对第一热点数据的读取操作。

在一个实施例中,该装置还包括:

获取模块,用于获取第一数据库的负载信息;

第二确定模块,用于根据负载信息确定需要从所述第一数据库迁移至第二数据库的第二热点数据。

该第二确定模块包括:

获取子模块,用于获取负载信息中的数据锁定队列;

第一确定子模块,用于根据数据锁定队列确定每条第一热点数据所对应的执行中的会话数量;

第二确定子模块,用于将执行中的会话数量超过预设阈值的第一热点数据确定为需要从第一数据库迁移到第二数据库的第二热点数据。

在一个实施例中,该装置还包括:

第三判断模块,用于判断是否接收到对所述第一热点数据的请求;

第一路由模块,用于当接收到对第一热点数据的请求时,将对第一热点数据的请求路由至第一数据库。

在一个实施例中,该装置还包括:

第四判断模块,用于判断接收到的请求是否是对预设的第一热点数据列表中的第一热点数据的请求;

第二路由模块,用于当接收到的请求是对预设的第一热点数据列表中的第一热点数据的请求时,将请求路由至第一数据库。

上述装置中的各个功能模块可实现上述数据实时迁移的方法的各个步骤,具体实现过程请参见上述数据实时迁移的方法的各个实施例。

在一个典型的配置中,上述各功能模块也可以由计算设备来实现,该计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁 带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

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