分布式内存数据重分布方法及系统、主控服务器与流程

文档序号:11693220阅读:145来源:国知局
分布式内存数据重分布方法及系统、主控服务器与流程
本发明涉及数据存储和访问
技术领域
,特别涉及一种分布式内存数据重分布方法及系统、主控服务器。
背景技术
:当前随着业务范围的快速扩展,银行﹑互联网企业面临着不断增长的交易欺诈风险。为降低这些交易的风险,企业将监控环节提前至交易时刻,即在后台服务器收到交易请求后,需要在毫秒级时间内提供历史交易数据以评价当前交易的风险等级,并将新增的交易数据传输给后台服务器成为新的历史评价数据。如何在短时间内为大量的并发交易提供历史交易情况,并将实时的交易数据加工成为实时的评价信息,为企业提供实时决策的依据,直接考验着企业的运营管理水平和技术能力。为此,多数企业采取分布式内存存储/访问技术,将实时数据分布存储在服务器集群的内存中,相比传统数据库,这种直接从内存中存取数据的方式不仅更快速,同时也能避免读取i/o的操作瓶颈,更符合企业短时间处理大量实时交易数据的需求。然而,随着处理交易数据量的不断增大,给服务器集群的内存存储空间带来了巨大压力。目前,企业一般是通过横向扩展的方式,即,增加新的服务器来扩展内存存储空间;再将原有服务器中的内存数据重新分布,最终完成内存服务器集群的扩容。这种方法存在如下问题:在服务器内存数据重分布时,内存数据的存储位置都会发生变化,需要进行大规模的数据重新加载,直至内存数据重分布过程完成之后,系统才能恢复运行状态,提供正常服务,这样大大影响了系统对外提供服务的能力,影响了业务数据处理的实时性,容易造成数据丢失,也降低了系统的安全性和可靠性。技术实现要素:本发明实施例提供了一种分布式内存数据重分布方法,不影响系统对外提供连续服务的能力,不影响业务数据处理的实时性,也不会造成数据丢失,同时也不会降低系统的安全性和可靠性。分布式内存数据重分布方法包括:接收内存数据存储服务器集群发送的每台内存数据存储服务器的内存使用数据;当内存数据存储服务器集群中的至少一台内存数据存储服务器的内存使用数据大于预设的内存使用阈值时,触发数据重分布过程;确定数据迁移信息,所述数据迁移信息包括需要数据迁出的内存数据存储服务器的ip地址、待迁移的业务数据的hash值、待迁移的业务数据量和目标服务器的ip地址;根据数据迁移信息将持久化存储的待迁移的业务数据迁移到目标服务器,所述目标服务器为内存数据存储服务器集群中新增的内存数据存储服务器。在一个实施例中,该方法还包括:在数据重分布完成后,向需要数据迁出的内存数据存储服务器发送内存数据重分布迁移完成信息,控制需要数据迁出的内存数据存储服务器将已完成迁移的业务数据删除。在一个实施例中,该方法还包括:接收前端访问服务器集群发送的业务数据,并确定该业务数据的hash值,根据路由表和业务数据的hash值,将业务数据发送至内存数据存储服务器集群中对应的内存数据存储服务器;所述路由表记录了hash值与内存数据存储服务器的映射关系,每台内存数据存储服务器的数据存储格式为:<hash值,业务数据>。在一个实施例中,根据路由表和业务数据的hash值,将业务数据发送至内存数据存储服务器集群中对应的内存数据存储服务器,包括:判断该业务数据的hash值是否介于路由表中hash值的范围内,当该业务数据的hash值介于路由表中hash值的范围内时,从路由表中找到与该业务数据的hash值对应的内存数据存储服务器的ip地址,将该业务数据发送至该ip地址对应的内存数据存储服务器。在一个实施例中,该方法还包括:在数据重分布完成后,对路由表进行参数更新;对路由表进行参数更新,包括:当内存数据存储服务器上存储的业务数据改变时,根据内存数据存储服务器的ip地址,更新对应的业务数据的hash值;当增加了内存数据存储服务器时,增加新的内存数据存储服务器的ip地址,并增加对应的业务数据的hash值。在一个实施例中,根据数据迁移信息将持久化存储的待迁移的业务数据分配给目标服务器,包括:将前端访问服务器集群发送的业务数据进行持久化存储,其存储格式为:<内存数据存储服务器的ip地址,hash值,业务数据>;根据数据迁移信息,对本地存储的重分布表的参数进行更新;重分布表的参数包括需要数据迁出的内存数据存储服务器的ip地址、待迁移的业务数据的hash值和目标服务器的ip地址,三者一一对应;根据更新后的重分布表,按顺序将待迁移的业务数据迁移到目标服务器。在一个实施例中,该方法还包括:将内存使用数据记录在数据重分布控制参数表中;其中,数据重分布控制参数表中的参数包括每台内存数据存储服务器的标识、每台内存数据存储服务器的内存使用数据和每台内存数据存储服务器的数据重分布状态,三者一一对应;数据重分布状态包括未开始重分布状态、开始重分布状态和完成重分布状态;当内存数据存储服务器集群中的至少一台内存数据存储服务器的内存使用数据大于预设的内存使用阈值时,触发数据重分布过程,包括:当监控到内存数据存储服务器集群中的至少一台内存数据存储服务器的内存使用数据大于预设的内存使用阈值,并且全部内存数据存储服务器的重分布状态为未开始重分布状态时,触发数据重分布过程;在数据重分布过程触发后,修改需要数据迁出的内存数据存储服务器的数据重分布状态。在一个实施例中,按如下方式确定数据迁移信息:确定在新增一台内存数据存储服务器的情况下,平均每台内存数据存储服务器的内存使用数据其计算公式如下:其中,si为第i台内存数据存储服务器的内存使用数据;n为内存数据存储服务器集群中内存数据存储服务器的个数;确定每台内存数据存储服务器需要迁移的业务数据量:其中,mi为第i台内存数据存储服务器需要迁移的业务数据量;space为内存数据存储服务器的内存空间;确定每台内存数据存储服务器迁移业务数据的hash值的个数ki:其中,m为每一个业务数据的hash值所占用的存储空间;根据ki和第i台内存数据存储服务器原始存储的业务数据的hash值,并根据hash值划分出相应的迁移业务数据。在一个实施例中,该方法还包括:接收前端访问服务器集群发送的读取数据请求;根据读取数据请求到对应的内存数据存储服务器上获取相应的业务数据;将相应的业务数据发送至前端访问服务器集群。本发明实施例还提供了一种主控服务器,该主控服务器包括:接收模块,用于接收内存数据存储服务器集群发送的每台内存数据存储服务器的内存使用数据;触发模块,用于当内存数据存储服务器集群中的至少一台内存数据存储服务器的内存使用数据大于内存使用阈值时,触发数据重分布过程;信息确定模块,用于确定数据迁移信息,所述数据迁移信息包括需要数据迁出的内存数据存储服务器的ip地址、待迁移的业务数据的hash值、待迁移的业务数据量和目标服务器的ip地址;发送模块,用于根据数据迁移信息将持久化存储的待迁移的业务数据迁移到目标服务器,所述目标服务器为内存数据存储服务器集群中新增的内存数据存储服务器。在一个实施例中,发送模块还用于:在数据重分布完成后,向需要数据迁出的内存数据存储服务器发送内存数据重分布迁移完成信息,控制需要数据迁出的内存数据存储服务器将已完成迁移的业务数据删除。在一个实施例中,接收模块还用于:接收前端访问服务器集群发送的业务数据;信息确定模块还用于:确定该业务数据的hash值;发送模块还用于:根据路由表和业务数据的hash值,将业务数据发送至内存数据存储服务器集群中对应的内存数据存储服务器;所述路由表记录了hash值与内存数据存储服务器的映射关系,每台内存数据存储服务器的数据存储格式为:<hash值,业务数据>。在一个实施例中,发送模块具体用于:判断该业务数据的hash值是否介于路由表中hash值的范围内,当该业务数据的hash值介于路由表中hash值的范围内时,从路由表中找到与该业务数据的hash值对应的内存数据存储服务器的ip地址,将该业务数据发送至该ip地址对应的内存数据存储服务器。在一个实施例中,还包括:参数更新模块,用于在数据重分布完成后,对路由表进行参数更新;参数更新模块具体用于:当内存数据存储服务器上存储的业务数据改变时,根据内存数据存储服务器的ip地址,更新对应的业务数据的hash值;当增加了内存数据存储服务器时,增加新的内存数据存储服务器的ip地址,并增加对应的业务数据的hash值。在一个实施例中,发送模块具体用于:将前端访问服务器集群发送的业务数据进行持久化存储,其存储格式为:<内存数据存储服务器的ip地址,hash值,业务数据>;根据数据迁移信息,对本地存储的重分布表的参数进行更新;重分布表的参数包括需要数据迁出的内存数据存储服务器的ip地址、待迁移的业务数据的hash值和目标服务器的ip地址,三者一一对应;根据更新后的重分布表,按顺序将待迁移的业务数据迁移到目标服务器。在一个实施例中,还包括:参数记录模块,用于将内存使用数据记录在数据重分布控制参数表中;其中,数据重分布控制参数表中的参数包括每台内存数据存储服务器的标识、每台内存数据存储服务器的内存使用数据和每台内存数据存储服务器的数据重分布状态,三者一一对应;数据重分布状态包括未开始重分布状态、开始重分布状态和完成重分布状态;触发模块具体用于:当监控到内存数据存储服务器集群中的至少一台内存数据存储服务器的内存使用数据大于预设的内存使用阈值,并且全部内存数据存储服务器的重分布状态为未开始重分布状态时,触发数据重分布过程;修改模块,用于在数据重分布过程触发后,修改需要数据迁出的内存数据存储服务器的数据重分布状态。在一个实施例中,数据迁移信息确定模块具体用于:确定在新增一台内存数据存储服务器的情况下,平均每台内存数据存储服务器的内存使用数据其计算公式如下:其中,si为第i台内存数据存储服务器的内存使用数据;n为内存数据存储服务器集群中内存数据存储服务器的个数;确定每台内存数据存储服务器需要迁移的业务数据量:其中,mi为第i台内存数据存储服务器需要迁移的业务数据量;space为内存数据存储服务器的内存空间;确定每台内存数据存储服务器迁移业务数据的hash值的个数ki:其中,m为每一个业务数据的hash值所占用的存储空间;根据ki和第i台内存数据存储服务器原始存储的业务数据的hash值,并根据hash值划分出相应的迁移业务数据。在一个实施例中,接收模块还用于:接收前端访问服务器集群发送的读取数据请求;根据读取数据请求到对应的内存数据存储服务器上获取相应的业务数据;发送模块还用于:将相应的业务数据发送至前端访问服务器集群。本发明实施例还提供了一种分布式内存数据重分布系统,该系统包括:上述所述的主控服务器;前端访问服务器集群;内存数据存储服务器集群。在本发明实施例中,在至少一台内存数据存储服务器的内存使用数据大于预设的内存使用阈值时,触发数据重分布过程,根据确定的数据迁移信息将持久化存储的待迁移的业务数据迁移到目标服务器,其中,目标服务器为内存数据存储服务器集群中新增的内存数据存储服务器。这样对于前端访问服务器来说,确保了对原有内存数据存储服务器上数据的访问通畅,不影响系统对外提供连续服务的能力,不影响业务数据处理的实时性,也不会造成数据丢失,同时也不会降低系统的安全性和可靠性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种分布式内存数据重分布系统的结构图;图2是本发明实施例提供的一种主控服务器的结构图;图3是本发明实施例提供的另一种分布式内存数据重分布系统的结构图;图4是本发明实施例提供的一种数据路由装置2的结构图;图5是本发明实施例提供的一种数据持久化存储装置4的结构图;图6是本发明实施例提供的一种分布式内存数据重分布方法流程图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明提出一种分布式内存数据重分布系统,如图1所示,该系统包括:主控服务器5、前端访问服务器集群1、内存数据存储服务器集群3。其中,前端访问服务器(11﹑12...m)集群1与主控服务器5相连,负责接收前台的业务数据,并将这些业务数据保存在临时队列上,按照顺序依次发送给主控服务器5;或者向主控服务器5发送读取数据请求,并实时从内存数据存储服务器(31﹑32...n)集群3中获取相应的历史交易数据。内存数据存储服务器(31﹑32...n)集群3负责管理n台内存数据存储服务器。与主控服务器5相连,接收主控服务器5发送的从前端访问服务器(11﹑12...m)集群1接收的业务数据,每台内存数据存储服务器的数据存储格式为<hash值,业务数据>;将每台内存数据存储服务器的内存使用数据(或者说内存存储空间使用情况)提供给主控服务器5;在主控服务器5完成内存数据重分布迁移后,接收主控服务器5发送的内存数据重分布迁移完成信息,根据内存数据重分布迁移完成信息将需要数据迁出的内存数据存储服务器上已完成迁移的业务数据删除。主控服务器5主要负责初始化各类控制表、协调各装置之间的通信、管理内存数据重分布的流程。图2是本发明实施例提供的一种主控服务器结构示意图,如图2所示,该主控服务器5包括:接收模块501、触发模块502、信息确定模块503和发送模块504。其中,接收模块501,用于接收内存数据存储服务器集群发送的每台内存数据存储服务器的内存使用数据;触发模块502,用于当内存数据存储服务器集群中的至少一台内存数据存储服务器的内存使用数据大于内存使用阈值时,触发数据重分布过程;信息确定模块503,用于确定数据迁移信息,所述数据迁移信息包括需要数据迁出的内存数据存储服务器的ip地址、待迁移的业务数据的hash值、待迁移的业务数据量和目标服务器的ip地址;发送模块504,用于根据数据迁移信息将持久化存储的待迁移的业务数据迁移到目标服务器,其中,目标服务器为内存数据存储服务器集群中新增的内存数据存储服务器。具体实施时,该主控服务器5还包括:参数记录模块505。其中,参数记录模块505用于:在接收模块501接收到内存使用数据后,将内存使用数据记录在数据重分布控制参数表中,如表1所示,从而实时监控内存数据存储服务器(31﹑32...n)集群3的全部内存数据存储服务器的内存占用情况,内存占用情况是用于记录每台内存数据存储服务器实际使用内存情况;其中,数据重分布控制参数表中的参数包括每台内存数据存储服务器的标识、每台内存数据存储服务器的内存使用数据和每台内存数据存储服务器的数据重分布状态,三者一一对应;数据重分布状态包括未开始重分布状态、开始重分布状态和完成重分布状态。其中,重分布状态是用于标识每台内存数据存储服务器的业务数据迁移进展情况。表1数据重分布控制参数表触发模块502具体用于:当监控到内存数据存储服务器集群中的至少一台内存数据存储服务器的内存使用数据大于预设的内存使用阈值(假设为90%),并且全部内存数据存储服务器的重分布状态为未开始重分布状态时,触发数据重分布过程。在触发了数据重分布之后,需要信息确定模块503确定数据迁移信息。确定在新增一台内存数据存储服务器的情况下,计算平均每台内存数据存储服务器内存占用情况(目的是为了数据重分布后,每台内存数据存储服务器上的内存数据保持均衡),其计算公式如下:其中,si为第i台内存数据存储服务器的内存占用情况(内存使用数据)。再计算每台内存数据存储服务器需要迁移的业务数据量:其中,mi为第i台内存数据存储服务器需要迁移的业务数据量;space为内存数据存储服务器的内存空间。最后需要计算每台内存数据存储服务器迁移业务数据的hash值,假设每一个hash值所占用的存储空间大小是固定的,为m存储空间,那么,每台内存数据存储服务器迁移业务数据的hash值的个数ki:根据ki和第i台内存数据存储服务器原始存储的业务数据的hash值,并根据hash值划分出相应的迁移业务数据。如果需要增加多台内存数据存储服务器,可采用逐台增加内存数据存储服务器、逐步进行数据迁移的策略。最终,计算得到数据迁移信息如表2所示,数据迁移信息表中的参数包括需要数据迁出的内存数据存储服务器的ip地址(称为起始服务器)、待迁移的业务数据量、迁移业务数据的hash值和目标服务器的ip地址,四者一一对应。表2数据迁移信息表具体实施时,该主控服务器5还包括:修改模块506,用于在数据重分布过程触发后,修改数据重分布控制参数表的需要数据迁出的内存数据存储服务器的数据重分布状态。具体的,数据重分布控制参数表1的变化过程如下:(1)在监控数据重分布过程的初始化阶段,将所有内存数据存储服务器的数据重分布状态设置为未开始重分布状态;(2)在触发数据重分布过程后,根据数据迁移信息表将数据迁出的内存数据存储服务器的数据重分布状态设置为开始重分布状态。(3)当某一台内存数据存储服务器完成了数据重分布,那么该内存数据存储服务器的重分布状态设置为完成重分布状态;(4)当全部参与重分布的(需要数据迁出的)内存数据存储服务器的重分布状态都为完成重分布状态的时候,表示此次内存数据重分布已完成,将所有内存数据存储服务器的重分布状态都复原为未开始。具体实施时,接收模块501还用于:接收前端访问服务器集群1发送的业务数据;信息确定模块503还用于:确定该业务数据的hash值;发送模块504还用于:根据路由表和业务数据的hash值,将业务数据发送至内存数据存储服务器集群中对应的内存数据存储服务器。接收模块101还用于:接收前端访问服务器集群1发送的读取数据请求;根据读取数据请求到对应的内存数据存储服务器上获取相应的业务数据;发送模块104还用于:将相应的业务数据发送至前端访问服务器集群1。其中,路由表记录了hash值与内存数据存储服务器的映射关系。路由表的结构如表3所示;表3路由表结构及参数序号内存数据存储服务器业务数据hash值31107.252.78.5[0,24]32107.252.78.6[25,49].........n107.252.78.116[975,999]具体的,信息确定模块503是根据所定义的hash函数,计算业务数据的hash值;例如,一条信用卡交易数据,其中包含了关键字段“卡号”,针对该字段,定义hash函数为:hash(卡号)=(卡号)%1000。发送模块504是在计算完业务数据的hash值之后,判断该业务数据的hash值是否介于路由表中hash值的范围内,当该业务数据的hash值介于路由表中hash值的范围内时,从路由表中找到与该业务数据的hash值对应的内存数据存储服务器的ip地址,将该业务数据发送至该ip地址对应的内存数据存储服务器。具体实施时,该主控服务器5还包括:参数更新模块507,用于在数据重分布完成后,对路由表进行参数更新。其中,参数更新模块507具体用于:当内存数据存储服务器上存储的业务数据改变时,根据内存数据存储服务器的ip地址,更新对应的业务数据的hash值;当增加了内存数据存储服务器时,增加新的内存数据存储服务器的ip地址,并增加对应的业务数据的hash值。具体实施时,计算业务数据的hash值,根据路由表的参数和业务数据的hash值,将业务数据发送给hash值所对应的内存数据存储服务器,更新路由表的参数,这些功能还可以是由本发明提出的另一种分布式内存数据重分布系统中的数据路由装置2来完成。如图3所示,该数据路由装置2与前端访问服务器((11﹑12...m)集群1、内存数据存储服务器(31﹑32...n)集群3和主控服务器5分别相连。数据路由装置2具体用于:接收前端访问服务器((11﹑12...m)集群1发送的业务数据,计算业务数据的hash值,根据路由表的参数和业务数据的hash值,将该业务数据发送给hash值所对应的内存数据存储服务器(31﹑32...n)集群3中内存数据存储服务器;接收主控服务器5发送的路由表更新信息,如果接收到更新信息,那么就更新路由表的参数。如图4所示,该数据路由装置2可以包括hash值计算单元201、路由转发单元202和路由表参数维护单元203。hash值计算单元201是根据所定义的hash函数,计算业务数据的hash值。路由转发单元202是在计算完数据的hash值之后,判断该hash值是符合表3的路由表的“数据hash值”,找到所对应的“内存数据存储服务器”,从而将该数据转发到具体的服务器ip地址。路由表参数维护单元203负责路由表参数的更新。具体实施时,发送模块504具体用于:将前端访问服务器集群发送的业务数据进行持久化存储,其存储格式为:<内存数据存储服务器的ip地址,hash值,业务数据>;根据数据迁移信息,对本地存储的重分布表的参数进行更新;重分布表的参数包括需要数据迁出的内存数据存储服务器的ip地址、待迁移的业务数据的hash值和目标服务器的ip地址,三者一一对应;根据更新后的重分布表,按顺序将待迁移的业务数据迁移到目标服务器。具体的,发送模块504完成的这些功能还可以是由本发明提出的另一种分布式内存数据重分布系统中的数据持久化存储装置4来完成。如图3所示,数据持久化存储装置4与内存数据存储服务器(31﹑32...n)集群3相连,负责将内存数据存储服务器上的业务数据持久化,内存数据存储服务器(31﹑32...n)集群3以异步方式将业务数据发送至数据持久化存储装置4;与主控服务器5相连,接收主控服务器5的数据迁移信息,根据数据迁移信息将相应的业务数据发送给内存数据存储服务器(31﹑32...n)集群3中新增的内存数据存储服务器(n+1),此处还可是n+a,其中,a大于等于1,a为整数,a表示增加的内存数据存储服务器的台数。具体实施时,图5是数据持久化存储装置4的结构图,参照图5,数据持久化存储装置4包括数据存储单元401、重分布表参数维护单元数据迁移单元402和数据迁移单元403。数据存储单元401负责将内存数据存储服务器(31﹑32...n)集群3上的业务数据进行持久化存储,其存储格式为<ip地址,业务数据的hash值,业务数据>。重分布表参数维护单元402负责重分布表的参数更新,重分布表的结构如表4所示;当接收到主控服务器5的数据迁移信息时,则该单元执行参数更新,包括:(1)将需要参与重分布的内存数据服务器ip更新至“起始服务器(31、32...n)”字段;并将所对应的待迁移数据hash值更新到“迁移数据的hash值”字段。(2)将新增的服务器ip地址更新到“目标服务器(n+1)”字段;表4重分布表的结构及参数起始服务器(31﹑32...n)迁移数据的hash值目标服务器(n+1)107.252.78.5[20,24]107.252.78.200107.252.78.6[45,49]107.252.78.200......107.252.78.200107.252.78.116[995,999]107.252.78.200数据迁移单元403负责对照更新后的重分布表按顺序将待迁移业务数据从数据存储单元401迁移到目标服务器(n+1)。具体实施时,发送模块104还用于:在数据重分布完成后,向需要数据迁出的内存数据存储服务器发送内存数据重分布迁移完成信息,控制需要数据迁出的内存数据存储服务器将已完成迁移的业务数据删除。具体实施时,主控服务器5还可以包括初始化单元508,负责给路由表﹑重分布表﹑数据重分布参数控制表和数据迁移信息表进行初始化参数:(1)初始化路由表的“内存数据存储服务器ip地址”以及所存储的“业务数据hash值”;(2)初始化重分布表为空;(3)初始化数据重分布控制参数表的“内存占用情况”为0,“分布状态”为未开始;(4)初始化数据迁移信息表为空。以上所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以上实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。基于同一发明构思,本发明实施例中还提供了一种分布式内存数据重分布方法,如下面的实施例所述。由于分布式内存数据重分布方法解决问题的原理与分布式内存数据重分布装置相似,因此分布式内存数据重分布方法的实施可以参见分布式内存数据重分布装置的实施,重复之处不再赘述。图6是本发明实施例的分布式内存数据重分布方法流程图,如图6所示,该方法包括:步骤601:接收内存数据存储服务器集群发送的每台内存数据存储服务器的内存使用数据;步骤602:当内存数据存储服务器集群中的至少一台内存数据存储服务器的内存使用数据大于预设的内存使用阈值时,触发数据重分布过程;步骤603:确定数据迁移信息,所述数据迁移信息包括需要数据迁出的内存数据存储服务器的ip地址、待迁移的业务数据的hash值、待迁移的业务数据量和目标服务器的ip地址;步骤604:根据数据迁移信息将持久化存储的待迁移的业务数据迁移到目标服务器,所述目标服务器为内存数据存储服务器集群中新增的内存数据存储服务器。下面对该结构进行说明。具体实施时,该分布式内存数据重分布方法还包括:在数据重分布完成后,向需要数据迁出的内存数据存储服务器发送内存数据重分布迁移完成信息,控制需要数据迁出的内存数据存储服务器将已完成迁移的业务数据删除。具体实施时,该分布式内存数据重分布方法还包括:接收前端访问服务器集群发送的业务数据,并确定该业务数据的hash值,根据路由表和业务数据的hash值,将业务数据发送至内存数据存储服务器集群中对应的内存数据存储服务器;所述路由表记录了hash值与内存数据存储服务器的映射关系,每台内存数据存储服务器的数据存储格式为:<hash值,业务数据>。具体实施时,根据路由表和业务数据的hash值,将业务数据发送至内存数据存储服务器集群中对应的内存数据存储服务器,包括:判断该业务数据的hash值是否介于路由表中hash值的范围内,当该业务数据的hash值介于路由表中hash值的范围内时,从路由表中找到与该业务数据的hash值对应的内存数据存储服务器的ip地址,将该业务数据发送至该ip地址对应的内存数据存储服务器。具体实施时,该分布式内存数据重分布方法还包括:在数据重分布完成后,对路由表进行参数更新;对路由表进行参数更新,包括:当内存数据存储服务器上存储的业务数据改变时,根据内存数据存储服务器的ip地址,更新对应的业务数据的hash值;当增加了内存数据存储服务器时,增加新的内存数据存储服务器的ip地址,并增加对应的业务数据的hash值。具体实施时,根据数据迁移信息将持久化存储的待迁移的业务数据分配给目标服务器,包括:将前端访问服务器集群发送的业务数据进行持久化存储,其存储格式为:<内存数据存储服务器的ip地址,hash值,业务数据>;根据数据迁移信息,对本地存储的重分布表的参数进行更新;重分布表的参数包括需要数据迁出的内存数据存储服务器的ip地址、待迁移的业务数据的hash值和目标服务器的ip地址,三者一一对应;根据更新后的重分布表,按顺序将待迁移的业务数据迁移到目标服务器。具体实施时,该分布式内存数据重分布方法还包括:将内存使用数据记录在数据重分布控制参数表中;其中,数据重分布控制参数表中的参数包括每台内存数据存储服务器的标识、每台内存数据存储服务器的内存使用数据和每台内存数据存储服务器的数据重分布状态,三者一一对应;数据重分布状态包括未开始重分布状态、开始重分布状态和完成重分布状态;当内存数据存储服务器集群中的至少一台内存数据存储服务器的内存使用数据大于预设的内存使用阈值时,触发数据重分布过程,包括:当监控到内存数据存储服务器集群中的至少一台内存数据存储服务器的内存使用数据大于预设的内存使用阈值,并且全部内存数据存储服务器的重分布状态为未开始重分布状态时,触发数据重分布过程;在数据重分布过程触发后,修改需要数据迁出的内存数据存储服务器的数据重分布状态。具体实施时,按如下方式确定数据迁移信息:确定在新增一台内存数据存储服务器的情况下,平均每台内存数据存储服务器的内存使用数据其计算公式如下:其中,si为第i台内存数据存储服务器的内存使用数据;n为内存数据存储服务器集群中内存数据存储服务器的个数;确定每台内存数据存储服务器需要迁移的业务数据量:其中,mi为第i台内存数据存储服务器需要迁移的业务数据量;space为内存数据存储服务器的内存空间;确定每台内存数据存储服务器迁移业务数据的hash值的个数ki:其中,m为每一个业务数据的hash值所占用的存储空间;根据ki和第i台内存数据存储服务器原始存储的业务数据的hash值,根据hash值划分出相应的迁移业务数据。具体实施时,该分布式内存数据重分布方法还包括:接收前端访问服务器集群发送的读取数据请求;根据读取数据请求到对应的内存数据存储服务器上获取相应的业务数据;将相应的业务数据发送至前端访问服务器集群。综上所述,本发明主要解决了基于哈希值的分布式内存数据在重分布时,由于服务器增加扩容后,使得数据存储位置变化所引发的大规模数据迁移,进行内存数据重分布时无法持续对外提供服务的问题。本发明具有如下特点:第一,在确保了系统稳定性的前提下,有效地支撑系统持续对外服务能力。通常情况下,为了保证交易数据的完整性,会将服务器都暂停进行数据重分布,但这样是会影响业务处理的连贯性和效率性。本发明采用从数据持久化存储装置中逐台迁移的方法,确保了用户对原有服务器上数据访问通畅;并且在完成内存数据迁移后更新路由表参数,用户可以通过新的映射关系在新增的内存数据存储服务器上访问历史数据或存储新的数据。因此,对于前端访问服务器来说,并没有因为内存数据重分布而无法响应读取或存储数据的请求,内存服务器仍然正常提供对外服务。第二,本发明能够确保业务交易数据处理的实时性,同时也大大提高了业务交易的安全性和可靠性。这是因为在进行数据重分布的过程中,系统仍能正常接收用户的新增交易数据,确保交易数据链的完整性,为企业实时数据处理提供了可靠的交易数据。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1