适用于分布式内存数据库的在线负载均衡方法与流程

文档序号:13207858阅读:236来源:国知局
适用于分布式内存数据库的在线负载均衡方法与流程

本发明涉及一种分布式系统中的负载均衡方法,具体地,涉及一种适用于分布式内存数据库的在线负载均衡方法。



背景技术:

在分布式数据库中,在线负载均衡是一种非常重要的技术。针对不同用户的事务请求分布来为数据库寻找一个最优的配置可以达到数据库事务处理的负载均衡。通常需要在线的负载均衡方法,因为负载均衡有时需要在高峰流量时发生;在线即不影响当前的事务执行。随着大数据时代的到来,分布式数据库变得越来越广泛,而这些数据库通常都会提供负载均衡的功能。

在线负载均衡可以使用在线配置来完成,在线配置分为两个步骤,计算新的数据规划以及通过数据迁移来在数据库中应用新的数据规划。数据规划将特定的数据库数据指定给相应的服务器去处理;负载不均衡发生时,通常是由于过多热门的数据被划分到少部分服务器中,导致这些服务器过载而其他服务器空闲。为了解决这个问题,新的数据规划首先会将一部分热门数据指定到空闲服务器中,再通过数据迁移将这些数据实际的搬移到服务器上,从而达到更好的负载均衡。

目前,新的数据规划通过一种贪心的算法来计算,算法会根据当前服务器的负载将热门数据搬移到最空闲的服务器中,直到负载变得均衡。这种方法可以很快的计算出较优的数据规划,然而却会产生很多的数据移动。通常移动的数据越多,则需要花费更长时间来进行数据迁移,而数据迁移会对事务执行的性能带来影响。在线数据迁移的方法有pre-copy和post-copy两种:pre-copy首先将数据从源服务器拷贝到目标服务器中,当数据拷贝完成时将用户的请求转移到目标服务器中执行。和pre-copy相反,post-copy首先将事务的数据请求在目标服务器中执行,当事务缺少需要的数据时按需从源服务器中读取数据。这两种数据迁移方法仍会对事务处理的性能带来非常大的影响。在pre-copy的方法中,由于事务会修改被迁移的数据,被修改的数据需要被重新传输,造成更多的数据传输;同时,正在执行的事务需要记录执行时修改的数据,这也会造成性能影响。在post-copy中,当事务请求缺少所需要的数据时,直到数据被读取回来事务才能继续执行,因此事务的执行会被中断,这对一些复杂的事务,例如需要访问许多数据的事务来说影响更大。

因此,如何高效的完成在线配置仍然是一个非常重要的问题。



技术实现要素:

本发明的目的是为了克服上述现有技术存在的缺陷而提供一种适用于分布式内存数据库的在线负载均衡方法。

根据本发明的一个方面,提供一种适用于分布式内存数据库的在线负载均衡方法,其特征在于,该方法先使用基于数据备份位置的贪心算法对当前数据库计算一个新的划分,以使新划分下每台服务器接受的请求均匀分布,然后通过在线数据迁移将新的数据划分应用在数据库中;在负载均衡过程中,控制端对执行用户请求的服务器进行在线配置,其特征在于,所述在线配置包括以下步骤:

步骤一,当负载不均衡被系统检测出时,控制端查询当前数据的负载均衡情况,即数据在一段时间内被访问的次数;

步骤二,根据数据的负载均衡情况,控制端遍历热门数据并将其分配到负载比较低的具有热门数据备份的服务器中,如果新的分配能够达到负载均衡,则执行步骤四;

步骤三,当负载仍然不均衡时,控制端再次遍历热门数据并将其分配到负载比较低的服务器中;

步骤四,控制端通知知所有服务器,将事务请求执行时的日志发送到数据的目标服务器中,目标服务器将日志更新到相关数据中;

步骤五,控制端通知目标服务器从数据的原服务器中以及其备份服务其中进行数据读取,并存储在本地内存中;

步骤六,当所有数据读取完成后,控制端收集被迁移数据的相关事务日志信息;

步骤七,控制端通知知服务器停止在被迁移数据原服务器访问数据,而请求将在目标服务器中执行,并将步骤六收集的日志信息发送给目标服务器;

步骤八,目标服务器等本地的相关日志都处理完成,允许事务请求访问被迁移数据。

优选地,所述步骤一通过每台服务器中数据总访问数之间的差别来判断负载是否均衡,数据被事务修改,读取或者插入时则认为被访问。

优选地,所述步骤二的热门数据是指访问数排名前k的数据,k由用户指定,k为自然数。

优选地,所述步骤四相关数据指的是需要迁移到本地的数据。

优选地,所述步骤五中如果目标服务器拥有被迁移数据的一个备份,则不进行读取。

优选地,所述步骤六的相关事务日志信息是指哪些日志包含了被迁移数据的修改。

优选地,所述控制端采用监视器、规划器以及协调器,而服务器主要包括事务处理模块、数据存储模块以及日志处理模块,监视器负责监视和存储系统中数据的访问情况,并且定期地查询所有服务器来更新数据的访问情况;当数据被事务修改,读取或者插入时则认为被数据访问,监视器通过计算数据被访问的数量来判断哪些数据被访问比较多以及每台服务器的负载情况;当监视器发现系统负载不均衡,即某些服务器的数据访问比其他服务器高很多时,监视器通知规划器来根据数据访问量来生成的新的数据规划;规划器利用监视器提供的数据访问量信息来计算新的数据规划,当新的数据规划计算完成后,规划器使用协调器来将新的规划应用到整个系统中。

与现有技术相比,本发明具有如下的有益效果:

一,与不考虑现有数据备份的数据规划计算方法相比,生成的新的规划所需要移动的数据少很多,极大的减少数据迁移的时间;

二,与pre-copy方法相比,在数据迁移的过程中,不需要记录事务所修改的数据的集合,同时不需要多轮数据传输,这样对事务的性能影响更低,同时传输的数据更少也更快;

三,和post-copy方法相比较,事务在执行的时候可以并发的访问被迁移的数据,极大的减少了数据迁移对性能的影响。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明适用于分布式数据库事务处理的在线负载均衡方法的流程图。

图2为数据库的结构示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。

本发明适用于分布式内存数据库的在线负载均衡方法,其特征在于,该方法先使用基于数据备份位置的贪心算法对当前数据库计算一个新的划分,以使新划分下每台服务器接受的请求均匀分布,然后通过在线数据迁移将新的数据划分应用在数据库中;在负载均衡过程中,控制端对执行用户请求的服务器进行在线配置,该方法包括以下步骤:

步骤一,当负载不均衡被系统检测出时,控制端查询当前数据的负载均衡情况,即数据在一段时间内被访问的次数;

步骤二,根据数据的负载均衡情况,控制端遍历热门数据并将其分配到负载比较低的具有热门数据备份的服务器中,如果新的分配能够达到负载均衡,则执行步骤四;

步骤三,当负载仍然不均衡时,控制端再次遍历热门数据并将其分配到负载比较低的服务器中;

步骤四,控制端通知知所有服务器,将事务请求执行时的日志发送到数据的目标服务器中,目标服务器将日志更新到相关数据中;

步骤五,控制端通知目标服务器从数据的原服务器中以及其备份服务其中进行数据读取,并存储在本地内存中;

步骤六,当所有数据读取完成后,控制端收集被迁移数据的相关事务日志信息;

步骤七,控制端通知知服务器停止在被迁移数据原服务器访问数据,而请求将在目标服务器中执行,并将步骤六收集的日志信息发送给目标服务器;

步骤八,目标服务器等本地的相关日志都处理完成,允许事务请求访问被迁移数据。

所述步骤一通过每台服务器中数据总访问数之间的差别来判断负载是否均衡,数据被事务修改,读取或者插入时则认为被访问,这样可以有效判断系统当前哪些数据是热门数据以及哪些数据是冷门数据,为生成新的规划提供支持。

所述步骤二的热门数据是指访问数排名前k的数据,k由用户指定,k为自然数。来权衡需要搬移的数据量大小以及新的新的规划对系统的影响。

所述步骤四相关数据指的是需要迁移到本地的数据,防止数据出错。

所述步骤五中如果目标服务器拥有被迁移数据的一个备份,则不进行读取,以减少物理搬移数据的数量。

所述步骤六的相关事务日志信息是指哪些日志包含了被迁移数据的修改,以确保存储在目标机器中的数据时最新的。

如图1所示为本发明的在线负载均衡方法的具体流程,通过在线配置来调整分布式数据库划分。下面以图2的数据库为例,结合图1对以下的在线配置进行详细描述:

在步骤四十一中,控制端检测出系统当前存在负载不均衡的情况,控制端收集当前数据库数据的访问情况,得到每个数据的访问量以及每台服务器的总访问量,随后执行步骤四十二;

在步骤四十二中,控制端首先对数据的根据其访问量进行排序,随后根据数据访问量的高低从高到低遍历k个数据,如果遍历中的数据所在的服务器过载,则将这个数据分配给有这个数据备份的访问量最低的服务其中,重新计算每台服务气的访问量;当遍历完成后,如果重新分配后的负载仍然不均衡,则再次根据数据访问量的高低遍历k个数据,如果有数据所在的服务器过载,则将其迁移给当前访问量最低的服务器;根据两次遍历所产生的数据分配生成新的数据规划,开始进行数据迁移,执行步骤四十三;

在步骤四十三中,控制端通知知所有正在执行的事务,如果其修改被迁移的数据并且提交,则将其日志发送给被迁移数据的目标机器;以图2的数据库为例,数据库的所有数据被划分为三个数据划分,第0个划分的主备份在服务器0,有一个备份在第一服务器1;假设新的数据规划要求将0的主备份迁移到第二服务器2中;这时候,如果一个事务在服务器0访问划分0的数据,则其需要将日志发送到服务器2中;当通知完成后,执行步骤四十四;

在步骤四十四中,目标服务器将数据迁移到自身内存中;以图2的数据库为例,假设数据划分0将迁移到第二服务器2中,第二服务器2会从服务器0中进行数据读取并应用到本地数据库中;同时,如果划分0有一个备份数据在第一服务器1中,则第二服务器2也从服务器中读取划分0的数据;当所有数据读取完成的时候,执行步骤四十五;

在步骤四十五中,控制端通知知所有事务在目标服务器中访问被迁移的数据;同时目标服务器等待本地相关日志都被处理完成,然后允许事务请求访问被迁移数据;以图2的数据库为例,假设划分0已经被迁移到第二服务器2中,控制端会收集修改划分0的相关事务的日志信息,随后控制端通知知第二服务器2日志信息,第二服务器2根据收到的日志信息等待和日志信息有关的日志被处理完成后,允许事务请求访问划分0的数据。

本发明能够更快的完成负载均衡,同时对事务请求的执行的影响非常小。

本发明控制端采用监视器、规划器以及协调器,而服务器主要包括事务处理模块、数据存储模块以及日志处理模块,监视器负责监视和存储系统中数据的访问情况,并且定期地查询所有服务器来更新数据的访问情况;当数据被事务修改,读取或者插入时则认为被数据访问,监视器通过计算数据被访问的数量来判断哪些数据被访问比较多以及每台服务器的负载情况;当监视器发现系统负载不均衡,即某些服务器的数据访问比其他服务器高很多时,监视器通知规划器来根据数据访问量来生成的新的数据规划;规划器利用监视器提供的数据访问量信息来计算新的数据规划,当新的数据规划计算完成后,规划器使用协调器来将新的规划应用到整个系统中。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。

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