一种分布式缓存系统、方法及装置与流程

文档序号:12494629阅读:206来源:国知局
一种分布式缓存系统、方法及装置与流程

本发明涉及数据缓存领域,更具体地说,涉及一种分布式缓存系统、方法及装置。



背景技术:

缓存具有能够提升指令和数据读取速度的特性,随着本地计算机系统向分布式系统的扩展,其在分布式计算领域中得到了广泛的应用,称为分布式缓存。现有的分布式缓存技术主要有Memcached。Memcached是一个高性能的分布式内存对象缓存系统,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached会导致全部数据消失。



技术实现要素:

有鉴于此,本发明提出一种分布式缓存系统、方法及装置,欲解决在进行分布式缓存时,仅将数据存储在内存空间中,导致重启后数据全部丢失的问题。

为了解决上述技术问题,现提出的方案如下:

一种分布式缓存系统,包括:若干个缓存服务器和中间库服务器,其中,

所述中间库服务器,用于在硬盘空间中存储第一数据库索引信息;

每个所述缓存服务器,用于在启动时获取中间库服务器存储的第一数据库索引信息并存储在内存空间;

每个所述缓存服务器,还用于接收客户端发送的第二数据库索引信息,并利用第二数据库索引信息对其存储的第一数据库索引信息进行更新;

每个所述缓存服务器,还用于发送第二数据库索引信息至所述中间库服务器;

所述中间库服务器,还用于利用第二数据库索引信息对其存储的第一数据库索引信息进行更新。

优选的,所述第一数据库索引信息和所述第二数据库索引信息均为:客户编号、数据表编号和数据库编号的映射关系。

优选的,每个所述缓存服务器,还用于每隔预设时间获取所述中间服务器存储的第一数据库索引信息并对其存储的第一数据库索引信息进行更新。

一种分布式缓存方法,应用于缓存服务器,所述方法包括:

在启动时获取中间库服务器存储的第一数据库索引信息并存储在内存空间;

接收客户端发送的第二数据库索引信息;

利用第二数据库索引信息对所述内存空间中存储的第一数据库索引信息进行更新;

发送第二数据库索引信息至所述中间库服务器。

优选的,在所述在启动时获取中间库服务器存储的第一数据库索引信息并存储在内存空间后,还包括:

每隔预设时间获取所述中间服务器存储的第一数据库索引信息并对其存储的第一数据库索引信息进行更新。

一种分布式缓存装置,应用于缓存服务器,所述装置,包括:

初始化单元,用于在启动时获取中间库服务器存储的第一数据库索引信息并存储在内存空间;

接收单元,用于接收客户端发送的第二数据库索引信息;

第一更新单元,用于利用第二数据库索引信息对所述内存空间中存储的第一数据库索引信息进行更新;

发送单元,用于发送第二数据库索引信息至所述中间库服务器。

优选的,所述装置,还包括:

第二更新单元,用于每隔预设时间获取所述中间服务器存储的第一数据库索引信息并对其存储的第一数据库索引信息进行更新。

一种分布式缓存方法,应用于中间库服务器,所述方法包括:

接收缓存服务器发送的第二数据库索引信息;

利用第二数据库索引信息对存储在硬盘空间的第一数据库索引信息进行更新;

接收缓存服务器发送的数据更新请求指令;

将存储在硬盘空间的第一数据库索引信息返回给发送所述数据更新请求指令的缓存服务器。

优选的,应用于中间库服务器,所述装置,包括:

第一接收单元,用于接收缓存服务器发送的第二数据库索引信息;

更新单元,用于利用第二数据库索引信息对存储在硬盘空间的第一数据库索引信息进行更新;

第二接收单元,用于接收缓存服务器发送的数据更新请求指令;

发送单元,用于将存储在硬盘空间的第一数据库索引信息返回给发送所述数据更新请求指令的缓存服务器。

与现有技术相比,本发明的技术方案具有以下优点:

