CN102495857B - 一种分布式数据库的负载均衡方法 - Google Patents
一种分布式数据库的负载均衡方法 Download PDFInfo
- Publication number
- CN102495857B CN102495857B CN 201110372392 CN201110372392A CN102495857B CN 102495857 B CN102495857 B CN 102495857B CN 201110372392 CN201110372392 CN 201110372392 CN 201110372392 A CN201110372392 A CN 201110372392A CN 102495857 B CN102495857 B CN 102495857B
- Authority
- CN
- China
- Prior art keywords
- active ues
- database
- data
- migration
- user
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种分布式数据库的负载均衡方法。该方法包括:获取各数据库中的活跃用户数量;根据所述获取的各数据库中的活跃用户数量,以及按照活跃用户均衡分布在各个数据库中的原则,确定各数据库需要迁出或迁入的活跃用户数据;根据所述确定结果,在各数据库间进行活跃用户的数据的迁移。本发明的技术方案,综合考虑了数据库服务器的硬件资源的使用频率,保证了在存储资源成本降低的趋势中高效地利用数据库服务器的其他硬件资源。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种分布式数据库的负载均衡方法。
背景技术
在一些数据量大的应用系统中,需要将海量数据按照一定的算法分布在多个数据库中。随着时间的推移和数据的增多,可能数据的分布不再均衡,导致有些数据库压力过大,有些数据库压力偏小。需要将数据从压力大的数据库迁移一些到压力小的数据库中。或者需要新增数据库,将原来数据库中的数据迁移一些到新增的数据库中。
在一些承载大量用户数据的应用系统中,如即时通讯系统中,为节约运营成本充分利用服务器硬件资源,往往将海量的用户数据按照“服务器的承载量”平均分配到各个数据库服务器中。在这种方式下,通过判断各数据库服务器中的用户数量,把用户数据从用户数量多的数据库服务器中迁移到用户数量较少的数据库服务器中,从而减轻各数据库服务器的压力,实现负载均衡。
上述传统的按“用户数量”作为指标的数据库负载均衡方式,存在如下缺陷:(1)虽然根据用户数量将用户数据均衡分布在多台数据库服务器中,但这种方式的主要出发点仅仅是对存储资源的考量,随着存储介质成本的走低,对数据库服务器的其他资源(如:CPU、内存、网络带宽等)的利用率就显得尤为重要。这种方式对数据库服务器硬件资源利用情况考虑不全。将“用户数量”作为衡量标准的负载均衡方式容易造成部分数据库服务器的CPU、内存、网络带宽等资源的占用居高不下,而其他数据库服务器则处于较空闲状态。(2)在实际的用户数据迁移过程中,会造成大量的较低使用频率的用户数据迁移,不仅占用额外的系统资源和时间开销,也为用户的使用带来一定的风险。
此外,现有技术中还有采用“地域划分”作为指标的数据库服务器负载均衡方式,这种方式本质上是按“用户数量”作为指标的数据库服务器负载均衡方式的变形。这种方式按照“所在地域”的不同将用户数据分配在不同的数据库服务器或数据库服务器集群上,用户较多的地区配置多台数据库服务器或较大规模的数据库服务器集群,反之则配置较少的数据库服务器或较小规模的数据库服务器集群。本质上该种均衡方式仍然是按照“用户数量”来分配资源,存在同样的诸多弊端。
发明内容
本发明提供了一种分布式数据库负载均衡方法,该方法综合考虑了数据库服务器的硬件资源的使用频率,保证了在存储资源成本降低的趋势中高效地利用数据库服务器的其他硬件资源。
为达到上述目的,本发明的技术方案是这样实现的:
一种分布式数据库的负载均衡方法,该方法包括:
获取各数据库中的活跃用户数量;
根据所述获取的各数据库中的活跃用户数量,以及按照活跃用户均衡分布在各个数据库中的原则,确定各数据库需要迁出或迁入的活跃用户数据;
根据所述确定结果,在各数据库间进行活跃用户的数据的迁移。
其中,所述活跃用户为:在单位时间内进行过业务操作,并且操作次数没有超过设定阀值的用户。
本发明实施例的有益效果是:由于活跃用户的数量对数据库服务器的CPU、内存等资源以及网络带宽有极大的影响,因此以活跃用户为负载均衡指标的方案,有效地均衡了各数据库服务器的CPU、内存等资源以及网络带宽资源的负载;并且仅迁移活跃用户,无需迁移大量的普通用户,能够大量节省系统资源和时间开销。
附图说明
图1是本发明实施例中的一种分布式数据库的负载均衡方法的流程图;
图2是传统的数据库负载均衡方式和本发明中的数据库负载均衡方式的对比示意图;
图3是图2中的按活跃用户进行负载均衡的方式的具体流程图;
图4是本发明实施例中的为实现数据迁移所设定的分布式数据库的示意图;
图5是本发明实施例中的用户数据从DB_A1和DB_B1迁移到DB_A2和DB_B2的流程图;
图6是本发明中的用户数据从DB_A1和DB_B1迁移到DB_A2和DB_B2的一个较佳实施例的流程图。
具体实施方式
本申请的发明人在详细了解数据库服务器的负载及其硬件资源的使用情况后,确定主营业务占用的硬件资源类型,从技术层面讲就是确定系统中需要频繁使用的硬件资源和成本昂贵的硬件资源。在大量用户的应用系统中(如:即时通信系统),用户的操作行为往往会占用一定的服务器资源(如:CPU、内存、网络带宽等)。综合数据库服务器各部分硬件资源的成本,本申请的发明人提出了一种新的负载均衡思想——即按“活跃用户数”来进行负载均衡。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例中的一种分布式数据库的负载均衡方法的流程图。所述分布式数据库由分布式的数据库服务器或分布式的服务器集群实现,如图1所示,该方法包括:
101,获取各数据库中的活跃用户数量。
102,根据所述获取的各数据库中的活跃用户数量,以及按照活跃用户均衡分布在各个数据库中的原则,确定各数据库需要迁出或迁入的活跃用户数据。
103,根据所述确定结果,在各数据库间进行活跃用户的数据的迁移。
在本发明中,活跃用户为:在单位时间内进行过业务操作,并且操作次数没有超过设定阀值的用户。即“活跃用户”是指使用系统频率较高的那些正常用户,注意区别个别使用频率超高的以恶意消耗系统资源为目的的恶意用户。
在本发明的一个实施例中,活跃用户的统计规则为:在单位时间内,凡是进行过系统主营业务操作并且是非恶意操作行为的用户均算作活跃用户。例如:在即时通信系统中,单位时间内如果用户有登陆、注销、发送短消息、语音会话等行为,即认定其为活跃用户。同时,可以设置一个或多个合理的阀值来规定用户操作行为的次数,在统计活跃用户的过程中,如果发现用户的某一种行为超过设定的阀值则判定其为恶意用户并且不会将其计入活跃用户的统计。
图2是传统的数据库负载均衡方式和本发明中的数据库负载均衡方式的对比示意图。如图2所示,竖虚线的左侧为传统的数据库负载均衡方式,右侧为本发明中的按活跃用户进行数据库负载均衡方式。每个类型的负载均衡方式中都含有A、B、C三个数据库服务器集群,而每个集群中的矩形表示数据库服务器(没有填充线的表示数据库服务器及其网络负载较低,填充斜线的表示负载居中,填充横线的表示负载较高),圆柱形表示其中的用户数量(分界的上半部分表示普通用户,下半部分表示活跃用户),未分界的圆柱形表示全局数据库。
参见图2,传统的数据库负载均衡方式为:各个集群中分布等量的用户数据,当集群A中活跃用户较少时,A中的用户数据主要为使用次数较少的“沉睡数据”,此时服务器及网络带宽均处于低负载状态。而在集群B中随着活跃用户比例的升高,服务器及网络带宽负载均处于上升状态,此时服务器处于中度负载装填。在集群C中,活跃用户比例已居高不下,造成服务器及网络带宽压力骤增,处于高负荷状态。这个时候,通常的做法是增加服务器集群数量,将用户数据迁移到新的集群中,从而使高负载的集群C上的用户数量减少已达到负载均衡的目的。
参见图2,本发明中,活跃用户负载均衡方式着重考虑的是活跃用户的数量,因为用户的操作行为会占用服务器及网络带宽资源,而用户不进行任何操作的话,他占用的仅仅是磁盘的一块存储空间,这在现在的低存储成本时期不是个问题。活跃用户的数量对服务器及网络带宽资源有极大的影响,图2中的活跃用户部分所展示的是通常的服务器负载状况,也就是说大部门情况下活跃用户是均衡分布在各个服务器集群中的,这样各服务器集群的压力都比较小。但当在某段时间后或出现突发情况时,某个集群中出现较多的活跃用户,这时只要把活跃用户迁移到负载较轻的服务器集群上即可,不用增加额外的硬件成本,同时也减少了需要迁移的用户数量,进而减少用户使用风险。
因此,如图2右侧的活跃用户迁移所示,集群A、B、C中的用户总数不同,A和B中各有300万活跃用户,而C中只有100万活跃用户,这时从A和B中各迁移50万活跃用户到C中使A、B、C都处于相对较低的负载。
图3是图2中的按活跃用户进行负载均衡的方式的具体流程图。
如图3所示,在各数据库服务器集群上分别配置有统计程序即统计单元:1、由各统计程序即统计单元统计对应数据库服务器集群中的活跃用户,并保存到本集群中;2、各数据库服务器集群将自身中的活跃用户数量上报到全局数据库中;3、通过访问全局数据库获取各数据库中的活跃用户数量,生成迁移任务;4、执行相应的迁移任务;5如果迁移成功,则删除原数据;6、如果迁移失败,则删除目标数据。
在图2和3所示的实施例中,增加了全局数据库用来收集各个集群中的活跃用户数量。在本发明的其他实施例中,也可以没有全局数据库,此时活跃用户的统计数据需要分别存储在本地的集群A、B、C中,通过访问不同的数据库服务器集群来获得活跃用户信息。当增加了全局数据库之后,全局数据库可以定期和各个集群交换活跃用户信息,方便实现完全自动化的动态的负载平衡和用户迁移机制。若实现了自动负载平衡和用户迁移机制,当添加了新的服务器集群后,该机制会自动将活跃用户迁移到新的集群设备上实现“无缝扩容”。
下面给出一个实现上述方案的一个具体的实施例。具体操作包括如下步骤:
步骤1、在约定的时刻,统计前一段时间(如前一日)各数据库服务器集群中的活跃用户数量,并将统计结果计入全局数据库中。
所述约定的时刻通常在服务器集群较空闲的时刻,例如凌晨1点。统计过程可以通过编写带定时功能的程序或服务实现,这些程序或服务应该运行在各服务器集群之中,这里称为统计单元。
步骤2、生成迁移列表。生成迁移列表的操作可采用不同的算法实现,这里仅陈述本实施例中采用的一种算法:根据各数据库中的活跃用户数量计算平均活跃用户数量,根据该平均活跃用户数量确定各数据库的活跃用户数据迁入量、迁出量和迁移关系;根据所述确定的各数据库的活跃用户数据迁入量、迁出量和迁移关系,确定各数据库中的具体要迁移的活跃用户数据,以及迁移路径。该算法具体为:
21、在程序启动时创建一个监测线程,该监测线程监测所述各个数据库服务器集群上的统计单元是否完成统计工作(如当日的统计工作是否完成),若已完成再执行步骤22,若没有完成则继续监测。
22、查询全局数据库获得各数据库服务器集群中的活跃用户数量,根据查询结果在内存中创建一张二维表格,其格式为:数据库服务器集群标识,活跃用户数量,用户索引;其中所述用户索引的初始值为活跃用户的标识按递增排序时的最小值,或活跃用户的标识按递减排序时的最大值。
23、根据所述二维表格中的各活跃用户数量计算平均活跃用户数量,平均活跃用户数量=活跃用户数量的总和/数据库服务器集群的数量;从各数据库的活跃用户数量分别减去平均活跃用户数量(即某集群中的活跃用户数量-平均活跃用户数量=迁移量),并将结果保存到一个一维数组中,该一维数组中的各元素与各数据库一一对应表示迁移量,正数表示活跃用户的迁出量,负数表示活跃用户的迁入量;
24、从所述一维数组中找出最大的正数A和最小的负数B,并相加,若:
结果为0,则在该一维数组中将A和B均记为0,转入步骤25;
结果为正数C,则在该一维数组中,将A记为C,将B记为0,转入步骤25;
结果为负数D,则在该一维数组中,将A记为0,将B记为D,转入步骤25;
25、若存在迁移任务队列,则根据步骤24中数据创建迁移任务并添加到任务队列中;若迁移任务队列不存在,则先创建迁移任务队列,再根据步骤24中数据创建迁移任务并添加到任务队列中;所述迁移任务为一种独立的数据类型,其包含如下三个成员:源数据库标识,目标数据库标识,迁移数量;其中:
源数据库标识为步骤24中的初始最大正数A所对应的数据库服务器集群的标识;
目标数据库标识为步骤24中的初始最小负数B所对应的数据库服务器集群的标识;
迁移量同样从步骤24得到,若步骤24中的结果为0时,迁移量等于最大正数A;若步骤24中的结果为正数C,则迁移量等于最大正数A与C的差值;若步骤24中的结果为负数D,则迁移量等于D与最小负数B的差值。
26、根据步骤22和25中的结果生成迁移文本文件(即迁移列表),具体为:依次从迁移任务队列中出队迁移任务,每出队一个迁移任务,按该迁移任务所示的迁移数量,在该迁移任务所示的源数据库中,从该源数据库在所述二维表格中对应的用户索引开始,按活跃用户的标识的递增或递减的排序查找出相应数量的活跃用户的数据,并将查找到的最后一个活跃用户数据对应的活跃用户标识写入所述二维表格的用户索引中。根据所找出的活跃用户的数据以及该迁移任务所示的目标数据库,在迁移文本文件中生成多行迁移数据;其中,每个迁移数据占一行并用分号分隔,每行迁移数据的格式为:用户标识、源数据库标识、目标数据库标识。
然后出队下一个迁移任务,直到迁移任务队列中的所有迁移任务都已被包含在迁移文本文件中。这样迁移文本文件就包含的所有要进行迁移的迁移数据信息。迁移文本文件是一个临时的数据结果,可以放在内存中以减少执行时间。
步骤3、根据所述迁移文本文件执行真正的活跃用户数据迁移操作。
在执行真正的活跃用户数据迁移时,需要考虑其他应用对这些数据的使用,因此本发明中还给处理执行真正的活跃用户数据迁移的具体实现。
本发明后续给出的方案主要解决了分布式数据库中的数据迁移问题,并能保证在数据迁移过程中不影响应用系统的使用,保证了数据的可用性。具体思路为:根据迁移文本文件,将每一条活跃用户数据从源数据库迁移到目标数据库,在迁移过程中将此活跃用户数据锁定,保证了该活跃用户数据的一致性。在迁移过程中,此用户的数据仍然指向原始数据库,迁移成功后指向目标数据库;如果迁移失败,用户的原始数据不会发生改变,删除目标数据库的数据,保证了数据的可用性以及不会产生垃圾数据。
图4是本发明实施例中的为实现数据迁移所设定的分布式数据库的示意图。如图4所示,分布式数据库由一个检索库和多个数据库(这里称为分布式的子库)组成,其中:
分布式的子库是同质同构的一组数据库,按照水平分片的方式存储用户数据;例如,DB_A1和DB_B1是一组子数据库、DB_A2和DB_B2是一组子数据库,以此类推。
检索库存储用户标识和用户数据在子库中的位置信息之间的对应关系,以及与用户标识对应的锁标志。这里根据一定的算法将用户数据分布在不同的字库中,例如,根据对用户标识进行取模的算法,或根据对用户标识进行哈希取模的算法,建立用户标识与用户数据在子库中的位置信息之间的对应关系。在本实施例中,User001的数据存储在DB_A1和DB_B1中,User002的数据存储在DB_A2和DB_B2中,以此类推,则在本实施例中,检索库中存储的初始内容如下:
User001 Index=1 Lock=false;
User002 Index=2 Lock=false;
User003 Index=3 Lock=false;
User004 Index=4 Lock=false;
其中,Index表示用户数据在字库中的位置信息,1表示数据库DB_A1和DB_B1,以此类推。“false”表示锁标志无效,“Ture”表示有效。
下面以用户User001的数据从DB_A1和DB_B1迁移到DB_A2和DB_B2为例,对本发明中的数据迁移的流程进行说明。
图5是本发明实施例中的用户数据从DB_A1和DB_B1迁移到DB_A2和DB_B2的流程图。如图5所示,该流程包括:
步骤51.根据用户User001的用户标识查询检索库,获得该用户数据在原子库(DB_A1和DB_B1)中的位置信息,并将与该用户的用户标识所对应的锁标志设置为有效。
这里将对应的锁标志设置为有效,即设置对应的Lock=True;这样,在数据迁移过程中所有更新此用户的数据的操作都不被允许。在迁移过程中系统获取该用户数据仍然指向原数据库,不影响该用户数据的读取。
步骤52.根据所获取的该用户数据在原子库中的位置信息,从原字库中读取用户数据,并将所获取的用户数据写入目标子库(DB_A2和DB_B2)中。
步骤53.如果写入成功,则更新用户数据的位置信息并解除锁定,即将检索库中的与该用户的标识对应的用户数据在子库中的位置信息,修改为所写入的目标子库中的位置信息,并将该指定用户的用户标识所对应的锁标志设置为无效;删除原子库中的该用户的数据。
此时,系统获取该用户数据,则已经指向目标数据库,可以进行读取和修改操作。
步骤54.如果写入失败,则将该指定用户的用户标识所对应的锁标志设置为无效,并删除已写入目标子库中的该用户的数据。
本步骤,保证了不会产生垃圾数据,用户数据的位置信息仍指向原数据库,保证了数据的可用性。
到此完成了数据的迁移过程。
由上述过程可以看出,在本发明的方案中,访问分布式数据库时会受到检索库中的锁标志的限制,具体为:当需要访问指定用户的数据时,根据所述指定用户的用户标识查询检索库,获得该指定用户数据在子库中的位置信息,并判断与该指定用户的用户标识所对应的锁标志是否为有效;如果为有效,则根据该指定用户数据在子库中的位置信息,只对该指定用户的数据进行读访问操作,而不能对该指定用户的数据进行更新操作;如果为无效,则可以进行读取或修改等任何操作。
此外,还有一种情况是:有些应用根据指定用户的用户标识查询检索库,获得该指定用户数据在子库中的位置信息后,缓存该位置信息,之后会根据所缓存的位置信息访问所述指定用户的数据,而不再查询检索库。此时如果指定用户的数据发生了迁移,则该应用的访问将会出错。针对这种情况,在本发明中对图5所示意的方法进行了进一步的完善,具体如图6所示。
图6是本发明中的用户数据从DB_A1和DB_B1迁移到DB_A2和DB_B2的一个较佳实施例的流程图。如图6所示,其中的“其它应用”为用户(User001)数据在从原子库(DB_A1和DB_B1)迁移到目标子库(DB_A2和DB_B2)之前,就访问原子库(DB_A1和DB_B1)的应用,由于这些应用在本地缓存的了用户数据在原子库(DB_A1和DB_B1)中的位置信息,并根据所缓存的位置信息访问该用户数据,因此本流程相对与图5所示的流程还增加了如下过程:
a、在步骤52中根据所获取的该用户(User001)数据在原子库(DB_A1和DB_B1)中的位置信息,获取用户的数据之前,向已在该原子库访问该用户的数据的其它应用发送该用户的数据将要迁移的第一通知消息;所述其它应用接收到第一通知消息后,只对该用户的数据进行读访问操作,而不对该指定用户的数据进行更新操作;
b、步骤53中,如果写入成功,则还向所述其它应用发送该用户的数据已迁移成功的第二通知消息,该第二通知消息中包含该用户的数据在目标库(DB_A2和DB_B2)中的位置信息;所述其它应用接收到第二通知消息后,用第二通知消息中的位置信息更新所缓存的位置信息,并根据更新后的位置信息访问所述指定用户的数据;
c、步骤54中,如果写入失败,则还向所述其它应用发送指定用户的数据迁移失败的第三通知消息;所述其它应用接收到第三通知消息后,仍根据所之前缓存的位置信息访问所述指定用户的数据。
经过上述方案可以解决有些应用根据本地缓存的位置信息去访问数据库中的用户数据,导致不能感知用户数据迁移的问题。
综上所述,由于活跃用户的数量对数据库服务器的CPU、内存等资源以及网络带宽有极大的影响,因此本发明中的以活跃用户为负载均衡指标的方案,有效地均衡了各数据库服务器的CPU、内存等资源以及网络带宽资源的负载;并且仅迁移活跃用户,无需迁移大量的普通用户,能够大量节省系统资源和时间开销。并且根据检索库进行实际数据迁移的方案,由于在数据迁移的过程中对用户数据在子库中的位置信息的修改机制,以及锁标志的设定机制,使得能够保证用户数据的可用性和一致性,并且不中断用户的业务,使得用户无感知,提高了用户体验。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (6)
1.一种分布式数据库的负载均衡方法,其特征在于,该方法包括以下步骤:
获取各数据库中的活跃用户数量;
根据所述获取的各数据库中的活跃用户数量,以及按照活跃用户均衡分布在各个数据库中的原则,确定各数据库需要迁出或迁入的活跃用户数据;
根据所述确定结果,在各数据库间进行活跃用户的数据的迁移;
所述根据所述获取的各数据库中的活跃用户数量,以及按照活跃用户均衡分布在各个数据库中的原则,确定各数据库需要迁出或迁入的活跃用户数据包括以下步骤:
步骤a、根据各数据库中的活跃用户数量计算平均活跃用户数量,根据该平均活跃用户数量确定各数据库的活跃用户数据迁入量、迁出量和迁移关系;
步骤b、根据所述确定的各数据库的活跃用户数据迁入量、迁出量和迁移关系,确定各数据库中的具体要迁移的活跃用户数据,以及迁移路径;
所述步骤a包括:根据各数据库中的活跃用户数量计算平均活跃用户数量,根据该平均活跃用户数量生成多个迁移任务并放入迁移任务队列中;其中,所述迁移任务为一种数据类型,且包括如下三个成员:源数据库标识,目标数据库标识,迁移数量;
所述步骤b包括:依次从迁移任务队列中取出迁移任务,每取出一个迁移任务,按该迁移任务所示的迁移数量,从该迁移任务所示的源数据库中找出相应数量的活跃用户的数据,并根据所找出的活跃用户的数据以及该迁移任务所示的目标数据库,在迁移文本文件中生成多行迁移数据,直到迁移任务队列中的所有迁移任务都已被包含在迁移文本文件中;每行迁移数据的格式为:用户标识、源数据库标识、目标数据库标识;
该方法在步骤a之前进一步包括步骤a0:
步骤a0、创建一张二维表格,其格式为:数据库标识,活跃用户数量,用户索引;其中所述用户索引的初始值为活跃用户的标识按递增排序时的最小值,或活跃用户的标识按递减排序时的最大值;所述步骤a中的根据平均活跃用户数量生成多个迁移任务并放入迁移任务队列中包括:从各数据库的活跃用户数量分别减去平均活跃用户数量,并将结果保存到一个一维数组中;每次从所述一维数组中找出最大的正数和最小的负数进行相加,根据相加结果生成迁移任务放入迁移队列中,并将所述一维数组中的相应项置0,直到所述一维数组中的所有项都为0;所述步骤b中的从该迁移任务所示的源数据库中找出相应数量的活跃用户的数据包括:从该源数据库在所述二维表格中对应的用户索引开始,在源数据库中按活跃用户的标识按递增或递减的排序查找出相应数量的活跃用户的数据,并将查找到的最后一个活跃用户数据对应的活跃用户标识写入所述二维表格的用户索引中;
所述根据所述确定结果,在各数据库间进行活跃用户的数据的迁移包括:
设置一个检索库,该检索库存储活跃用户标识和活跃用户数据在各数据库中的位置信息之间的对应关系,该检索库中还存储与活跃用户标识对应的锁标志,则对于每一个待迁移的指定活跃用户的数据,其从源数据库迁移到目标数据库的过程包括:
根据所述指定活跃用户的用户标识查询检索库,获得该指定活跃用户的数据在源数据库中的位置信息,并将与该指定活跃用户的用户标识所对应的锁标志设置为有效;根据所获取的指定活跃用户的数据在源数据库中的位置信息,获取指定活跃用户的数据,并将所获取的数据写入目标数据库中;如果写入成功,则将检索库中的与该指定活跃用户的标识对应的用户数据在数据库中的位置信息,修改为所写入的目标数据库中的位置信息,并将该指定活跃用户的用户标识所对应的锁标志设置为无效;删除源数据库中的该指定活跃用户的数据;如果写入失败,则将该指定活跃用户的用户标识所对应的锁标志设置为无效,并删除已写入目标数据库中的该指定活跃用户的数据。
2.根据权利要求1所述的方法,其特征在于,所述活跃用户为:在单位时间内进行过业务操作,并且操作次数没有超过设定阀值的用户。
3.根据权利要求1所述的方法,其特征在于,获取各数据库中的活跃用户数据包括:
由设置在各数据库上的统计单元统计对应数据库中的活跃用户,并将统计结果保存到各自数据库中;
通过分别访问各数据库获取各数据库中的活跃用户数量;或者,各数据库将自身中的活跃用户数量上报到全局数据库中,通过访问全局数据库获取各数据库中的活跃用户数量。
4.根据权利要求3所述的方法,其特征在于,该方法进一步包括:
创建监测线程,该监测线程监测所述各数据库上的统计单元是否完成统计工作,若已完成则执行所述:通过分别访问各数据库获取各数据库中的活跃用户数量;或者,各数据库将自身中的活跃用户数量上报到全局数据库中,通过访问全局数据库获取各数据库中的活跃用户数量。
5.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
当有应用需要访问所述指定活跃用户的数据时,根据所述指定活跃用户的用户标识查询检索库,获得该指定活跃用户数据在数据库中的位置信息,并判断与该指定活跃用户的用户标识所对应的锁标志是否为有效;如果为有效,则根据该指定活跃用户数据在数据库中的位置信息,只对该指定活跃用户的数据进行读访问操作,而不能对该指定活跃用户的数据进行更新操作。
6.根据权利要求1所述的方法,其特征在于,当应用根据所述指定活跃用户的用户标识查询检索库,获得该指定活跃用户数据在数据库中的位置信息后,缓存该位置信息,并根据所缓存的位置信息访问所述指定活跃用户的数据的情况下,该方法进一步包括:
在根据所获取的指定活跃用户数据在源数据库中的位置信息,获取指定活跃用户的数据之前,向已在源数据库访问所述指定活跃用户的数据的应用发送指定活跃用户的数据将要迁移的第一通知消息;所述应用接收到第一通知消息后,只对该指定活跃用户的数据进行读访问操作,而不对该指定活跃用户的数据进行更新操作;
如果写入成功,则向所述应用发送指定活跃用户的数据已迁移成功的第二通知消息,该第二通知消息中包含所述指定活跃用户的数据在目标数据库中的位置信息;所述应用接收到第二通知消息后,用第二通知消息中的位置信息更新所缓存的位置信息,并根据更新后的位置信息访问所述指定活跃用户的数据;
如果写入失败,则向所述应用发送指定活跃用户的数据迁移失败的第三通知消息;所述应用接收到第三通知消息后,仍根据所缓存的位置信息访问所述指定活跃用户的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110372392 CN102495857B (zh) | 2011-11-21 | 2011-11-21 | 一种分布式数据库的负载均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110372392 CN102495857B (zh) | 2011-11-21 | 2011-11-21 | 一种分布式数据库的负载均衡方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102495857A CN102495857A (zh) | 2012-06-13 |
CN102495857B true CN102495857B (zh) | 2013-08-21 |
Family
ID=46187682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110372392 Active CN102495857B (zh) | 2011-11-21 | 2011-11-21 | 一种分布式数据库的负载均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102495857B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102984396B (zh) * | 2012-12-25 | 2015-04-29 | 从兴技术有限公司 | 活跃用户数统计方法及装置 |
CN104184673B (zh) * | 2013-05-24 | 2017-11-28 | 中国电信股份有限公司 | 基于即时通信业务的负载均衡方法和系统 |
CN104133824B (zh) * | 2013-08-13 | 2015-09-09 | 腾讯科技(深圳)有限公司 | 一种样本属性的动态分布数据获取方法及系统 |
CN104598459B (zh) * | 2013-10-30 | 2019-01-15 | 阿里巴巴集团控股有限公司 | 数据库处理、数据访问方法及系统 |
CN104410709B (zh) * | 2014-12-12 | 2018-06-08 | 北京奇虎科技有限公司 | 跨服用户的分配方法和装置 |
CN106294440B (zh) * | 2015-05-27 | 2019-06-07 | 阿里巴巴集团控股有限公司 | 数据实时迁移的方法和装置 |
CN106610868A (zh) * | 2015-10-21 | 2017-05-03 | 阿里巴巴集团控股有限公司 | 一种负载均衡方法及装置 |
CN105574141B (zh) * | 2015-12-15 | 2021-04-27 | 杭州朗和科技有限公司 | 一种对数据库进行数据迁移的方法和装置 |
CN105516325A (zh) * | 2015-12-18 | 2016-04-20 | 内蒙古农业大学 | 一种根据应用负载进行弹性扩容和流量分发扩展的云负载平衡手段 |
CN106357726B (zh) * | 2016-08-24 | 2019-08-20 | 东软集团股份有限公司 | 负载均衡方法及装置 |
CN106447865A (zh) * | 2016-10-25 | 2017-02-22 | 贵州华尚高新技术有限公司 | 一种智能锁低功耗远程控制系统的使用方法及系统 |
CN106899857B (zh) * | 2017-03-23 | 2019-03-15 | 武汉斗鱼网络科技有限公司 | 服务器负载调节方法、装置及服务器 |
CN107277144B (zh) * | 2017-06-22 | 2021-02-09 | 浙江力石科技股份有限公司 | 一种分布式高并发云存储数据库系统及其负荷均衡方法 |
US10872066B2 (en) * | 2017-06-27 | 2020-12-22 | Salesforce.Com, Inc. | Systems and methods of database tenant migration |
CN107294865B (zh) * | 2017-07-31 | 2019-12-06 | 华中科技大学 | 一种软件交换机的负载均衡方法及软件交换机 |
CN109388627B (zh) * | 2017-08-08 | 2022-08-09 | 阿里巴巴集团控股有限公司 | 一种数据库访问的控制方法、装置及电子设备 |
CN107508901B (zh) * | 2017-09-04 | 2020-12-22 | 北京京东尚科信息技术有限公司 | 分布式数据处理方法、装置、服务器和系统 |
CN107656813A (zh) * | 2017-09-29 | 2018-02-02 | 上海联影医疗科技有限公司 | 一种负载调度的方法、装置及终端 |
CN107729570B (zh) * | 2017-11-20 | 2021-06-08 | 北京百度网讯科技有限公司 | 用于服务器的数据迁移方法和装置 |
CN109726317B (zh) * | 2018-12-20 | 2021-06-22 | 国网北京市电力公司 | 展示数据的方法和装置 |
CN113407108A (zh) * | 2020-03-16 | 2021-09-17 | 北京沃东天骏信息技术有限公司 | 一种数据存储方法和系统 |
CN113342780A (zh) * | 2021-06-28 | 2021-09-03 | 深圳壹账通智能科技有限公司 | Dsu数据的迁移方法、装置和计算机设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101014045B (zh) * | 2007-02-02 | 2010-09-01 | 清华大学 | 服务承载网中服务管理的分布式方法 |
CN102055650B (zh) * | 2009-10-29 | 2012-10-17 | 华为技术有限公司 | 负载均衡方法及系统和管理服务器 |
-
2011
- 2011-11-21 CN CN 201110372392 patent/CN102495857B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102495857A (zh) | 2012-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102495857B (zh) | 一种分布式数据库的负载均衡方法 | |
US20190340265A1 (en) | Containerization for elastic and scalable databases | |
US9230002B2 (en) | High performant information sharing and replication for single-publisher and multiple-subscriber configuration | |
CN105205014B (zh) | 一种数据存储方法和装置 | |
US10089317B2 (en) | System and method for supporting elastic data metadata compression in a distributed data grid | |
US10356150B1 (en) | Automated repartitioning of streaming data | |
US9836516B2 (en) | Parallel scanners for log based replication | |
Elmeleegy et al. | Spongefiles: Mitigating data skew in mapreduce using distributed memory | |
US11836132B2 (en) | Managing persistent database result sets | |
US11863675B2 (en) | Data flow control in distributed computing systems | |
WO2021139431A1 (zh) | 微服务的数据同步方法、装置、电子设备及存储介质 | |
US11609910B1 (en) | Automatically refreshing materialized views according to performance benefit | |
WO2017157111A1 (zh) | 防止内存数据丢失的的方法、装置和系统 | |
CN109614270A (zh) | 基于Hbase的数据读写方法、装置、设备及存储介质 | |
US9898614B1 (en) | Implicit prioritization to rate-limit secondary index creation for an online table | |
CN107590199B (zh) | 一种面向内存的多线程数据库设计方法 | |
CN112685403A (zh) | 一种隐患排查数据存储的高可用框架系统及其实现方法 | |
CN110825732A (zh) | 数据查询方法、装置、计算机设备和可读存储介质 | |
JPWO2012124295A1 (ja) | コンピュータシステム、制御システム、制御方法および制御プログラム | |
CN106934044B (zh) | 一种数据处理方法及装置 | |
CN115858522A (zh) | 基于树的索引结构的局部压缩 | |
US9503353B1 (en) | Dynamic cross protocol tuner | |
WO2019196595A1 (zh) | 管理应用程序的方法与装置 | |
CN106557469B (zh) | 一种处理数据仓库中数据的方法及装置 | |
US8621470B2 (en) | Wakeup-attribute-based allocation of threads to processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: Room 810, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A room 602 Patentee before: BEIJING D-MEDIA COMMUNICATION TECHNOLOGY Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |