分布式内存数据库的实现方法、系统、令牌控制器及内存数据库的制作方法

文档序号:6337472阅读:282来源:国知局
专利名称:分布式内存数据库的实现方法、系统、令牌控制器及内存数据库的制作方法
技术领域
本发明涉及通信技 术,尤其涉及一种分布式内存数据库的实现方法、系统、令牌控 制器及内存数据库。
背景技术
MMDB(Main Memory Database,内存数据库)是一种数据库技术,主要用于实现将 数据放在内存中,进而可直接操作内存中保存该数据的数据库的目的。访问保存在内存中 数据与访问保存在磁盘上的数据相比,由于数据处理时无需进行磁盘访问,所以读写速度 可以提高很多,故而在很多技术领域,使用MMDB的技术。现有技术中主要采用如下方案部 署分布式MMDB 根据Active-Standby主备双机方案,即部署两个令牌控制器在两台设备上,一台 的主令牌控制器工作,另一台的备令牌控制器闲置,在两台设备上都装有双机控制软件,两 个令牌控制器对外显示为一个浮动IP。对于分布式内存数据库中的一个集群内各MMDB而 言,只有一个令牌控制器,只需要配一个令牌控制器的IP,与该令牌控制器保持心跳。如果 主令牌控制器发生故障,通过双机控制软件的切换功能,备令牌控制器可接管该主令牌控 制器的工作,并且仍旧以浮动IP呈现给MMDB。这样对于MMDB而言,集群内仍就是一个令牌 控制器,感觉不到主备令牌控制器发生的切换。但是,这种方法还是有不足之处。当主令牌控制器发生故障时,如果手工切换,还 存在着延时的风险,而自动检测也使令牌故障需要在两台令牌控制器外的第三个点检测令 牌控制器的心跳以判定其状态,该第三个点也存在单点故障的风险,该种方案部署较复杂, 可靠性和稳定性较差。

发明内容
本发明的实施例提供一种分布式MMDB的实现方法、系统、令牌控制器及MMDB,可 提高分布式MMDB的可靠性。为达到上述目的,本发明的实施例采用如下技术方案一种分布式MMDB的实现方法,包括发送包含节点MMDB信息的消息到至少两个令牌控制器;分别接收来自所述至少两个令牌控制器的包含MMDB列表的消息,其中,所述MMDB 列表中包括根据至少一个所述节点MMDB信息整理的集群内信息;根据所述MMDB列表中的集群内信息处理所述集群内的事务。
一种分布式MMDB的实现方法,包括接收来自至少一个MMDB的包含节点内存数据信息的消息;根据所述节点MMDB信息获取MMDB列表,其中,所述MMDB列表中包括根据至少一 个所述节点MMDB信息整理的集群内信息;
将包含所述MMDB列表的消息发送到所述至少一个MMDB,以便所述至少一个MMDB 根据所述MMDB列表中的集群内信息处理所述集群内的事务。一种内存数据库,包括发送模块,用于发送包含节点MMDB信息的消息到至少两个令牌控制器;接收模块,用于分别接收来自所述至少两个令牌控制器的包含MMDB列表的消息, 其中,所述MMDB列表中包括根据至少一个所述节点MMDB信息整理的集群内信息;处理模块,用 于根据所述MMDB列表中的集群内信息处理所述集群内的事务。一种令牌控制器,其特征在于,包括接收模块,用于接收来自至少一个MMDB的包含节点内存数据信息的消息;获取模块,用于根据所述节点MMDB信息获取MMDB列表,其中所述MMDB列表中包 括根据至少一个所述节点MMDB信息整理的集群内信息;发送模块,用于将包含所述MMDB列表的消息发送到所述至少一个MMDB,以便所述 至少一个MMDB根据所述MMDB列表中的集群内信息处理所述集群内的事务。一种分布式MMDB系统,包括至少两个令牌控制器和至少一个MMDB ;所述MMDB,用于发送包含节点MMDB信息的消息到所述至少两个令牌控制器,并分 别接收来自所述至少两个令牌控制器的包含MMDB列表的消息,其中,所述MMDB列表中包括 根据至少一个所述节点MMDB信息整理的集群内信息,存储所述内测数据列表,并根据所述 MMDB列表中的集群内信息处理所述集群内的事务;所述令牌控制器,用于接收所述MMDB的包含节点内存数据信息的消息,并根据 所述节点MMDB信息获取MMDB列表,再将包含所述MMDB列表的消息发送到所述至少一个 MMDB0一种站点系统,至少包括第一站点和第二站点,所述第一站点中的令牌控制器,用于从第二站点的令牌控制器接收包含所述第二 站点的主内存数据库信息的消息,并根据所述第二站点的主内存数据库信息和第一站点的 集群内信息获取所述第一站点的内存数据库列表,再将所述第一站点的内存数据库列表发 送到所述第一站点的内存数据库;所述第一站点中的内存数据库,用于发送包含节点内存数据库信息的消息到第一 站点的令牌控制器,并从所述第一站点的令牌控制器获取所述第一站点的内存数据库列 表,以及根据所述内存数据库列表处理所述第一站点间的事务,或所述第一站点与所述第 二站点间的事务;其中,所述内存数据库列表中包括作为从内存数据库加入第一站点的 第二站点的主内存数据库信息,以及根据节点内存数据库信息整理的第一站点的集群内信 肩、ο在本发明实施例提供的上述方案中,无需双机软件控制MMDB,无需主备双机方案, 每个MMDB可通过与令牌控制器之间的交互获取MMDB列表,并根据MMDB列表处理集群内的 事务,故而避免了为处理主备倒换等事务时产生的延时问题,降低了执行复杂度,无需提供 闲置的备用设备,减少了购机成本,提高了分布式MMDB的可靠性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。图1为本发明实施例分布式MMDB的实现方法的流程示意
图2为本发明实施例在MMDB登入或保持心跳或退出MMDB集群时的场景示意图;图3为本发明实施例在MMDB登入时,分布式MMDB的实现方法的流程示意图;图4为本发明实施例在MMDB保持心跳时,分布式MMDB的实现方法的流程示意图;图5为本发明实施例在令牌控制器故障时的场景示意图;图6为本发明实施例在令牌控制器故障时,分布式MMDB的实现方法流程示意图;图7为本发明实施例在令牌控制器重新进入集群内时,分布式MMDB的实现方法流 程示意图;图8为本发明实施例在接收到写入操作时,分布式MMDB的实现方法流程示意图;图9为本发明实施例在MMDB故障时,分布式MMDB的实现方法的流程示意图;图10为本发明实施例在MMDB故障恢复时,分布式MMDB的实现方法的流程示意 图;图11为本发明实施例提供的MMDB的结构示意图;图12为本发明另一实施例提供的MMDB的结构示意图;图13为本发明实施例提供的令牌控制器的结构示意图;图14为本发明实施例中分布式MMDB的实现方法的流程示意图;图15为本发明实施例在接收到写入请求时,站点间分布式MMDB的实现方法的流 程示意图;图16为本发明实施例提供的方法中不同站点间令牌控制器的交互示意图;图17为本发明实施例在接收到写入请求时,站点间数据同步的示意图;图18为本发明实施例在主MMDB变更时,站点间分布式MMDB的实现方法的流程示 意图;图19为本发明实施例提供的站点系统的示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。如图1所示,本实施例提供一种分布式MMDB的实现方法,该方法主要涉及MMDB和 管理该MMDB的令牌控制器,包括步骤101,MMDB发送包含节点MMDB信息的消息到至少两个令牌控制器;在本实施例以及下述各个实施例中,上述节点MMDB信息至少包括本地MMDB的名 称,IP地址,端口,数据库优先级别等。例如某集群1中的MMDBl将包含本身的节点MMDB信息发送到管理集群1的令牌 控制器1和令牌控制器2,其中,该节点MMDB信息包括MMDB1的MMDB名称,IP地址,端口,以及MMDBl的优先级别。在一个集群内,一般主MMDB对设备性能要求最高,为了能够使这种性能最高的设 备作为主MMDB工作,因此在本实施例中还包括组成集群的每个MMDB设置有数据库优先级 另IJ,数据库优先级用于指示集群内作为主MMDB工作的先后顺序。故而上述MMDBl的数据库 优先级别是用于指示集群1内MMDBl作为主MMDB工作的优先级别。一般集群中可以包含有多个MMDB,故而若该集群1中可以还有MMDB2, MMDB3....执行方式与上述MMDBl相似,在此不赘述。步骤102,MMDB分别接收来自至少两个令牌控制器的包含内存数据库列表的消 息,其中,内存数据库列表中包括根据至少一个节点内存数据库信息整理的集群内信息; 本实施例以及下述实施例中,该集群内信息至少包括组成集群的每个MMDB的节 点MMDB信息、组成集群的每个MMDB的主从模式信息,以及发送MMDB列的令牌控制器的控 制器优先级别。例如令牌控制器1接收到集群1中MMDBl的节点MMDB信息以及其他MMDB的节点 MMDB信息后,根据MMDBl的节点MMDB信息和以及其他MMDB的节点MMDB信息整理出MMDB 列表,该MMDB列表中包括如集群1中的每个MMDB的节点MMDB信息,每个MMDB的主从模 式信息,以及令牌控制器1的控制器优先级别。同理,令牌控制器2也是如此。在具体的实施例中,令牌控制器1将包含该MMDB列表的消息发送到集群1中的每 个MMDB,如MMDBl。令牌控制器2也将包含该MMDB列表的消息发送到集群1中的每个MMDB, 如MMDBl。以便MMDBl等根据MMDB列表中的集群内信息处理集群内的事务。步骤103,MMDB根据内存数据库列表中的集群内信息处理集群内的事务。本实施例以及下述实施例中,该集群内事务至少包括由MMDB进入或退出该集 群,该集群内的MMDB故障,该故障的MMDB恢复故障,管理该集群的令牌控制器故障,该故障 的令牌控制器恢复故障,有写入操作请求请求将数据信息写入MMDB等。当管理的集群的令牌控制器故障时,为了保证可以有其他令牌控制器接管该故障 的令牌控制器的工作,并且无需闲置的设备以及复杂的双机软件,故而在本实施例提供的 方法中,还包括管理集群的每个令牌控制器设置有控制器优先级别,控制器优先级别用于 指示集群内优先作为主令牌控制器工作的先后顺序。故而上述令牌控制器1上也设置有控 制器优先级别,该级别用于指示集群1内令牌控制器1作为主令牌控制器工作的优先级,主 令牌控制器即相当于主令牌控制器,非工作的从令牌控制器相当于从令牌控制器。同理,令 牌控制器2也是如此。因为MMDB会接收到多个令牌控制器发送过来的,MMDB列表,为了降低方法的难 度,在本实施例的方法中,还方法包括当接收到的包含MMDB列表的消息是来自至少两个 令牌控制器中的主令牌控制器时,根据MMDB列表中的集群内信息处理集群内事务包括以来自主令牌控制器的MMDB列表中的集群内信息为准处理集群内事务。即以主 令牌控制器发送而来的MMDB列表为准,其他的从令牌控制器发送而来的MMDB列表作备用 存储,以便主令牌控制器故障时,用作不时之需。例如MMDB1接收到令牌控制器1包含MMDB列表的消息,该MMDB列表中包括根据 集群1中MMDBl及其他多个MMDB的节点MMDB信息整理的集群内信息,如集群1中的每 个MMDB的节点MMDB信息,每个MMDB的主从模式信息,以及令牌控制器1的控制器优先级另lj。同理,MMDB接 收到令牌控制去2的包含MMDB列表的消息,该列表中包含根据集群1中 MMDBl及其他多个MMDB的节点MMDB信息整理的集群内信息,如集群1中的每个MMDB的节 点MMDB信息,每个MMDB的主从模式信息,以及令牌控制器2的控制器优先级别。设令牌控 制器1的控制器优先级别最高,为主令牌控制器,因此MMDBl将以令牌控制器1的MMDB列 表为准,从令牌控制器,即令牌控制器2的MMDB作为备份保存。需要说明的是,本实施例中提供的非工作的令牌控制器所在的设备并非闲置,也 就说,即便是作为非工作的令牌控制器也不会不工作,等待主令牌控制器故障,并接替其工 作,故而非工作的令牌控制器也是正常工作的设备(即热机),因此不会产生需要购置多台 设备的问题,也不需要采用双机软件控制。在本实施例提供的方法中,通过与令牌控制器的交互获取到的MMDB列表,并根据 该列表处理如设备故障,或写入操作请求等集群事务的技术手段,可解决现有技术中采用 双机软件处理故障时产生的需要冷机备份,过程复杂,易故障,可靠性差的技术问题,进而 取得了可实现热机备份,无需双机软件操控,不易故障,可靠性较高的技术效果。本实施例提供一种分布式MMDB的实现方法,在该方法中,包括一个分布式MMDB集 群,该集群中包括至少两个以上的MMDB,以及管理该集群中MMDB的至少两个以上的令牌控 制器,并且MMDB既可以与令牌控制器合设在相同设备,也可以部署在不同的设备上,其中, 扩展各个MMDB与令牌控制器间的通信协议,包括每个令牌控制器设置有一个名称(该名称在集群内唯一),设置有在集群中唯一 的控制器优先级别,设置有该集群中每个MMDB的地址信息;每个MMDB设置有一个名称(该 名称在集群内唯一),设置有在集群中唯一的数据库优先级别,以及设置有管理该集群的每 个令牌控制器的地址信息。如图2所示的场景,描述一种MMDB在登入或保持心跳或退出该集群时,分布式数 据库的实现方法。包括(—)当有MMDB登入集群时,该MMDB启动后向每个令牌控制器均注册,下面以该 MMDB是MMDBl为例进行描述,如图3所示,包括步骤201,MMDBl向每个令牌控制器发送注册消息,以便与每个令牌控制器建立连 接,该注册消息包含MMDBl的节点MMDB信息,具体可以包括MMDB1名称,MMDBl的IP地址, MMDB端口,MMDBl的数据库优先级别等。步骤202,令牌控制器在接收到该注册消息后,将包含该集群的集群内信息的 MMDB列表在集群内广播,以便响应MMDB1,同时将MMDBl加入该集群的这一状态通知集群中 的其他MMDB。这样,每个在网的MMDB都可以获知新加入的MMDB,并且根据新加入的MMDB 的控制器优先级别进行调整。其中,该MMDB的列表包括每个MMDB的名称,IP地址及端口,主从模式信息,以及 本令牌控制器的控制器优先级别。这里主从模式信息可以包括了本网络中,哪个令牌控制 器是主令牌控制器,哪些令牌是从令牌控制器等。如图4所示,(二)当MMDBl登入集群后,需要与令牌控制器保存心跳步骤301,MMDBl定时向所有令牌控制器发起心跳消息,该心跳消息包括MMDBl的 节点MMDB信息。上述所有令牌控制器包括令牌控制器1,令牌控制器2和令牌控制器3。
该MMDB信息具体可参照下表一 MMDB名称丽DB IP地址 丽DB端口 fflDB优先级另Ij表一其中,MMDB名称MMDB1集群内唯一名称MMDB IP地址MMDB1集群内IP地址MMDB 端 口 MMDB1 集群 IP 端口号MMDB优先级MMDB的控制器优先级,可由1开始增加,数字越小,优先级越高。步骤302,各令牌控制器接收到该MMDBl的心跳消息后,广播包含MMDB列表的响应 消息到集群中的所有MMDB。每个MMDB接收到MMDB列表后均保存该列表,并根据定时接收到的心跳消息时时 更新MMDB列表中的集群内信息。该MMDB列表具体可参照下表二
MMDB 1名MMDB IP地MMDB端口 MMDB优先属 性 称址级(主)
MMDB 2名MMDB IP地MMDB端口 MMDB优先属 性令 皁控 称址级(从) 制器的
MMDB 3名MMDB IP地MMDB端口 MMDB优先属 性优先级 称址级(从)别
MMDB N名MMDB IP地MMDB端口 MMDB优先属 性 称址级(从)表二 其中,MMDB名称分布式MMDB系统内唯一名称MMDB IP地址分布式MMDB系统内IP地址MMDB端口 分布式MMDB系统IP端口号MMDB优先级MMDB数据库优先级,可由1开始增加的整数,数字越小,优先级越高。属性该MMDB的主从模式信息,由令牌控制器计算指定。令牌控制器的优先级别广播该MMDB列表的令牌控制器的控制器优先级别。上述实施例仅以MMDBl为例描述了其定时发送心跳消息与令牌控制器保持交互 的过程,实际上,该过程是每个MMDB均执行的步骤,具体执行方式与MMDBl类似,在此不赘述。每个MMDB通过上述注册及上述与令牌控制器的心跳流程,可以与令牌控制器交 互彼此信息,了解集群中各MMDB以及各令牌控制器的状况获取到所有令牌控制器的信息,包括每个令牌控制器的控制器优先级;集群中所有MMDB,每个MMDB名称,IP地址及端口号及其主从模式信息。MMDB只以控制器优先级最高的主令牌控制器的MMDB列表为准,其它级别令牌控 制器播报的集群MMDB列表数据,仅做备份,在主令牌控制器发生故障心跳丢失时,MMDB选 择一个控制器优先级次高的 令牌控制器作为主令牌控制器,并将其发来的MMDB列表生效。(三)当有MMDBl退出集群时,下面以该MMDB是MMDBl为例进行描述,参照图3, 该MMDBl退出前向每个令牌控制器均注销,因此MMDBl向每个令牌控制器发送注销消息以 便与每个令牌控制器撤销连接,注销消息包含MMDB的节点MMDB信息。具体执行过程与注 销时相似。参照图5所示的令牌控制器故障的场景,如果在一段时间内,MMDB没有收到某令 牌控制器发送过来的MMDB列表,或者如果令牌控制器也定时发送心跳消息到MMDB,那么当 一段时间内,MMDB没有接到该令牌控制器的心跳消息,则MMDB可以认为该令牌控制器故 障,一台令牌控制器发生故障时,主要包括以下两种情况发生故障的令牌控制器的控制器优先级别最高,即主令牌控制器故障,但是其它 令牌控制器工作正常,即从令牌控制器未故障,此时需要由新的令牌控制器作为主令牌控 制器接管该故障的令牌控制器的工作;发生故障的控令牌制器的控制器优先级别不是最高,即从令牌控制器故障,此时, 因为只有优先级最高的令牌控制器是工作的主令牌控制控制器,其它优先级的令牌控制器 只作热备份用,所以MMDB可以不作任何特殊处理。因此,本实施例提供的分布式MMDB的实现方法,是用于当集群内的事务为至少 两个令牌控制器中的一个令牌控制器故障时,如图6所示,MMDB根据上述MMDB列表中的集 群内信息处理集群内的事务主要包括如下步骤步骤601,MMDB根据当前最新的MMDB列表中的集群内信息确定故障的令牌控制器 的控制器优先级别;步骤602,如果故障的令牌控制器的控制器优先级别为最高控制器优先级别,则执 行步骤603 ;否则,执行步骤604 ;步骤603,MMDB根据集群内信息从故障的令牌控制器以外的其它令牌控制器中选 择当前控制器优先级别最高的令牌控制器作为主令牌控制器。步骤604,结束本流程。具体地,以MMDB是MMDBl为例,举例来说MMDBl发现令牌控制器1故障,并根据之 前该令牌控制器1发送过来的MMDB列表中的集群内信息确定该令牌控制器1的控制器优 先级别,假设该控制器优先级别为A。如果上述A是最高控制器优先级别,则代表故障的令牌控制器1是工作的主令牌 控制器,因此需要重新确定主令牌控制器,故而MMDBl根据MMDB列表中的集群内信息从除 令牌控制器1以外的其他有效的从令牌控制器中选择出控制器优先级别次高的令牌控制 器2,并以该令牌控制器2作为新的主令牌控制器,此后将以令牌控制器2发送过来的MMDB列表为准进行事务处理;如果上述A不是最高控制器优先级别,则代表故障的令牌控制器 1是从令牌控制器,不会对集群带来过大的影响,因此可不采取特殊处理而结束流程。在这 里,假设控制器优先级别A为最高控制器优先级别来进行说明。在本实施例提供的方法中,当有令牌控制器故障时,MMDB可根据该故障的令牌控 制器的优先级别判断是否为主令牌控制器,若判定是,则根据MMDB列表中的集群内信息可 选择出 控制器优先级别次高的令牌控制器作为新的主令牌控制器,进而保证了主令牌控制 器故障时,可以有从令牌控制器迅速的接替原主令牌控制器的工作,并且由于该接替的令 牌控制器也是热机,所以不会产生延时,也避免了冷机备份导致的购机成本高,双机软件复 杂易故障的技术问题,故而取得了减少购机成本,简单方便,可靠性高的有益效果。上述描述了集群内事务是令牌控制器故障时,分布式MMDB的实现方法,那么相应 地,下面将提供一种当该集群内事务是故障的令牌控制器恢复故障时,分布式MMDB的实现 方法。如果故障的令牌控制器故障恢复重新启动,该出故障的令牌控制器,将通过注册 流程重新加入集群中,因此MMDB能够重新接收到该故障的令牌控制器发送而来的MMDB列 表,具体注册流程可参照上述图3对应的实施例,在此不赘述。如果一台故障的令牌控制器 重新注册进入集群中,主要包括以下两种情况故障恢复的令牌控制器的控制器优先级别比当前的主令牌控制器的控制器优先 级别高,那么该故障恢复的令牌控制器在加入集群后,应该作为新的主令牌控制器使用;故障恢复的控令牌制器的控制器优先级别比当前的主令牌控制器的控制器优先 级别低,那么该故障恢复的令牌控制器在加入集群后,将作为从令牌控制器使用,此时,因 为只有优先级最高的令牌控制器是工作控制器,其它优先级的令牌控制器只作热备份用, 所以MMDB可以不作任何特殊处理。如图7所示,当集群内故障恢复的令牌控制器重新进入集群内时,MMDB根据MMDB 列表中的集群内信息处理集群内的事务包括步骤701,在接收到来自故障恢复的令牌控制器的包含MMDB列表的消息后,MMDB 根据MMDB列表中的集群内信息确定故障恢复的令牌控制器的控制器优先级别;具体地,以MMDB是MMDBl为例,MMDBl接收到故障恢复的令牌控制器1发送的包 含MMDB列表的注册消息(也可以是心跳消息),并根据该MMDB列表中的集群内信息确定故 障恢复的令牌控制器1的控制器优先级别,该控制器优先级别为A。步骤702,如果故障恢复的令牌控制器的控制器优先级别比当前主令牌控制器的 控制器优先级别高,则执行步骤703 ;否则执行步骤705。具体地,举例来说,设当前主令牌控制器2的控制器优先级别是a,判断a是否比 A的控制器优先级别低,如果a比A的级别低,则代表故障恢复的令牌控制器1应该可以作 为新的主令牌控制器使用,执行步骤703 ;否则代表故障恢复的令牌控制器1是从令牌控制 器,MMDB可以不做特殊处理,执行步骤705。步骤703,MMDB根据来自当前主令牌控制器的MMDB列表判断故障恢复的令牌控制 器的MMDB列表的是否可用;如果判断故障恢复的令牌控制器的MMDB库列可以使用,则执行 步骤704 ;否则在下一次接收到故障恢复的令牌控制器的MMDB列表时,继续执行步骤703。具体地,例如MMDB1根据主令牌控制器2的MMDB列表核对故障恢复的令牌控制器1是否一致,即令牌控制器2的MMDB列表上的数据是否与令牌控制器1的MMDB列表上 的数据一致,若不一致,说明该令牌控制器1还未与集群内所有MMDB建立正常心跳,不可以 使用,因此需要对下一次心跳消息发送过来的MMDB列表进行继续核对,确定是否与令牌控 制器1的MMDB列表数据一致;若一致,则说明该令牌控制器1已与集群内所有MMDB建立正 常心跳,进入正常工作状态,因此该MMDB可以使用,可执行步骤704步骤704,MMDB选择故障恢复的令牌控制器作为新的主令牌控制器。

具体地,例如MMDB1切换到故障恢复的令牌控制器1,将故障恢复的令牌控制器1 作为新的工作的主令牌控制器,并以该令牌控制器1发送过来的MMDB列表为准进行集群内 事务处理,令牌控制器2作为从令牌控制器使用。步骤705,结束本流程。本实施例提供的方法,可保证控制器优先级别高的令牌控制器在故障恢复后继续 作为主令牌控制器使用,因为优先级别高的令牌控制器其配置,或性能可能更优越,更适合 作为主令牌控制器工作,故而在故障恢复后,可继续使用该性能优越的令牌控制器作为主 令牌控制器的技术方案,有助于保证令牌控制器的处理能力,进而提高可靠性。如图8所示,提供一种当有写入操作请求时,分布式MMDB的实现方法,在分布式 MMDB的集群中,主MMDB已从来自令牌控制器的消息中获得集群内的MMDB列表,那么当集群 内的事务为接收到写入操作请求时,根据MMDB列表中的集群内信息处理集群内的事务包 括步骤801,主MMDB根据写入操作请求更新本地MMDB中的数据信息;具体地,主MMDB根据写入操作请求中的插入,删除,更新等操作内存更新本地 MMDB中的数据信息,并对每个写入操作请求按接收到的顺序添加操作序号。步骤802,主MMDB根据MMDB列表中的集群内信息将写入操作请求更新到从MMDB, 以便从MMDB根据写入操作请求更新其本地MMDB中的数据信息具体地,主MMDB在更新完本地MMDB后,将该写入操作请按照各从MMDB数据库 优先级高低由先到后的顺序,发送到各从MMDB,可确保数据库优先级高的从MMDB先收到 该写操作请求,收到该写操作请求的从MMDB根据写入操作请求中的插入,删除,更新等操 作内存更新本地MMDB中的数据信息,并同样对每个接收到的写入操作请求按接收到的顺 序添加操作序号。例如从MMDBl接收到第五个写入操作请求,故而添加序号5到更新后 的MMDBl的数据信息上,从MMDB2接收到该第五个写入操作请求,添加序号5到更新后的 MMDB2的数据信息上。一般MMDB的可靠性是这样保证的如果一台从MMDB发生故障,对MMDB所属集群 没有大的影响,仅仅影响集群MMDB并发查询效率,增加一个从MMDB,效率就恢复。但是如果 主MMDB发生故障,这时整个集群就没有MMDB能够执行写操作的数据库,因此这样的故障是 必须解决的。在本实施例中,当集群事务为至少一个MMDB中其中某一 MMDB故障时,如图 9所示,分布式MMDB的实现方法包括步骤901,令牌控制器根据MMDB列表中集群内信息确定故障的MMDB的数据库优先 级别;例如令牌控制器1 (可以是工作的主令牌控制器,也可以是从令牌控制器)根据 MMDB列表中的集群内信息,确定故障的MMDBl的数据库优先级别,设故障的MMDBl的数据库优先级别为B。步骤902,如果故障的MMDB的数据库优先级别为最高控制器优先级别,则执行步 骤903 ;否则执行步骤904 ;步骤903,令牌控制器根据集群内信息从故障的MMDB以外的其它MMDB中选择当前 数据库优先级别最高的MMDB作为新的主MMDB,并根据选择过程更新MMDB列表中的主从模
式fe息。步骤904,令牌控制 器发送该MMDB列表到集群中的各MMDB。举例来说,如果令牌控制器1确定B为最高数据库优先级别,则代表MMDBl为主 MMDB,故而需要由新的MMDB接管该MMDBl的工作,因此根据集群内信息从除MMDBl以外的 其他从MMDB中选择出当前数据库优先级别最高的MMDB2,即与B相比,数据库优先级别次高 的MMDB2作为新的主MMDB接替MMDBl的工作,并根据选择出MMDB2的过程更新MMDB列表, 包括更新MMDB2的主从模式信息,即将MMDB2由“从”改为“主”,标识MMDBl故障等。并发 送该更新后的MMDB列表到集群中的各MMDB,成为新的主MMDB的MMDB2将接管MMDBl的工 作,如执行写操作等;如果令牌控制器1确定B不是最高数据库优先级别,则代表MMDBl为 从MMDB,故而可以无需采取特殊处理,仅在发送的MMDB列表中标识MMDBl故障即可。在本实施例中,令牌控制器会可在各从MMDB中选择一个MMDB,作为新的主MMDB, 并通过广播MMDB列表的方式通知集群中的各MMDB。当从MMDB接收到写入操作请求后,将 转发到新的主MMDB ;新的主MMDB根据该写入操作请求更新数据信息后,在将该写入操作请 求同步各从MMDB。但这里有个限制我们应该主动选择哪一个MMDB为新的主MMDB。一般 在一个集群内会部署若干MMDB,但承载这些MMDB的设备能力不一样,有的设备CPU及内存 性能更好,成本很高,我们更希望用这样的设备承担MMDB写操作,因为写操作是读操作性 能的四分之一左右,因此为了实现自动的完成故障切换的操作过程,必须确定原则。为此, 按承载MMDB设备的性能的高到低或其它因素,为各设备安装的MMDB配置一个数据库优先 级。令牌控制器能够动态选择数据库优先级别最高的MMDB,将其指定为主MMDB使用,并广 播通知这一指定到集群内各MMDB,即可降低手工切换带来的延时,也可提高分布式MMDB的 可靠性。上面描述了当有MMDB故障时,分布式MMDB的实现方法,那么下面将继续介绍当故 障的MMDB恢复,即MMDB为成为故障恢复的MMDB时,本实施例提供的分布式MMDB的实现方 法如图10所示,包括步骤1001,故障恢复的MMDB向令牌控制器发送包含其节点MMDB信息的消息,令 牌控制器在接收来自故障恢复的MMDB的包含节点内存数据信息的消息后,根据故障恢复 的MMDB的节点MMDB信息确定故障恢复的MMDB的数据库优先级别,并将该MMDB的节点信 息整理到MMDB列表中,发送到每个MMDB。例如故障恢复的MMDBl加入集群,首先向令牌控制器1 (该令牌控制器1可以是 主令牌控制器,也可以是从令牌控制器)注册。注册消息中包括MMDBl的节点MMDB信息。 令牌控制器1收到该注册消息后,确定MMDBl的数据库优先级别,因为当前集群中已有主 MMDB2正常工作,所以即便MMDBl的数据库优先级别比MMDB2的数据库优先级别高,令牌 控制器1也不会立刻将MMDBl选择为新的主MMDB,因为需要MMDBl先完成数据信息更新, 当MMDBl中的数据信息与当前主MMDB2数据信息一致时,才能被选择为新的主MMDB,故而,令牌控制器1仅需将MMDBl的 节点MMDB信息整理到MMDB列表中,并将该列表发送到每个 MMDB0步骤1002,如果故障恢复的MMDB的数据库优先级别比当前主MMDB的数据库优 先级别高,则该故障恢复的MMDB根据MMDB列表中集群内信息向主MMDB发送数据更新请 求,数据更新请求中包括故障恢复的MMDB中最后记录的数据信息的操作序号,以便当前主 MMDB返回接续操作序号的数据信息;否则,该故障恢复的MMDB可无需采取特殊处理,不进 行下述步骤,而是结束本流程。例如接收到令牌控制器1发送的MMDB列表的MMDBl,根据集群内信息获知当前 集群内的主MMDB是MMDB2。如果故障恢复的MMDBl的数据库优先级别比当前主MMDB2的数据库优先级别高, 则MMDB2向MMDB2发送数据更新请求,该数据更新请求中包括MMDBl中最后记录的数据信 息的操作序号。如果故障恢复的MMDBl的数据库优先级别比当前主MMDB2的数据库优先级别低, MMDBl可直接结束本流程。步骤1003,当前主MMDB在收到该数据更新请求后,返回接续操作序号的数据信息 到该故障恢复的MMDB ;例如当前的主MMDB2接收到数据更新请求中的操作序号是10,则代表故障恢复 的MMDBl在故障前最后执行的写入操作的操作序号是10。故而MMDB2将操作序号11到当 前最新的操作序号30的数据信息发送到MMDBl。步骤1004,该故障恢复的MMDB根据返回的接续操作序号的数据信息更新故障恢 复的MMDB的本地MMDB,并发送更新完成响应到主MMDB以便主MMDB执行退出主MMDB模式 的处理。例如故障恢复的MMDBl接收到当前主MMDB2返回的数据信息后,更新MMDBl的本 地MMDB,完成数据同步过程,并发送更新完成响应消息到MMDB2。步骤1005,该当前主MMDB接收到该更新完成响应消息后,执行退出主MMDB模式的 处理,包括该当前主MMDB向令牌控制器发起退出主MMDB模式的请求,同时将本地写功能 禁止,一旦有新的写入操作请求,转给上述故障恢复的,也是数据库优先级最高的MMDB。例如当前主MMDB2接收到更新完成响应消息后,向令牌控制器1发起退出主 MMDB模式的请求,同时将MMDB2的本地写功能禁止,一旦有新的写入操作请求,转给上述故 障恢复的MMDBl。步骤1006,令牌控制器在当前主MMDB的退出主MMDB模式后,选择故障恢复的 MMDB为新的主MMDB,将故障恢复的MMDB为新的主MMDB的主从模式信息更新到MMDB列表 中,并将该MMDB列表广播给每个MMDB,每个MMDB可通过该MMDB列表获知当前主MMDB已被 切换为新的MMDB。例如令牌控制器1在当前主MMDB2的退出主MMDB模式后,选择故障恢复的MMDBl 为新的主MMDB。将该信息整理到MMDB列表,并广播该MMDB列表给每个MMDB,每个MMDB获 知当前主MMDB已被切换为MMDB1,此后,写入操作请求由最高优先数据库级MMDBl执行。集 群内其它MMDB收到写入操作请求,都将转给MMDBl执行。在本实施例提供的方法中,当数据库优先级最高的MMDB故障恢复,重新启动时向令牌控制器注册,此刻还不能立即将其选择为主MMDB,先要完成数据信息复制过程,只能当 前主MMDB同步数据到该数据库优先级最高MMDB并达到数据一致时,该当前主MMDB才会向 令牌控制器申请放弃主席。这时令牌控制器重新将新注册的数据库最高优先级的MMDB确 定为主MMDB并广播MMDB列表到集群内所有MMDB。因此可实现性能优越的MMDB在故障恢 复后仍能再次作为主MMDB使用的目的。本实施例提供一种MMDB,如图11所示,该MMDB包括发送模块11,接收模块12, 处理模块13。发送模块11, 用于发送包含节点MMDB信息的消息到至少两个令牌控制器;接收模 块12,用于分别接收来自至少两个令牌控制器的包含MMDB列表的消息,其中,MMDB列表中 包括根据至少一个节点MMDB信息整理的集群内信息;处理模块13,用于根据MMDB列表中 的集群内信息处理集群内的事务。在发明的另一本实施例中,如图12所示,在该MMDB中,处理模块13可以包括故 障确定单元131,第一选择单元132。故障确定单元131,用于当有令牌控制器故障时,根据MMDB列表中的集群内信息 确定故障的令牌控制器的控制器优先级别;第一选择单元132,用于当故障确定单元131确定故障的令牌控制器的控制器优 先级别为最高控制器优先级别时,根据集群内信息从故障的令牌控制器以外的其它令牌控 制器中选择当前控制器优先级别最高的令牌控制器作为主令牌控制器。如图12,处理模块还可以包括恢复确定单元134,可用确定单元135,第二选择单 元 136。恢复确定单元134,用于当有故障恢复的令牌控制器重新进入集群内时,根据接收 模块接收到的来自故障恢复的令牌控制器的MMDB列表中的集群内信息确定故障恢复的令 牌控制器的控制器优先级别;可用确定单元135,用于当恢复确定单元134确定故障恢复的令牌控制器的控制 器优先级别比当前主令牌控制器的控制器优先级别高时,根据来自当前主令牌控制器的 MMDB列表确定故障恢复的令牌控制器的MMDB列表的可用性;第二选择单元136,用于当时可用确定单元135确定定故障恢复的令牌控制器的 MMDB列具有可用性时,选择故障恢复的令牌控制器作为新的主令牌控制器。如图12,处理模块还可以包括写入单元133,同步恢复单元137。写入单元133,用于在处于主MMDB状态时,接收写入操作请求,并根据写入操作请 求更新本地MMDB中的数据信息,再根据MMDB列表中的集群内信息将写入操作请求更新到 从MMDB,以便从MMDB根据写入操作请求更新其本地MMDB中的数据信息。同步恢复单元137,用于在数据库优先级别比当前主MMDB的数据库优先级别更高 时,根据MMDB列表中集群内信息向主MMDB发送数据更新请求,数据更新请求中包括更高的 MMDB中最后记录的数据信息的操作序号,以便主MMDB返回接续操作序号的数据信息,再根 据返回的接续操作序号的数据信息更新本地MMDB的数据信息,并发送更新完成响应到主 MMDB,以便主MMDB执行退出主MMDB模式的处理。本实施例提供的MMDB可以与令牌控制器合设在同一设备上,也可以部署在不同 的设备上,组网十分灵活。不需要用Active-Standby双机部署,不用执行双机切换动作,较简单,不易故障,切换过程可是自动完成,可避免手动切换产生的延时,提高了分布式MMDB 的可靠性。本实施例提供一种令牌控制器,如图13所示,该令牌控制器包括接收模块21,获 取模块22,发送模块23。接收模块21,用于接收来自至少一个MMDB的包含节点内存数据信息的消息;获取 模块22,用于根据节点MMDB信息获取MMDB列表,其中MMDB列表中包括根据至少一个节点 MMDB 信息整理的集群内信息;发送模块23,用于将包含MMDB列表的消息发送到至少一个 MMDB,以便至少一个MMDB根据MMDB列表中的集群内信息处理集群内的事务。在本实施例中,如图13所示,该令牌控制器还包括故障确定单元24,第一选择单 元25。故障确定单元24,用于当至少一个MMDB中其中一 MMDB故障时,根据MMDB列表中 集群内信息确定故障的MMDB的数据库优先级别;第一选择单元25,用于当故障确定单元24确定故障的MMDB的数据库优先级别为 最高控制器优先级别时,根据集群内信息从故障的MMDB以外的其它MMDB中选择当前数据 库优先级别最高的MMDB作为新的主MMDB。进一步地,该令牌控制器还可以包括恢复确定单元26,第二选择单元27。恢复确定单元26,用于在从故障恢复的MMDB接收到包含节点内存数据信息的消 息后,根据故障恢复的MMDB的节点MMDB信息确定故障恢复的MMDB的数据库优先级别;第二选择单元27,用于当恢复确定单元26确定故障恢复的MMDB的数据库优先级 别比当前主MMDB的数据库优先级别高时,在当前主MMDB的退出主MMDB模式后,选择故障 恢复的MMDB为新的主MMDB。本实施例提供的令牌控制器适合部署在工作的设备上,即热机,因此,可避免部署 复杂的双机软件到冷机,由此导致主备切换时启动冷机,产生延时的技术问题,进而取得了 当需要进行令牌控制器切换时,可以减少延时,提高可靠性,降低购机成本的技术效果。本实施例提供一种分布式MMDB系统,如图2所示,包括:MMDB集群和令牌控制器 集群,其中,MMDB集群包括至少两个令牌控制器,令牌控制器集群包括至少一个MMDB ;其中,每个MMDB,用于发送包含节点MMDB信息的消息到至少两个令牌控制器,并 分别接收来自至少两个令牌控制器的包含MMDB列表的消息,其中,MMDB列表中包括根据至 少一个节点MMDB信息整理的集群内信息,存储内测数据列表,并根据MMDB列表中的集群内 信息处理集群内的事务;每个令牌控制器,用于接收MMDB的包含节点内存数据信息的消息,并根据节点 MMDB信息获取MMDB列表,再将包含MMDB列表的消息发送到至少一个MMDB。本实施例提供的分布式MMDB系统,无需双机软件控制MMDB,无需主备双机方案, 每个MMDB可通过与令牌控制器之间的交互获取MMDB列表,并根据MMDB列表处理集群内的 事务,故而避免了为处理主备倒换等事务时产生的延时问题,降低了执行复杂度,无需提供 闲置的备用设备,减少了购机成本,提高了分布式MMDB的可靠性。本实施例还提供一种分布式MMDB的实现方法,在该方法中,包括至少两个站点, 第一站点和第二站点,每个站点中部署至少一个MMDB集群,和管理MMDB集群的令牌控制器 集群。其中,每个MMDB集群由多个MMDB组成,每个令牌控制器集群由多个令牌控制器组成,且每个令牌控制器上配置了异地站点的令牌控制器的IP地址及端口。因为一个MMDB只能属于一个MMDB集群,并且写操作请求仅能在其所属MMDB集群 内的主MMDB上操作,故而为了保证对其所属集群外的MMDB不进行复制,因此本实施例中, 需要做如下工作在执行本实施例的下述步骤前,扩展MMDB集群的定义1,将一个站点定义为一个域,域名全局唯一,例如站点1的域名,即全局站点名 为mmdb_Sitel,站点2的域名,即全局站点名为mmdb_Site2 ;2,站点内的每个MMDB集群配置有集群名称,该名称为字符串,且在站点内唯一, 该集群的MMDB全局集群名称是该集群名称与所属站点的全局站点名的组合,格式为集群 名称@全局站点名。3,站点内的每个令牌控制器都有令牌名称,该名称为字符串,且在站点内唯一, 例如mmdb_ringl,该令牌控制器的全局名称是该令牌控制器在站点内的令牌名称与其所 属站点的全局站点名的组合,格式为令牌名称@全局站点名,例如“mmdb_ringl@mmdb_ Sitel”。4,站点内的每个MMDB都有内存名称,该内存名称为字符串,且在站点内唯一,例 如mmdbl,该MMDB的全局名称是该站点内名称与站点域名组合,格式为MMDB名@站点域 名,例如“mmdbl@mmdb_Siter,综上,在本实施例中,每个站点配置有全局站点名;站点中的每个MMDB集群配置有集群名称,集群名称与全局站点名组合成MMDB集 群的全局集群名称;站点中的每个令牌控制器配置有令牌名称,令牌名称与全局站点名组合成令牌控 制器的全局令牌器名称;站点中的每个MMDB配置有内存名称,内存名称与全局站点名组合成MMDB的全局 内存名称。故而,通过比较的全局站点名这个后缀,,可以判断MMDB或者令牌控制器是本地 站点还是异地站点,并且还可根据@后面的全局站点名区分不同站点。进一步的,在MMDB集群中的每个MMDB上设置数据库优先级别,还可以在每个令牌 控制器上设置控制器优先级别,具体该设置出的数据库优先级别和控制器优先级别在站点 内的实施方式可参考上述图1至图10所对应的实施例,在此不赘述。在做了上述扩展以及相应部署后,如图14所示,该方法主要包括步骤1401,第一站点的MMDB发送包含节点MMDB信息的消息到第一站点的令牌控 制器;具体地,第一站点的每个MMDB发送包含其节点MMDB信息的消息到第一站点的令 牌控制集群,即每个令牌控制器。该包含其节点MMDB信息的消息可以是需要周期性发送的 心跳消息,也可以是在加入该MMDB集群时发送的注册消息。上述节点MMDB信息本实施例以及下述实施例中至少包括所属集群名称,本地 MMDB的名称,IP地址,端口,数据库优先级别。 例如第一站点的MMDBl发送包含MMDBl的节点MMDB信息的心跳消息到第一站点 的令牌控制器1,其中,节点MMDB信息包括MMDB1所属集群的名称,MMDBl的本地MMDB的名称,IP地址,端口,数据库优先级别。第一站点的MMDB2发送包含MMDB2的节点MMDB信息的心跳消息到第一站点的令 牌控制器1,其中,节点MMDB信息包括MMDB2所属集群的名称,MMDB2的本地MMDB的名称, IP地址,端口,数据库优先级别。第一站点的MMDB3同样如此。步骤1402,第一站点的令牌控制器从第二站点的令牌控制器接收包含第二站点的 主MMDB信息的消息;具体地,如图16所示,第一站点的每个令牌控制器与第二站点的每个令牌控制器 的通过心跳消息交互管理各自的MMDB集群的主MMDB信息,进一步的,还可以交互彼此的令 牌控制器信息。也就是说,通过心跳消息,第一站点的每个令牌控制器可以获取到发送该心 跳消息的第二站点令牌控制器的令牌控制器信息以及其管理的MMDB集群中主MMDB的信 肩、ο其中,令牌控制器信息包括该令牌控制器所属站点的全局站点名,该令牌控制器 的全局名称,该令牌控制器的控制器优先级别,该令牌控制器的IP地址和端口。其中,该主MMDB信息包括主MMDB所属的集群的全局集群名称,主MMDB的全局内 存名称,以及主MMDB的IP地址和端口。例如站点1的令牌控制器1与站点2的令牌控制器1通过心跳消息交互,通过该 交互,令牌控制器1获取到站点1的主MMDB信息,和令牌控制器2的令牌控制器信息。其 中,站点1的主MMDB信息包括主MMDB所属的集群的全局集群名称,主MMDB的全局内存名 称,以及主MMDB的IP地址和端口 ;令牌控制器2的令牌控制器信息包括站点2的全局站 点名,令牌控制器2的全局名称,令牌控制器2的控制器优先级别,令牌控制器2的IP地址 和端口。同理,令牌控制器2也可以的通过该交互获取到站点2的令牌控制器1的主MMDB 信息,以及令牌控制器1的令牌控制器信息。步骤1403,第一站点的令牌控制器根据第二站点的主MMDB信息和第一站点的集 群内信息获取第一站点的MMDB列表,其中,第一站点的集群内信息是根据来自第一站点的 至少一个MMDB的节点MMDB信息整理而得;其中,上述集群内信息可至少包括组成MMDB集群的每个MMDB的节点MMDB信息、 组成MMDB集群的每个MMDB的主从模式信息,以及发送MMDB列的令牌控制器的控制器优先 级别。 例如站点1的令牌控制器1根据上述来自站点2的令牌控制器2的主MMDB信息 和站点1的集群内信息获取站点1的MMDB列表。其中,该站点1的MMDB列表中的集群内 信息是根据来自站点1的多个MMDB的节点MMDB信息整理而得;并且,需要说明的是根据站点2的令牌控制器2的主MMDB信息获取MMDB列表的 具体意义是指如果根据站点2的令牌控制器2的主MMDB信息确定如果该站点2的主MMDB 不在该MMDB站点1的MMDB集群中,则将站点2的主MMDB作为站点1的MMDB集群中的从 MMDB加入该站点1的MMDB集群。步骤1404,第一站点的令牌控制器将第一站点的MMDB列表发送到第一站点中的 至少一个MMDB,以便MMDB根据MMDB列表处理站点间或站点内的事务。其中,上述站点间或站点内的事务是指第一站点与第二站点之间的事务,或第一站点内的事务,具体可包括第一站点的写入操作请求同步到第二站点,第二站点的写入操 作请求同步到第一站点,第一站点或第二站点的主MMDB故障时的写入操作请求同步处理, 第一站点接收到来自应用程序的写入操作请求处理等。例如站点1的令牌控制器1将上述站点1的MMDB列表发送到站点1的MMDBl, MMDB2, MMDB3等,以便MMDBl,MMDB2, MMDB3根据该MMD列表处理站点1与站点2之间的事 务,或者站点1内的事务。步骤1405,第一站点的MMDB从第一站点的令牌控制器获取第一站点的MMDB列表, 其中,MMDB列表中包括作为从MMDB加入第一站点的第二站点的主MMDB信息,以及根据至 少一个节点MMDB信息整理的第一站点的集群内信息;并根据MMDB列表处理站点间或站点 内的事务。具体地,第一站点的MMDB获取到第一站点的MMDB列表,并根据该MMDB列表处理
第一站点与第二站点间的事务,或者第一站点内的事务。例如站点1的MMDBl (该MMDBl可以是任意的MMDB)从站点1的令牌控制器1 (该 令牌控制器1可以是任意的令牌控制器)获取站点1的MMDB列表,其中,该MMDB列表中包 括站点1根据MMDB集群中每个MMDB的节点MMDB信息整理的集群内信息,以及作为站点 1该MMDB集群中的从MMDB加入的站点2的主MMDB的主MMDB信息。其中,集群内信息包 括每个MMDB的节点MMDB信息、每个MMDB的主从模式信息,以及发送MMDB列的令牌控制 器的控制器优先级别;站点2的主MMDB的主MMDB信息包括该主MMDB所属的集群的全局 集群名称,该主MMDB的全局内存名称,以及该主MMDB的IP地址和端口。需要说明的是上述步骤1401到步骤1405过程均是以站点1和站点2为例进行 描述的,实际上还可以包括更多的站点,如站点3,站点4等,其它站点的工作方式与本实施 例中的站点2相似,如步骤1405中,站点1接收的MMDB列表中还可以包括作为站点1的 从MMDB加入该MMDB集群的站点3的主MMDB信息等。并且上述步骤1401到步骤1405中根据MMDB列表处理站点间或站点内的事务之 前的流程是以一个周期为例进行描述的,在实际应用中,站点1的令牌控制器与站点2的令 牌控制器是周期性的通过心跳消息进行交互的,站点1的MMDB与站点1的令牌控制器也可 以是周期性的通过心跳消息进行交互。在本实施例提供的方法中,通过站点间令牌控制器的交互获取彼此主MMDB信息, 并将该对方的主MMDB信息整理到站点的MMDB列表中,再根据该MMDB列表处理站点间或站 点内的数据同步等事务,因此解决了现有技术中必须通过运行同步软件管理复杂的数据同 步的技术问题,进而降低了站点间数据同步的复杂度,在保证了站点的容灾能力的同时,提 高了站点间的可靠性,适合应用在包含多个站点的大型分布式MMDB场景。如图15所示,当站点间或站点内的事务为站点内的主MMDB接收到写入操作请求 时,根据MDDB列表处理站点间或站点内的事务包括步骤1501,在主MMDB接收到来自应用程序的写入操作请求时,第一站点内的主 MMDB根据该写入操作请求更新主MMDB的数据信息;优选地,步骤1501可以通过如下方式实现第一站点内的主MMDB在接收到来自应用程序的写入操作请求时,对接收到的写 入操作请求添加操作序号,再根据该写入操作请求更新主MMDB的数据信息。
步骤1502,第一站点根据写入操作请求更新各从MMDB的数据信息,其中,各从 MMDB包括根据集群内信息获取的第一站点中的从MMDB,以及根据主MMDB信息获取的第二 站点中的主MMDB ;具体地,步骤1502包括第一站点根据写入操作请求更新各从MMDB的数据信息, 其中,写入请求中携带写入操作所属站点的全局站点名以及写入操作请求的操作序号,以 便各从MMDB根据全局站点名记录写入操作请求的操作序号。步骤1503,第二站点的主MMDB根据写入操作请求更新过数据信息后,根据写入操 作请求更新第二站点的从MMDB的数据信息。具体地,步骤1503包括第二站点的主MMDB根据第一站点的全局站点名将该写入 操作请求存储到第二站点的主MMDB中用于存放第一站点的数据信息的位置,其中,在该位 置中,该写入操作请求更新的数据信息对应的操作序号即是该写入操作请求中携带的操作 序号。上述仅是以第一站点和第二站点为例进行描述,实际上还可以包括更多的站点, 如第三站点,此时第三站点的执行方式与第二站点相似。例如参照图17,站点1的主MMDB接收到来自应用程序的第100个写入操作请求, 对该写入操作请求添加操作序号100,并该根据该写入操作请求更新主MMDB的数据信息, 包括插入,删除,更新等写入操作;站点1根据站点1的MMDB列表中个从MMDB的IP地址和端口可将该写入操作请 求同步到站点1的从MMDB1,从MMDB2,从MMDB3,该写入操作请求中携带站点1的全局站点 名,操作序号100,以及插入,删除,更新;其中,从MMDB3以从MMDB的身份加入站点1的站 点2的主MMDB,从MMDB4以从MMDB的身份加入站点1的站点3的主MMDB。从MMDBl根据该写入操作请求在从MMDBl中用于存储站点1的位置更新从MMDBl 的数据信息,并将该部分的操作序号记录为100 ;从MMDB2根据该写入操作请求在从MMDB2 中用于存储站点1的数据信息位置更新从MMDB2的数据信息,并将该部分的操作序号记录 为100 ;同理,从MMDB3根据该写入操作请求在从MMDB3中用于存储站点1的数据信息的位 置更新从MMDB3的数据信息,并将该部分的操作序号记录为100 ;从MMDB4根据该写入操作 请求在从MMDB4中用于存储站点1的数据信息的位置更新从MMDB4的数据信息,并将该部 分的操作序号记录为100 ;特别的,因为从MMDB3同时也是站点2的主MMDB,故而还会将该写入操作请求同步 到站点2的各从MMDB,该写入操作请求中携带站点1的全局站点名,操作序号100,以及插 入,删除,更新等写入操作;站点2的各从MMDB在接收到站点2的主MMDB,即MMDB3的写入 操作请求后,站点2的各从MMDB根据该写入操作请求分别在各自用于存储站点1数据信息 的位置更新对应的数据信息,并将该部分的操作序号记录为100 ;同理,因为从MMDB4同时 也是站点3的主MMDB,故而还会将该写入操作请求同步到站点3的各从MMDB,站点3的各 从MMDB在接收到站点3的主MMDB,即MMDB4的写入操作请求后,站点3的各从MMDB根据该 写入操作请求分别在各自用于存储站点1数据信息的位置更新对应的数据信息,并将该部 分的操作序号记录为100。在本实施例提供的方法中,第一站点中的主MMDB仅将写入操作请求同步到第二 站点的主MMDB,再由第二站点的主MMDB负责将该写入操作请求同步到第二站点的各从MMDB,而不是分别同步给第二站点的主和各从MMDB,故而可减少站点间的数据流量,降低站 点之间数据同步的复杂度,即可保证容灾性,有可提高站点间数据同步的可靠性。如图18所示,本实施例提供的方法,结合当站点间与站点内的事务为第二站点 的主MMDB变更时,在本实施例提供的方法中,第一站点的MMDB根据MMDB列表处理站点间 或站点内的事务包括步骤1801,第二站点的令牌控制器根据心跳消息可获知主MMDB故障,或者有比该 主MMDB的数据库优先级别更高的MMDB加入第二站点的MMDB集群。例如站点2的令牌控制器1 (该令牌控制器1可以是主令牌控制器,也可以是从 令牌控制器)接收不到当前MMDB集群中作为主MMDB工作的MMDBl的心跳消息,或者站点 2接收到比MMDBl的数据库优先级别更高的MMDB2加入该MMDB集群的注册消息。步骤1802,第二站点的令牌控制器从MMDB集群中根据各MMDB的数据库优先级别 选择出变更后的主MMDB,即新的主MMDB,并将该选出的结果指示在MMDB列表中,通过广播 该MMDB列表通知第二站点该MMDB集群中各MMDB。例如站点2的令牌控制器1根据MMDB列表中各MMDB的数据库优先级别选择出 MMDB2为新的主MMDB,并将该选出的结果指示在MMDB列表中,发送到站点2MMDD集群中的 各个MMDB,该各个MMDB即可获知MMDB2是新的主MMDB。步骤1803,第二站点中新的主MMDB将其MMDB最后记录的操作序号和主MMDB信息 发送到第二站点的令牌控制器。该第二站点的令牌控制器将新的主MMDB最后记录的操作 序号和新的主MMDB的主MMDB信息。例如站点2的MMDB2作为主MMDB工作后,MMDB2最后记录的操作序号100和 MMDB2的主MMDB信息发送到站点2的令牌控制器1。该站点2的令牌控制器1将MMDB2最 后记录的操作信号100和主MMDB信息通知站点1的令牌控制器11 (该令牌控制器11可 以是站点1的主令牌控制器,也可以是站点1的从令牌控制器)。其中,主MMDB信息包括 MMDB2所属的MMDB集群的全局集群名称,MMDB2的全局内存名称,以及该MMDB2的IP地址 和端口。步骤1804,第一站点的令牌控制器从第二站点的令牌控制器获取第二站点中故障 的MMDB最后记录的操作序号和新的主MMDB的主MMDB信息,并将携带操作序号和新的主 MMDB的主MMDB信息的消息发到第一站点的主MMDB。例如站点1的令牌控制器11接收到站点2作为新的主MMDB工作的MMDB2最后 记录的操作序号100和MMDB2的主MMDB信息,并将这些发送到站点1当前作为主MMDB工 作的MMDB3。步骤1805,第一站点的主MMDB获取第二站点中变更后的主MMDB的主MMDB信息和 第二站点的主MMDB最后记录的操作序号,并根据主MMDB信息和操作序号获取对应的写入 操作的数据信息。例如站点1中当前作为主MMDB工作的MMDB3接收到来自站点1的令牌控制器 11发送的站点2新的主MMDB,即MMDB2最后记录的操作序号100后,根据MMDB2的全局集 群名或全局内存名称获知该请求来自站点2,MMDB3中存储站点2数据信息的位置上获取到 对应操作序号100之后的写入操作的数据信息。步骤1806,第一站点的主MMDB将写入操作的数据信息更新到第二站点新的主MMDB0例如站点1的MMDB3将到的对应操作序号100之后的写入操作的数据信息发送 到站点2的MMDB2,站点2的MMDB2根据该数据信息更新MMDB2的MMDB。在本发明提供的实施例中,分布式MMDB的构架可由多个站点构成,每个站点可部 署至少一个分布式MMDB集群,MMDB集群主MMDB接收应用程序的写入操作请求,为每一个 操作产生一个递增的唯一 64位数据编号,该数据编号即为该写入操作请求的操作序号。主 MMDB同步数据信息时,在请求更新的消息中必须附带此操作序号作为参数。并且,因为每个 主MMDB同时又将作为其他站点MMDB集群中的一个从MMDB,接收该其他站点同步而来的数 据信息,所以主MMDB必须记录操作编号和其他站点的全局站点名,进而完成本站点的数据 更新过程,并将操作编号,写入操作请求及该写入操作请求所属的站点名同步给本站点中 的从MMDB。这样,每个MMDB中除了记录了本MMDB集群的操作编号,还记录了其它站点中 MMDBJ集群的(由全局站点名区分)操作编号。故而,站点1的主MMDB发生故障时,站点1的令牌控制器按本地MMDB数据库优先 级重新选出一个新的主MMDB,新的主MMDB在收到令牌控制器的MMDB列表后,会将最后记录 的操作序号等信息返回到该令牌控制器,该令牌控制器将此操作序号通知给其他站点的令 牌控制器,由该其他站点的令牌控制器再传递给其MMDB集群中的主MMDB。主MMDB就可从 此该操作序号断点处继续将数据信息同步到站点1的新的主MMDB,再有该新的主MMDB将这 些数据信息同步到集群内的复制各从MMDB。由此,站点1可在主MMDB故障时,通过与其他 站点的数据同步过程获取丢失的数据信息,并继续其职能,进而取得了减少数据同步过程 中的复杂度,容灾能力强,可靠性高的技术效果。本实施例提供一种可选的MMDB,如图11所示,其中发送模块11,还可以发送包含 节点MMDB信息的消息到第一站点的令牌控制器;接收模块12,还可以用于从第一站点的令 牌控制器获取第一站点的MMDB列表,MMDB列表中包括作为从MMDB加入第一站点的第二站 点的主MMDB信息,以及根据至少一个节点MMDB信息整理的第一站点的集群内信息;处理模 块13,还可以用于根据MMDB列表处理站点间或站点内的事务。本实施例提供一种可选的MMDB,如图11所示,其中处理模块13还可以用于当该 MMDB装置处于主MMDB状态时,接收写入操作请求,并根据写入操作请求更新各从MMDB的 数据信息,其中,各从MMDB包括根据集群内信息获取的第一站点中的从MMDB,以及根据主 MMDB信息获取的第二站点中的主MMDB;以及还可以用于当写入操作请求来自第二站点的 主MMDB时,根据第二站点的写入操作请求更新第一站点中从MMDB的数据信息。本实施例提供一种可选的MMDB,如图11所示,其中处理模块13还可以用于在接收 到写入操作请求时,对接收到的写入操作请求添加操作序号;以及还用于在写入操作请求 中携带写入操作所属站点的全局站点名以及写入操作请求的操作序号,以便各从MMDB根 据全局站点名记录写入操作请求的操作序号。本实施例提供一种可选的MMDB,如图11所示,其中处理模块13还可以用于在第 二站点的主MMDB变更时,获取第二站点中变更后的主MMDB的主MMDB信息和第二站点的主 MMDB最后记录的操作序号,并根据主MMDB信息和操作序号获取对应的写入操作的数据信 息,再将写入操作的数据信息更新到第二站点变更后的主MMDB。本实施例提供的MMDB装置无需同步软件的控制即可执行站点间数据同步的过程,在提高了容灾性的同时,也确保了可靠性,并且适用于大型跨站点分布式MMDB场景,可 降低解决方案成本,提升产品竞力。本实施例提供一种可选的令牌控制器,如图13所示,其中接收模块21,还用于从 第二站点的令牌控制器接收包含第二站点的主MMDB信息的消息;获取模块22,还用于根据 第二站点的主MMDB信息和第一站点的集群内信息获取第一站点的MMDB列表,其中,第一 站点的集群内信息是根据来自第一站点的至少一个MMDB的节点MMDB信息整理而得;发送 模块23,还用于将第一站点的MMDB列表发送到第一站点的至少一个MMDB,以便MMDB根据 MMDB列表处理站点间或站点内事务。本实施例提供一种可选的令牌控制器,如图13所示,故障确定单元24,还用于当 第二站点的主MMDB变更时,从第二站点的令牌控制器获取第二站点中变更后的主MMDB最 后记录的操作序号和主MMDB信息,并将携带操作序号和主MMDB的主MMDB信息的消息发到 第一站点的主MMDB。本实施例提供的令牌控制器可替代同步软件控制站点间数据同步的过程,降低了 站点间实现控制数据同步的复杂度,加强了容灾能力,提高了可靠性。如图19,本实施例提供一种站点系统,该系统中至少包括第一站点61和第二站 点62。第一站点61中的令牌控制器,用于从第二站点62的令牌控制器接收包含第二站 点62的主MMDB信息的消息,并根据第二站点62的主MMDB信息和第一站点61的集群内 信息获取第一站点61的MMDB列表,再将第一站点61的MMDB列表发送到第一站点61的 MMDB ;第一站点61中的MMDB,用于发送包含节点MMDB信息的消息到第一站点61的令牌 控制器,并从第一站点61的令牌控制器获取第一站点61的MMDB列表,以及根据MMDB列表 处理第一站点61间的事务,或第一站点61与第二站点62间的事务。其中,MMDB列表中包括作为从MMDB加入第一站点61的第二站点62的主MMDB 信息,以及根据节点MMDB信息整理的第一站点61的集群内信息。另外,第二站点中的MMDB和令牌控制器同样可以像第一站点中的MMDB和令牌控 制器一样执行,以便完成第一站点与第二站点间或第二站点内的事务。在现有技术中,由同步应用程序操控不同站点间的数据同步,以便保证分布式 MMDB的容灾性,但该过程复杂,可拓展性差,因此易故障,可靠性差,而本发明实施例提供的 方案,采用两个不同的站点间可通过其令牌控制器的交互获取对方的主MMDB信息,并根据 包含该信息的MMDB信息处理以及集群内信息处理站点间或站点内的事务的技术手段,可 避免因采用同步应用软件带来的复杂度高,可拓展性差的技术问题,故而可以取得提供可 能性,增强容灾能力的技术效果。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借 助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是 更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献 的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中, 如计算机的软盘,硬盘或光盘等,包括若干指令用以便得一台设备(可以是笔记本电脑等) 执行本发明各个实施例的方法。
以上,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉 本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在 本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
权利要求
1.一种分布式内存数据库的实现方法,其特征在于,包括发送包含节点内存数据库信息的消息到至少两个令牌控制器;分别接收来自所述至少两个令牌控制器的包含内存数据库列表的消息,其中,所述内 存数据库列表中包括根据至少一个所述节点内存数据库信息整理的集群内信息;根据所述内存数据库列表中的集群内信息处理所述集群内的事务。
2.根据权利要求1所述的方法,其特征在于,所述节点内存数据库信息包括中一个或 多个本地内存数据库的名称,因特网协议IP地址,端口和数据库优先级别;所述集群内信息包括一个或多个组成所述集群的每个内存数据库的所述节点内存数 据库信息、组成所述集群的每个内存数据库的主从模式信息,和发送所述内存数据库列表 的令牌控制器的控制器优先级别。
3.根据权利要求1或2所述的方法,其特征在于,当接收到的包含内存数据库列表的消 息是来自所述至少两个令牌控制器中的主令牌控制器时,所述根据内存数据库列表中的集 群内信息处理集群内事务包括以来自所述主令牌控制器的内存数据库列表中的集群内信息为准处理集群内事务。
4.根据权利要求1所述的方法,其特征在于,当内存数据库为主内存数据,且所述集群 内的事务为所述至少两个令牌控制器中的一个令牌控制器故障时,所述根据所述内存数据 库列表中的集群内信息处理所述集群内的事务包括根据所述内存数据库列表中的集群内信息确定所述故障的令牌控制器的控制器优先 级别;如果所述故障的令牌控制器的控制器优先级别为最高控制器优先级别,则根据所述集 群内信息从所述故障的令牌控制器以外的其它令牌控制器中选择当前控制器优先级别最 高的令牌控制器作为主令牌控制器。
5.根据权利要求4所述的方法,其特征在于,当内存数据库为主内存数据,且所述集群 内的事务为故障恢复的令牌控制器重新进入所述集群内时,所述根据所述内存数据库列表 中的集群内信息处理所述集群内的事务包括在接收到来自所述故障恢复的令牌控制器的包含内存数据库列表的消息后,根据所述 内存数据库列表中的集群内信息确定故障恢复的令牌控制器的控制器优先级别;如果所述故障恢复的令牌控制器的控制器优先级别比当前主令牌控制器的控制器优 先级别高,则根据来自所述当前主令牌控制器的内存数据库列表确定所述故障恢复的令牌 控制器的内存数据库列表的可用性;如果确定所述故障恢复的令牌控制器的内存数据库列具有可用性,则选择所述故障恢 复的令牌控制器作为新的主令牌控制器。
6.根据权利要求1所述的方法,其特征在于,当内存数据库为主内存数据库,且所述集 群内的事务为接收写入操作请求时,所述根据所述内存数据库列表中的集群内信息处理所 述集群内的事务包括根据所述写入操作请求更新本地内存数据库中的数据信息;根据所述内存数据库列表中的集群内信息将所述写入操作请求更新到从内存数据库, 以便所述从内存数据库根据所述写入操作请求更新所述其本地内存数据库中的数据信息。
7.根据权利要求1所述的方法,其特征在于,当内存数据库为比主内存数据库的数据库优先级别更高的内存数据库,且所述集群内的事务为所述更高的内存数据库进入所述集 群内时,所述根据所述内存数据库列表中的集群内信息处理所述集群内的事务包括根据所述内存数据库列表中集群内信息向所述主内存数据库发送数据更新请求,所述 数据更新请求中包括所述更高的内存数据库中最后记录的数据信息的操作序号,以便所述 主内存数据库返回接续所述操作序号的数据信息;根据返回的接续所述操作序号的数据信息更新所述更高的内存数据库的本地内存数 据库,并发送更新完成响应到所述主内存数据库以便所述主内存数据库执行退出主内存数 据库模式的处理。
8.根据权利要求1所述的方法,其特征在于,还包括发送包含节点内存数据库信息的消息到第一站点的令牌控制器; 从所述第一站点的令牌控制器获取所述第一站点的内存数据库列表,其中,所述内存 数据库列表中包括作为从内存数据库加入第一站点的第二站点的主内存数据库信息,以及 根据至少一个所述节点内存数据库信息整理的第一站点的集群内信息; 根据所述内存数据库列表处理站点间的事务。
9.根据权利要求8所述的方法,其特征在于,当所述站点间事务为接收到写入操作请 求时,所述根据所述内存数据库列表处理站点间的事务包括根据所述写入操作请求更新所述各从内存数据库的数据信息,其中,所述各从内存数 据库包括根据所述集群内信息获取的第一站点中的从内存数据库,以及根据所述主内存 数据库信息获取的第二站点中的主内存数据库;所述第二站点的主内存数据库根据所述写入操作请求更新过数据信息后,根据所述写 入操作请求更新所述第二站点的从内存数据库的数据信息。
10.根据权利要求9所述的方法,其特征在于,在接收到写入操作请求时,该方法还包 括对接收到的写入操作请求添加操作序号;所述根据所述写入操作请求更新所述各从内存数据库的数据信息包括 根据所述写入操作请求更新所述各从内存数据库的数据信息,其中,所述写入请求中 携带所述写入操作所属站点的全局站点名以及所述写入操作请求的操作序号,以便所述各 从内存数据库根据所述全局站点名记录所述写入操作请求的操作序号。
11.根据权利要求9所述的方法,其特征在于,当所述站点间的事务为所述第二站点的 主内存数据库变更时,所述根据所述内存数据库列表处理站点间的事务包括获取所述第二站点中变更后的主内存数据库的主内存数据库信息和所述第二站点的 主内存数据库最后记录的操作序号;根据所述主内存数据库信息和操作序号获取对应的写入操作的数据信息; 将所述写入操作的数据信息更新到所述第二站点变更后的主内存数据库。
12.—种分布式内存数据库的实现方法,其特征在于,包括接收来自至少一个内存数据库的包含节点内存数据信息的消息; 根据所述节点内存数据库信息获取内存数据库列表,其中,所述内存数据库列表中包 括根据至少一个所述节点内存数据库信息整理的集群内信息;将包含所述内存数据库列表的消息发送到所述至少一个内存数据库,以便所述至少一 个内存数据库根据所述内存数据库列表中的集群内信息处理所述集群内的事务。
13.根据权利要求12所述的方法,其特征在于,当所述至少一个内存数据库中其中一 内存数据库故障时,该方法还包括根据所述内存数据库列表中集群内信息确定所述故障的内存数据库的数据库优先级别;如果所述故障的内存数据库的数据库优先级别为最高控制器优先级别,则根据所述集 群内信息从所述故障的内存数据库以外的其它内存数据库中选择当前数据库优先级别最 高的内存数据库作为新的主内存数据库。
14.根据权利要求12所述的方法,其特征在于,当所述至少一个内存数据库为故障恢 复的内存数据库时,该方法还包括在接收来自所述故障恢复的内存数据库的包含节点内存数据信息的消息后,根据故障 恢复的内存数据库的节点内存数据库信息确定所述故障恢复的内存数据库的数据库优先 级别;如果所述故障恢复的内存数据库的数据库优先级别比当前主内存数据库的数据库优 先级别高,则在所述当前主内存数据库的退出主内存数据库模式后,选择所述故障恢复的 内存数据库为新的主内存数据库。
15.一种内存数据库,其特征在于,包括发送模块,用于发送包含节点内存数据库信息的消息到至少两个令牌控制器;接收模块,用于分别接收来自所述至少两个令牌控制器的包含内存数据库列表的消 息,其中,所述内存数据库列表中包括根据至少一个所述节点内存数据库信息整理的集群 内信息;处理模块,用于根据所述内存数据库列表中的集群内信息处理所述集群内的事务。
16.根据权利要求15所述的内存数据库,其特征在于,所述处理模块包括故障确定单元,用于当有令牌控制器故障时,根据所述内存数据库列表中的集群内信 息确定所述故障的令牌控制器的控制器优先级别;第一选择单元,用于当所述故障确定单元确定所述故障的令牌控制器的控制器优先级 别为最高控制器优先级别时,根据所述集群内信息从所述故障的令牌控制器以外的其它令 牌控制器中选择当前控制器优先级别最高的令牌控制器作为主令牌控制器。
17.根据权利要求15所述的内存数据库,其特征在于,所述处理模块包括恢复确定单元,用于当有故障恢复的令牌控制器重新进入所述集群内时,根据接收模 块接收到的来自所述故障恢复的令牌控制器的内存数据库列表中的集群内信息确定所述 故障恢复的令牌控制器的控制器优先级别;可用确定单元,用于当所述恢复确定单元确定所述故障恢复的令牌控制器的控制器优 先级别比当前主令牌控制器的控制器优先级别高时,根据来自所述当前主令牌控制器的内 存数据库列表确定所述故障恢复的令牌控制器的内存数据库列表的可用性;第二选择单元,用于当时所述可用确定单元确定定所述故障恢复的令牌控制器的内存 数据库列具有可用性时,选择所述故障恢复的令牌控制器作为新的主令牌控制器。
18.根据权利要求15所述的内存数据库,其特征在于,所述处理模块包括写入单元,用于在处于主内存数据库状态时,接收写入操作请求,并根据所述写入操作 请求更新本地内存数据库中的数据信息,再根据所述内存数据库列表中的集群内信息将所述写入操作请求更新到从内存数据库,以便所述从内存数据库根据所述写入操作请求更新 所述其本地内存数据库中的数据信息。
19.根据权利要求16所述的内存数据库,其特征在于,所述处理模块包括同步恢复单元,用于在数据库优先级别比当前主内存数据库的数据库优先级别更高 时,根据所述内存数据库列表中集群内信息向所述主内存数据库发送数据更新请求,所述 数据更新请求中包括所述更高的内存数据库中最后记录的数据信息的操作序号,以便所述 主内存数据库返回接续所述操作序号的数据信息,再根据返回的接续所述操作序号的数据 信息更新本地内存数据库的数据信息,并发送更新完成响应到所述主内存数据库,以便所 述主内存数据库执行退出主内存数据库模式的处理。
20.一种令牌控制器,其特征在于,包括接收模块,用于接收来自至少一个内存数据库的包含节点内存数据信息的消息;获取模块,用于根据所述节点内存数据库信息获取内存数据库列表,其中所述内存数 据库列表中包括根据至少一个所述节点内存数据库信息整理的集群内信息;发送模块,用于将包含所述内存数据库列表的消息发送到所述至少一个内存数据库, 以便所述至少一个内存数据库根据所述内存数据库列表中的集群内信息处理所述集群内 的事务。
21.根据权利要求20所述的令牌控制器,其特征在于,该令牌控制器还包括故障确定单元,用于当所述至少一个内存数据库中其中一内存数据库故障时,根据所 述内存数据库列表中集群内信息确定所述故障的内存数据库的数据库优先级别;第一选择单元,用于当所述故障确定单元确定所述故障的内存数据库的数据库优先级 别为最高控制器优先级别时,根据所述集群内信息从所述故障的内存数据库以外的其它内 存数据库中选择当前数据库优先级别最高的内存数据库作为新的主内存数据库。
22.根据权利要求20所述的令牌控制器,其特征在于,该令牌控制器还包括恢复确定单元,用于在从故障恢复的内存数据库接收到包含节点内存数据信息的消息 后,根据所述故障恢复的内存数据库的节点内存数据库信息确定所述故障恢复的内存数据 库的数据库优先级别;第二选择单元,用于当所述恢复确定单元确定所述故障恢复的内存数据库的数据库优 先级别比当前主内存数据库的数据库优先级别高时,在所述当前主内存数据库的退出主内 存数据库模式后,选择所述故障恢复的内存数据库为新的主内存数据库。
23.—种分布式内存数据库系统,其特征在于,包括至少两个令牌控制器和至少一个 内存数据库;所述内存数据库,用于发送包含节点内存数据库信息的消息到所述至少两个令牌控制 器,并分别接收来自所述至少两个令牌控制器的包含内存数据库列表的消息,其中,所述内 存数据库列表中包括根据至少一个所述节点内存数据库信息整理的集群内信息,存储所述 内测数据列表,并根据所述内存数据库列表中的集群内信息处理所述集群内的事务;所述令牌控制器,用于接收所述内存数据库的包含节点内存数据信息的消息,并根据 所述节点内存数据库信息获取内存数据库列表,再将包含所述内存数据库列表的消息发送 到所述至少一个内存数据库。
24.一种站点系统,至少包括第一站点和第二站点,其特征在于,所述第一站点中的令牌控制器,用于从第二站点的令牌控制器接收包含所述第二站点 的主内存数据库信息的消息,并根据所述第二站点的主内存数据库信息和第一站点的集群 内信息获取所述第一站点的内存数据库列表,再将所述第一站点的内存数据库列表发送到 所述第一站点的内存数据库;所述第一站点中的内存数据库,用于发送包含节点内存数据库信息的消息到第一站点 的令牌控制器,并从所述第一站点的令牌控制器获取所述第一站点的内存数据库列表,以 及根据所述内存数据库列表处理所述第一站点间的事务,或所述第一站点与所述第二站点 间的事务;其中,所述内存数据库列表中包括作为从内存数据库加入第一站点的第二站点的主 内存数据库信息,以及根据节点内存数据库信息整理的第一站点的集群内信息。
全文摘要
本发明的实施例公开了一种分布式内存数据库的实现方法、装置及内存数据集群,涉及通信技术领域,解决了现有技术中分布式内存数据库可靠性较差的技术问题,本发明实施例中的方法主要包括发送包含节点内存数据库信息的消息到至少两个令牌控制器;分别接收来自所述至少两个令牌控制器的包含内存数据库列表的消息,其中,所述内存数据库列表中包括根据至少一个所述节点内存数据库信息整理的集群内信息;根据所述内存数据库列表中的集群内信息处理所述集群内的事务。本发明实施例适用于内存数据库。
文档编号G06F17/30GK102142008SQ20101057025
公开日2011年8月3日 申请日期2010年12月2日 优先权日2010年12月2日
发明者何沁, 查峰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1