上述技术方案提供的分布式缓存系统、方法及装置,数据库索引信息不仅存储在缓存服务器内置的内存空间内,还存储在中间库服务器的硬盘空间,在缓存服务器重启后,获取中间库服务器存储的第一数据库索引信息,避免了仅将数据存储在内存中,导致重启后数据丢失的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种分布式缓存系统的示意图;

图2为本发明实施例提供的一种应用于缓存服务器的分布式缓存方法的流程图;

图3为本发明实施例提供的另一种应用于缓存服务器的分布式缓存方法的流程图;

图4为本发明实施例提供的另一种应用于中间库服务器的分布式缓存方法的流程图;

图5为本发明实施例提供的一种应用于缓存服务器的分布式缓存装置的示意图;

图6为本发明实施例提供的另一种应用于缓存服务器的分布式缓存装置的示意图;

图7为本发明实施例提供的一种应用于中间库服务器的分布式缓存装置的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本实施例提供一种分布式缓存系统,如图1所示,包括:若干个缓存服务器1和一个中间库服务器2,其中,

所述中间库服务器2,用于在硬盘空间中存储第一数据库索引信息。第一数据库索引信息为客户编号、数据表编号和数据库编号的映射关系。在银行领域,每个客户对应一个客户编号,每个客户可以有多个账号,但是每个客户的编号是唯一的。在本发明中通过数据表编号(业界又称作篮子号)和数据库编号来区分不同的数据表(业界又称作篮子)和数据库。

每个所述缓存服务器1,用于在启动时获取中间库服务器存储的第一数据库索引信息并存储在内存空间。缓存服务器1重启后,原来在内存空间存储的数据都已经清空。因此,从中间服务器中获取第一数据库索引信息,并存储在内存空间,提高应用查询效率。

每个所述缓存服务器1,还用于接收客户端发送的第二数据库索引信息,并利用第二数据库索引信息对其存储的第一数据库索引信息进行更新。通常在进行数据存储时,客户端会根据一定的规则(例如一致性哈希算法)计算出客户编号对数据表编号和数据库编号,使得相应数据,按照客户编号均匀存储在各个数据库中。例如,客户端根据一致性哈希算法计算出客户编号1对应的数据表编号为1、数据库编号为1,并将该映射关系发送至某个缓存服务器1,缓存服务器1判断是否存储有客户编号1的映射关系,若没有,则将客户编号1的映射关系存储在内存中,若有,则判断原来存储的客户编号1的映射关系与现在接收的客户编号1的映射关系是否相同,若相同则不修改,若不相同,则将存储的客户编号1的映射关系修改为现在接收的客户编号1的映射关系。

每个所述缓存服务器1,还用于发送第二数据库索引信息至所述中间库服务器。

所述中间库服务器2,还用于利用第二数据库索引信息对其存储的第一数据库索引信息进行更新。中间库服务器2接收到缓存服务器1转发的第二数据库索引信息后,也判断其自身是否存储有客户编号1的映射关系,若没有,则将客户编号1的映射关系存储在硬盘中,若有,则判断原来存储的客户编号1的映射关系与现在接收的客户编号1的映射关系是否相同,若相同则不修改,若不相同,则将存储的客户编号1的映射关系修改为现在接收的客户编号1的映射关系。

客户端在调用某个客户的数据时,通过缓存服务器1缓存的第一数据库索引信息,即客户编号、数据表编号和数据库编号的映射关系,匹配得到客户编号对应的数据表编号和数据库编号,通过数据库编号准确找到相应的数据库,通过数据表编号准确找到数据存储在数据库中的位置。

本实施例提供的分布式缓存系统,数据库索引信息不仅存储在缓存服务器内置的内存空间内,还存储在中间库服务器的硬盘空间,在缓存服务器重启后,获取中间库服务器存储的第一数据库索引信息,避免了仅将数据存储在内存中,导致重启后数据丢失的问题。

为使得各个缓存服务器存储的信息相同,每个所述缓存服务器1,还用于每隔预设时间获取所述中间服务器存储的第一数据库索引信息并对其存储的第一数据库索引信息进行更新。每个缓存服务器1获取中间服务器2存储的第一数据库索引信息后,将原来存储的第一数据库索引信息进行清除,并存储获取的第一数据库索引信息。保障了各个缓存服务器1存储的第一数据库索引信息相同。

本实施例提供一种应用于缓存服务器的分布式缓存方法,参见图2所示,该方法,包括:

步骤S11:在启动时获取中间库服务器存储的第一数据库索引信息并存储在内存空间;

步骤S12:接收客户端发送的第二数据库索引信息;

步骤S13:利用第二数据库索引信息对所述内存空间中存储的第一数据库索引信息进行更新;

步骤S14:发送第二数据库索引信息至所述中间库服务器。

本实施例提供的分布式缓存方法,数据库索引信息不仅存储在缓存服务器内置的内存空间内,还存储在中间库服务器的硬盘空间,在缓存服务器重启后,获取中间库服务器存储的第一数据库索引信息,避免了仅将数据存储在内存中,导致重启后数据丢失的问题。

本实施例提供另一种应用于缓存服务器的分布式缓存方法,参见图3所示,执行步骤S21、S23、S24、S25过程分别与执行步骤S11、S12、S13、S14的过程相同,该方法包括:

步骤S21:在启动时获取中间库服务器存储的第一数据库索引信息并存储在内存空间;

步骤S22:每隔预设时间获取所述中间服务器存储的第一数据库索引信息并对其存储的第一数据库索引信息进行更新。

步骤S23:接收客户端发送的第二数据库索引信息;

步骤S24:利用第二数据库索引信息对所述内存空间中存储的第一数据库索引信息进行更新;

步骤S25:发送第二数据库索引信息至所述中间库服务器。

本实施例提供一种应用于中间库服务器的分布式缓存方法,参见图4所示,该方法包括:

步骤S31:接收缓存服务器发送的第二数据库索引信息;

步骤S32:利用第二数据库索引信息对存储在硬盘空间的第一数据库索引信息进行更新;

步骤S33:接收缓存服务器发送的数据更新请求指令;

步骤S34:将存储在硬盘空间的第一数据库索引信息返回给发送所述数据更新请求指令的缓存服务器。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。

本实施例提供一种应用于缓存服务器的分布式缓存装置,参见图5所示,该装置包括:

初始化单元11,用于在启动时获取中间库服务器存储的第一数据库索引信息并存储在内存空间;

接收单元12,用于接收客户端发送的第二数据库索引信息;

第一更新单元13,用于利用第二数据库索引信息对所述内存空间中存储的第一数据库索引信息进行更新;

发送单元14,用于发送第二数据库索引信息至所述中间库服务器。

本实施例提供另一种应用于缓存服务器的分布式缓存装置,参见图6所示,该装置包括:

初始化单元11,用于在启动时获取中间库服务器存储的第一数据库索引信息并存储在内存空间;

接收单元12,用于接收客户端发送的第二数据库索引信息;

第一更新单元13,用于利用第二数据库索引信息对所述内存空间中存储的第一数据库索引信息进行更新;

发送单元14,用于发送第二数据库索引信息至所述中间库服务器。

第二更新单元15,用于每隔预设时间获取所述中间服务器存储的第一数据库索引信息并对其存储的第一数据库索引信息进行更新。

本实施例提供一种应用于中间库服务器的分布式缓存装置,参见图7所示,该方法包括:

第一接收单元21,用于接收缓存服务器发送的第二数据库索引信息;

更新单元22,用于利用第二数据库索引信息对存储在硬盘空间的第一数据库索引信息进行更新;

第二接收单元23,用于接收缓存服务器发送的数据更新请求指令;

发送单元24,用于将存储在硬盘空间的第一数据库索引信息返回给发送所述数据更新请求指令的缓存服务器。

对于装置实施例而言,由于其基本相应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对本发明所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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