CN102739720B - 分布式缓存服务器***及其应用方法、缓存客户端 - Google Patents
分布式缓存服务器***及其应用方法、缓存客户端 Download PDFInfo
- Publication number
- CN102739720B CN102739720B CN201110093902.0A CN201110093902A CN102739720B CN 102739720 B CN102739720 B CN 102739720B CN 201110093902 A CN201110093902 A CN 201110093902A CN 102739720 B CN102739720 B CN 102739720B
- Authority
- CN
- China
- Prior art keywords
- buffer service
- service end
- client
- cache
- data
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/18—Information format or content conversion, e.g. adaptation by the network of the transmitted or received information for the purpose of wireless delivery to users or terminals
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种分布式缓存服务器***,包括,缓存客户端,用于从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成并定时维护链路链表;一内存数据库服务器,用于建立并保存缓存服务端信息表以及数据存储类别与缓存服务端对应目录表,以及处理收到缓存服务端上报的缓存服务端信息;缓存服务端,用于向内存数据库服务器上报所述缓存服务端信息,并完成缓存数据块的管理。本发明还提供了一种分布式缓存服务器***的应用方法、缓存客户端、缓存服务端。采用本发明的技术方案,可以使缓存服务器***的设置和使用更加简洁方便,访问速度更快,***可以自动扩展,以及自动进行更新。
Description
技术领域
本发明涉及数据存储领域,尤其涉及一种分布式缓存服务器***及其应用方法、缓存客户端、缓存服务端。
背景技术
随着互联网技术及WEB应用的发展,缓存技术运用越来越广泛,多种缓存技术百花齐放,其中分布式缓存***在互联网应用中,可以明显解决数据库服务器和WEB服务器之间的性能访问瓶颈。
在现有的分布式缓存服务器***中,多采用主从结构,即主服务器建立数据目录用于存储从服务器存储的数据信息,并接受用户的数据请求,根据数据目录去访问从服务器,同时,主服务器还需要管理各个从服务器上的存储数据,考虑负载均衡。这种模式下,一方面,主服务器存在很大压力,且主服务器宕机后整个***无法使用,当缓存的内容达到一定数量级时,主服务器上数据目录结构非常大,查询数据目录效率很低;另一方面,由于主从服务器信息都需要提前配置好,整个主从缓存***在运行时,***更新和扩容极不方便。
发明内容
本发明解决的技术问题提供了一种分布式缓存服务器***及其应用方法、缓存客户端、缓存服务端,以解决现有分布式缓存***在运行时,更新扩容极 不方便,以及数据量大时主服务器效率低下问题。
为解决上述问题,本发明提供了一种分布式缓存服务器***,包括一个或多个缓存客户端、一个或多个缓存服务端以及一内存数据库服务器,其中,
缓存客户端,用于从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成并定时维护链路链表;
内存数据库服务器,用于建立并保存缓存服务端信息表以及数据存储类别与缓存服务端对应目录表,以及在收到所述缓存服务端上报的缓存服务端信息后,若数据库中含有该缓存服务端信息,则更新对应的磁盘空间数据,否则将该缓存服务端信息***数据库;
缓存服务端,用于向内存数据库服务器上报所述缓存服务端信息,并完成缓存数据块的管理。
上述的***,其中,所述缓存服务端信息包括,本端的ip地址、缓存服务端口、当前可用磁盘空间。
上述的***,其中,缓存客户端用于从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成链路链表具体为,
所述缓存客户端,用于在启动后,定时向内存数据库服务器查询所有缓存服务端信息,根据所述缓存数据库服务器返回的所有缓存服务端信息,在缓存客户端建立链路链表,其中存储各缓存服务端的信息,缓存客户端与缓存服务端建立连接,并将连接状态存入链路链表;
其中,缓存客户端链路链表的作用在于,当有数据请求时,缓存客户端将所述数据请求的数据分类后,向数据库查询该类别存放的缓存服务端,数据库返回缓存服务端信息给缓存客户端时,缓存客户端需要根据该链路链表,核查该缓存服务端信息,符合要求才将请求转发至缓存服务端,否则返回错误响应。
上述的***,其中,缓存客户端用于定时维护链路链表具体为,
缓存客户端,用于定时从数据库获取所有缓存服务端信息,将新增的缓存 服务端信息加入链路链表;以及
缓存客户端,用于使用心跳消息定时检测与各缓存服务端链路的状态,并将链路连接情况更新写入链路链表,定时更新链路链表,所述链路链表用于缓存客户端处理请求时的链路核查。
优选地,所述缓存客户端,还用于在收到应用程序的***请求处理后,判定数据请求类别,然后向内存数据库查询数据类别与缓存服务端存储对应目录表;以及用于根据所述链路链表核查数据库返回的缓存服务端信息是否有效,若有效则立即转发***请求;若无效则在当前链路链表中找到有效的链路,进行***请求转发;以及用于处理转发应用程序***请求后,将对应的数据类别和存储缓存服务端信息发送至数据库,进行更新;
所述内存数据库服务器,用于判断所述数据库中是否存在对应的缓存服务端信息,若数据库中不存在对应的缓存服务端信息,则查找磁盘可用空间最大的缓存服务端信息,返回给缓存客户端;若数据库中存在对应的缓存服务端信息,则将所述对应的缓存服务端信息返回缓存客户端;
所述缓存服务端,用于接收***请求后,将数据块***到内存中,并将所述数据块写入文件存入磁盘;具体方式为,在内存中建立数据块hash链表,将***的数据块存放在内存数据块链表中,以数据块请求链接为key值,同时将数据块写入文件存放在磁盘。
上述的***,其中,所述缓存服务端,还用于管理内存数据块链表,具体方式为使用最近最少使用LRU算法,将新***或者新访问的数据块放在链表头部,整个链表按照访问时间先后顺序排列。
优选地,缓存服务端用于将数据块写入文件存入磁盘具体为,
缓存服务端,用于对数据请求类别进行加密,获得32位密文类别码,再按照所述密文类别码组合成存储路径,将所述数据块写为二进制文件存放在所述存储路径下。
上述的***,其中,所述32位密文类别码组合成存储路径具体为,
32位密文密码是由罗马数字和小写英文数字组合而成,32位密码的前两 位为第一层目录名,密码的第3、4位为第二层子目录名,第三层子目录以该32位密码为名,第四层则为数据块写入的二进制文件;
优选地,所述缓存客户端,用于接收应用程序的查询请求后,判定数据请求类别,向内存数据库查询数据类别与缓存服务端存储对应目录表,查找到后根据数据库返回的缓存服务端信息,在链路链表中核查该缓存服务端当前的状态,若可用将所述查询请求转发到所述缓存服务端,等待缓存服务端数据块定位查找后,将结果返回;否则返回失败响应;
缓存服务端,用于根据所述查询请求从缓存服务端内存中进行数据块的定位获取。
上述的***,其中,所述缓存服务端用于根据所述查询请求从缓存服务端内存中进行数据块的定位获取具体为,
所述缓存服务端,用于根据查询请求的key值,查找hash表,找到后将对应数据块链表更新,并将数据返回缓存客户端,若未在内存中找到,则根据所述数据块文件命名和存储方式,直接定位到该数据块,有则返回数据,无则返回失败响应。
本发明还提供了一种缓存客户端,所述缓存客户端用于从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成并定时维护链路链表。
本发明还提供了一种缓存服务端,所述缓存服务端,用于向内存数据库服务器上报所述缓存服务端信息,并完成缓存数据块的管理。
本发明还提供了一种分布式缓存服务器***的应用方法,包括,
缓存服务端向内存数据库服务器上报缓存服务端信息;
内存数据库服务器建立并保存缓存服务端信息表以及数据存储类别与缓存服务端对应目录表,以及在收到所述缓存服务端上报的缓存服务端信息后,若数据库中含有该缓存服务端信息,则更新对应的磁盘空间数据,否则将该缓存服务端信息***数据库;
缓存客户端从内存数据库服务器中获取所有缓存服务端信息,与缓存服务 端建立连接,生成并定时维护链路链表。
上述的方法,其中,所述缓存服务端信息包括本端的ip地址、缓存服务端口和当前可用磁盘空间。
上述的方法,其中,缓存客户端从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成链路链表具体为,
所述缓存客户端在启动后,定时向内存数据库服务器查询所有缓存服务端信息,根据所述缓存数据库服务器返回的所有缓存服务端信息,在缓存客户端建立链路链表,其中存储各缓存服务端的信息,缓存客户端与缓存服务端建立连接,并将连接状态存入链路链表;
其中,缓存客户端链路链表的作用在于,当有数据请求时,缓存客户端将所述数据请求的数据分类后,向数据库查询该类别存放的缓存服务端,数据库返回缓存服务端信息给缓存客户端时,缓存客户端需要根据该链路链表,核查该缓存服务端信息,符合要求才将请求转发至缓存服务端,否则返回错误响应。
上述的方法,其中,缓存客户端定时维护链路链表具体为,
缓存客户端定时从数据库获取所有缓存服务端信息,将新增的缓存服务端信息加入链路链表;以及
缓存客户端使用心跳消息定时检测与各缓存服务端链路的状态,并将链路连接情况更新写入链路链表,定时更新链路链表,所述链路链表用于缓存客户端处理请求时的链路核查。
上述的方法,其中,所述方法还包括,
所述缓存客户端在收到应用程序的***请求处理后,判定数据请求类别,然后向内存数据库查询数据类别与缓存服务端存储对应目录表;
所述内存数据库服务器判断所述数据库中是否存在对应的缓存服务端信息,若数据库中不存在对应的缓存服务端信息,则查找磁盘可用空间最大的缓存服务端信息,返回给缓存客户端;若数据库中存在对应的缓存服务端信息, 则将所述对应的缓存服务端信息返回缓存客户端;
所述缓存客户端根据所述链路链表核查数据库返回的缓存服务端信息是否有效,若有效则立即转发***请求;若无效则在当前链路链表中找到有效的链路,进行***请求转发;以及处理转发应用程序***请求后,将对应的数据类别和存储缓存服务端信息发送至数据库,进行更新;
所述缓存服务端接收***请求后,将数据块***到内存中,并将所述数据块写入文件存入磁盘;具体方式为,在内存中建立数据块hash链表,将***的数据块存放在内存数据块链表中,以数据块请求链接为key值,同时将数据块写入文件存放在磁盘。
上述的方法,其中,缓存服务端将数据块写入文件存入磁盘具体为,
缓存服务端对数据请求类别进行加密,获得32位密文类别码,再按照所述密文类别码组合成存储路径,将所述数据块写为二进制文件存放在所述存储路径下。
上述的方法,其中,所述32位密文类别码组合成存储路径具体为,
32位密文密码是由罗马数字和小写英文数字组合而成,32位密码的前两位为第一层目录名,密码的第3、4位为第二层子目录名,第三层子目录以该32位密码为名,第四层则为数据块写入的二进制文件;
上述的方法,其中,所述方法还包括,
所述缓存客户端接收应用程序的查询请求后,判定数据请求类别,向内存数据库查询数据类别与缓存服务端存储对应目录表,查找到后根据数据库返回的缓存服务端信息,在链路链表中核查该缓存服务端当前的状态,若可用将所述查询请求转发到所述缓存服务端,等待缓存服务端数据块定位查找后,将结果返回;否则返回失败响应;
缓存服务端根据所述查询请求从缓存服务端内存中进行数据块的定位获取。
上述的方法,其中,所述缓存服务端根据所述查询请求从缓存服务端内存 中进行数据块的定位获取具体为,
所述缓存服务端根据查询请求的key值,查找hash表,找到后将对应数据块链表更新,并将数据返回缓存客户端,若未在内存中找到,则根据所述数据块文件命名和存储方式,直接定位到该数据块,有则返回数据,无则返回失败响应。
采用本发明的技术方案,可以使缓存服务器***的设置和使用更加简洁方便,访问速度更快,***可以自动扩展,以及自动进行更新;
采用本发明的优选方案,客户端处理应用程序的***、查询数据请求,只需要进行一次数据库操作,***完毕再进行一次数据库更新,可以有效减少数据库访问压力,提高***访问速度;
采用本发明的优选方案,通过上述构建存储路径以及文件名的方法,目录结构清晰,缓存服务端可以直接命中各个数据块以及各个数据块文件,数据访问快速而简便。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例***结构图;
图2是缓存服务端将数据块写入文件存入磁盘的命名方式图;
图3是本发明方法实施例流程图;
图4是本发明方法实施例的数据***流程图;
图5是本发明方法实施例的数据查询流程图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,是本发明实施例***结构图,提供一种分布式缓存服务器***,包括一个或多个缓存客户端、一个或多个缓存服务端以及一内存数据库服务器,其中,
缓存客户端,用于从内存数据库服务器中获取缓存服务端信息,生成并定时维护链路链表;
具体地,缓存客户端属于需要使用缓存服务器***的应用程序侧,使用TCP/IP协议与内网网络连接;缓存客户端启动时从内存数据库服务器中获取所有缓存服务端信息后,主动与缓存服务端建立连接,之后定时从数据库获取缓存服务端信息,维持与缓存服务端的链路;
内存数据库服务器,用于建立并保存缓存服务端信息表(包括:缓存服务端ip地址、缓存服务端口、磁盘可用空间等信息)以及数据存储类别与缓存服务端对应目录表,在收到所述缓存服务端上报的缓存服务端信息后,如果数据库中有,则更新对应的磁盘空间数据,否则将数据***数据库;
缓存服务端,用于向内存数据库服务器上报本缓存服务端信息,具体是在启动后,定时将本端的ip地址、缓存服务端口、本地当前可用磁盘空间等信息,发送给内存数据库服务器。
上述***中,缓存客户端启动后,用于进行自动连接和链路维护,具体包括,
缓存客户端用于在启动后,定时向内存数据库发送消息,查询所有缓存服务端信息,生成缓存客户端链路链表,其中缓存客户端从数据库获取缓存服务端信息,并生成链路链表的方式是:根据数据库返回的所有缓存服务端信息,在客户端建立链表,其中存储各缓存服务端的信息,缓存客户端主动与缓存服 务端建立连接,并将连接状态存入链表;缓存客户端链路链表的作用在于,当有数据请求到来,客户端将请求的数据分类后,向数据库查询该类别存放的缓存服务端,数据库返回缓存服务端信息给客户端时,客户端需要根据该链路链表,核查该缓存服务端信息,符合要求才将请求转发至对端,否则返回错误响应。
缓存客户端根据内存数据库服务器返回的信息,主动向各个缓存服务端发起建立连接请求;将数据库返回的所有缓存服务端信息,及链路建立情况定时更新链路链表;其中,缓存客户端定时从数据库获取所有缓存服务端信息,将新增的缓存服务端信息加入链表,
缓存客户端定时备份当前的链路链表,以备后续使用;缓存客户端使用心跳消息定时检测与各条缓存服务端链路的状态,定时更新链路链表,其中,缓存客户端定时更新链路链表的方式为:定时发送心跳消息,检测各个缓存服务端的链路连接情况,并将链路连接情况更新写入链路链表,用于客户端处理请求时的链路核查。
缓存客户端接收应用程序的***请求进行处理,具体包括,
缓存客户端,用于判定数据请求类别,然后向内存数据库查询数据类别与缓存服务端存储对应目录表,有以下两种情况:情况一,如数据库中未找到,则在数据库缓存服务端信息表中,查找磁盘可用空间最大的缓存服务端信息,返回给缓存客户端;情况二,如数据库中找到,则将找到的缓存服务端信息返回给客户端,而后客户端核查数据库返回的缓存服务端是否有效,若有效则立即转发请求;若无效则在当前链路链表中找到有效的链路,进行请求转发,处理转发应用程序***请求后,将对应的数据类别和存储缓存服务端信息发送至数据库,进行更新;
缓存服务端,用于接受请求后,将数据***到内存中,并将数据块按照特定方式写入文件存入磁盘;缓存服务端处理***数据请求的方式为:在内存中建立数据块hash链表,将***的数据先存放在内存数据块链表中,以数据请求链接为key值,同时将数据写入文件存放在磁盘;缓存服务端管理内存数据块链表的方式为:使用最近最少使用LRU算法,将新***或者新访问的数据块 放在链表头部,整个链表按照访问时间先后顺序排列。
如图2所示,是缓存服务端将数据块写入文件存入磁盘的命名方式图,具体地,
缓存服务端将数据块写入磁盘的方式为:对数据请求类别进行加密,获得32位密文类别码,再按照此密文类别码组合成完整的存储路径,将数据块写为二进制文件存放在此路径下;具体地,
缓存服务端根据数据类别,使用加密后的32位密文类别码组合绝对路径,其方式为:32位密文密码是由罗马数字和小写英文数字组合而成,32位密码的前两位为第一层目录名,密码的第3、4位为第二层子目录名,第三层子目录以该32位密码为名,第四层则为数据块写入的二进制文件。
数据块文件命名方式为:将数据请求链接进行加密,获得32位密文请求链接码,按照此32位密码命名该文件。
缓存客户端与各缓存服务端建立连接后,接受应用程序的查询请求进行处理,具体为,
缓存客户端,用于判定数据请求类别,然后向内存数据库查询数据类别与缓存服务端存储对应目录表,查找到后根据数据库返回的缓存服务端信息,在链路链表中核查该缓存服务端当前的状态,若可用再将请求转发到该缓存服务端,等待缓存服务端数据定位查找后,将结果返回;若以上有条件不满足,则立即返回失败响应。
缓存服务端,用于从缓存服务端内存中进行数据块的定位获取,根据查询请求的key值,直接查找hash表,找到后将对应数据库链表更新,并将数据返回客户端,如未在内存中找到,则根据上述文件命名和存储方式,直接定位到该数据块,有则返回数据,无则返回失败响应。
如图3所示,是本发明方法实施例流程图,提供了一种分布式缓存服务器***的应用方法,包括,
步骤S301,缓存服务端向内存数据库服务器上报缓存服务端信息;
步骤S302,内存数据库服务器建立并保存缓存服务端信息表以及数据存储类别与缓存服务端对应目录表,以及在收到所述缓存服务端上报的缓存服务端信息后,若数据库中含有该缓存服务端信息,则更新对应的磁盘空间数据,否则将该缓存服务端信息***数据库;
步骤S303,缓存客户端从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成并定时维护链路链表。
上述方法中,所述缓存服务端信息包括本端的ip地址、缓存服务端口和当前可用磁盘空间。
上述方法中,,缓存客户端从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成链路链表具体为,
所述缓存客户端在启动后,定时向内存数据库服务器查询所有缓存服务端信息,根据所述缓存数据库服务器返回的所有缓存服务端信息,在缓存客户端建立链路链表,其中存储各缓存服务端的信息,缓存客户端与缓存服务端建立连接,并将连接状态存入链路链表;
其中,缓存客户端链路链表的作用在于,当有数据请求时,缓存客户端将所述数据请求的数据分类后,向数据库查询该类别存放的缓存服务端,数据库返回缓存服务端信息给缓存客户端时,缓存客户端需要根据该链路链表,核查该缓存服务端信息,符合要求才将请求转发至缓存服务端,否则返回错误响应。
上述方法中,缓存客户端定时维护链路链表具体为,
缓存客户端定时从数据库获取所有缓存服务端信息,将新增的缓存服务端信息加入链路链表;以及
缓存客户端使用心跳消息定时检测与各缓存服务端链路的状态,并将链路连接情况更新写入链路链表,定时更新链路链表,所述链路链表用于缓存客户端处理请求时的链路核查。
如图4所示,是本发明方法实施例的数据***流程图,包括,
步骤S401,所述缓存客户端在收到应用程序的***请求处理后,判定数据请求类别,然后向内存数据库查询数据类别与缓存服务端存储对应目录表;
步骤S402,所述内存数据库服务器判断所述数据库中是否存在对应的缓存服务端信息,若数据库中不存在对应的缓存服务端信息,则查找磁盘可用空间最大的缓存服务端信息,返回给缓存客户端;若数据库中存在对应的缓存服务端信息,则将所述对应的缓存服务端信息返回缓存客户端;
步骤S403,所述缓存客户端根据所述链路链表核查数据库返回的缓存服务端信息是否有效,若有效则立即转发***请求;若无效则在当前链路链表中找到有效的链路,进行***请求转发;以及处理转发应用程序***请求后,将对应的数据类别和存储缓存服务端信息发送至数据库,进行更新;
步骤S404,所述缓存服务端接收***请求后,将数据块***到内存中,并将所述数据块写入文件存入磁盘;具体方式为,在内存中建立数据块hash链表,将***的数据块存放在内存数据块链表中,以数据块请求链接为key值,同时将数据块写入文件存放在磁盘。
上述方法中,缓存服务端将数据块写入文件存入磁盘具体为,
缓存服务端对数据请求类别进行加密,获得32位密文类别码,再按照所述密文类别码组合成存储路径,将所述数据块写为二进制文件存放在所述存储路径下。
上述方法中,所述32位密文类别码组合成存储路径具体为,
32位密文密码是由罗马数字和小写英文数字组合而成,32位密码的前两位为第一层目录名,密码的第3、4位为第二层子目录名,第三层子目录以该32位密码为名,第四层则为数据块写入的二进制文件;
如图5所示,是本发明方法实施例的数据查询流程图,包括,
步骤S501,所述缓存客户端接收应用程序的查询请求后,判定数据请求类别,向内存数据库查询数据类别与缓存服务端存储对应目录表,查找到后根据数据库返回的缓存服务端信息,在链路链表中核查该缓存服务端当前的状态,若可用将所述查询请求转发到所述缓存服务端,等待缓存服务端数据块定位查 找后,将结果返回;否则返回失败响应;
步骤S502,缓存服务端根据所述查询请求从缓存服务端内存中进行数据块的定位获取。
上述方法中,所述缓存服务端根据所述查询请求从缓存服务端内存中进行数据块的定位获取具体为,
所述缓存服务端根据查询请求的key值,查找hash表,找到后将对应数据块链表更新,并将数据返回缓存客户端,若未在内存中找到,则根据所述数据块文件命名和存储方式,直接定位到该数据块,有则返回数据,无则返回失败响应。
上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (20)
1.一种分布式缓存服务器***,其特征在于,包括一个或多个缓存客户端、一个或多个缓存服务端以及一内存数据库服务器,其中,
缓存客户端,用于从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成并定时维护链路链表;
内存数据库服务器,用于建立并保存缓存服务端信息表以及数据存储类别与缓存服务端对应目录表,以及在收到所述缓存服务端上报的缓存服务端信息后,若数据库中含有该缓存服务端信息,则更新对应的磁盘空间数据,否则将该缓存服务端信息***数据库;
缓存服务端,用于向内存数据库服务器上报所述缓存服务端信息,并完成缓存数据块的管理。
2.根据权利要求1所述的***,其特征在于,所述缓存服务端信息包括本端的ip地址、缓存服务端口和当前可用磁盘空间。
3.根据权利要求1或2所述的***,其特征在于,缓存客户端用于从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成链路链表具体为,
所述缓存客户端,用于在启动后,定时向内存数据库服务器查询所有缓存服务端信息,根据所述缓存数据库服务器返回的所有缓存服务端信息,在缓存客户端建立链路链表,其中存储各缓存服务端的信息,缓存客户端与缓存服务端建立连接,并将连接状态存入链路链表;
其中,缓存客户端链路链表的作用在于,当有数据请求时,缓存客户端将所述数据请求的数据分类后,向数据库查询该类别存放的缓存服务端,数据库返回缓存服务端信息给缓存客户端时,缓存客户端需要根据该链路链表,核查该缓存服务端信息,符合要求才将请求转发至缓存服务端,否则返回错误响应。
4.根据权利要求3所述的***,缓存客户端用于定时维护链路链表具体为,
缓存客户端,用于定时从数据库获取所有缓存服务端信息,将新增的缓存服务端信息加入链路链表;以及
缓存客户端,用于使用心跳消息定时检测与各缓存服务端链路的状态,并将链路连接情况更新写入链路链表,定时更新链路链表,所述链路链表用于缓存客户端处理请求时的链路核查。
5.根据权利要求1或2所述的***,其特征在于,
所述缓存客户端,还用于在收到应用程序的***请求处理后,判定数据请求类别,然后向内存数据库查询数据类别与缓存服务端存储对应目录表;以及用于根据所述链路链表核查数据库返回的缓存服务端信息是否有效,若有效则立即转发***请求;若无效则在当前链路链表中找到有效的链路,进行***请求转发;以及用于处理转发应用程序***请求后,将对应的数据类别和存储缓存服务端信息发送至数据库,进行更新;
所述内存数据库服务器,用于判断所述数据库中是否存在对应的缓存服务端信息,若数据库中不存在对应的缓存服务端信息,则查找磁盘可用空间最大的缓存服务端信息,返回给缓存客户端;若数据库中存在对应的缓存服务端信息,则将所述对应的缓存服务端信息返回缓存客户端;
所述缓存服务端,用于接收***请求后,将数据块***到内存中,并将所述数据块写入文件存入磁盘;具体方式为,在内存中建立数据块hash链表,将***的数据块存放在内存数据块链表中,以数据块请求链接为key值,同时将数据块写入文件存放在磁盘。
6.根据权利要求5所述的***,其特征在于,
所述缓存服务端,还用于管理内存数据块链表,具体方式为使用最近最少使用LRU算法,将新***或者新访问的数据块放在链表头部,整个链表按照访问时间先后顺序排列。
7.根据权利要求5所述的***,其特征在于,缓存服务端用于将数据块写入文件存入磁盘具体为,
缓存服务端,用于对数据请求类别进行加密,获得32位密文类别码,再按照所述密文类别码组合成存储路径,将所述数据块写为二进制文件存放在所述存储路径下。
8.根据权利要求7所述的***,其特征在于,所述32位密文类别码组合成存储路径具体为,
32位密文密码是由罗马数字和小写英文数字组合而成,32位密码的前两位为第一层目录名,密码的第3、4位为第二层子目录名,第三层子目录以该32位密码为名,第四层则为数据块写入的二进制文件。
9.根据权利要求1或2所述的***,其特征在于,
所述缓存客户端,用于接收应用程序的查询请求后,判定数据请求类别,向内存数据库查询数据类别与缓存服务端存储对应目录表,查找到后根据数据库返回的缓存服务端信息,在链路链表中核查该缓存服务端当前的状态,若可用将所述查询请求转发到所述缓存服务端,等待缓存服务端数据块定位查找后,将结果返回;否则返回失败响应;
缓存服务端,用于根据所述查询请求从缓存服务端内存中进行数据块的定位获取。
10.根据权利要求9所述的***,其特征在于,所述缓存服务端用于根据所述查询请求从缓存服务端内存中进行数据块的定位获取具体为,
所述缓存服务端,用于根据查询请求的key值,查找hash表,找到后将对应数据块链表更新,并将数据返回缓存客户端,若未在内存中找到,则根据所述数据块文件命名和存储方式,直接定位到该数据块,有则返回数据,无则返回失败响应。
11.一种缓存客户端,应用于权利要求1至10中任一所述的***,其特征在于,
所述缓存客户端用于从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成并定时维护链路链表,其中,缓存客户端链路链表的作用在于,当有数据请求时,缓存客户端将所述数据请求的数据分类后,向数据库查询该类别存放的缓存服务端,数据库返回缓存服务端信息给缓存客户端时,缓存客户端需要根据该链路链表,核查该缓存服务端信息,符合要求才将请求转发至缓存服务端,否则返回错误响应。
12.一种分布式缓存服务器***的应用方法,其特征在于,包括,
缓存服务端向内存数据库服务器上报缓存服务端信息;
内存数据库服务器建立并保存缓存服务端信息表以及数据存储类别与缓存服务端对应目录表,以及在收到所述缓存服务端上报的缓存服务端信息后,若数据库中含有该缓存服务端信息,则更新对应的磁盘空间数据,否则将该缓存服务端信息***数据库;
缓存客户端从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成并定时维护链路链表。
13.根据权利要求12所述的方法,其特征在于,所述缓存服务端信息包括本端的ip地址、缓存服务端口和当前可用磁盘空间。
14.根据权利要求12或13所述的方法,其特征在于,缓存客户端从内存数据库服务器中获取所有缓存服务端信息,与缓存服务端建立连接,生成链路链表具体为,
所述缓存客户端在启动后,定时向内存数据库服务器查询所有缓存服务端信息,根据所述缓存数据库服务器返回的所有缓存服务端信息,在缓存客户端建立链路链表,其中存储各缓存服务端的信息,缓存客户端与缓存服务端建立连接,并将连接状态存入链路链表;
其中,缓存客户端链路链表的作用在于,当有数据请求时,缓存客户端将所述数据请求的数据分类后,向数据库查询该类别存放的缓存服务端,数据库返回缓存服务端信息给缓存客户端时,缓存客户端需要根据该链路链表,核查该缓存服务端信息,符合要求才将请求转发至缓存服务端,否则返回错误响应。
15.根据权利要求14所述的方法,缓存客户端定时维护链路链表具体为,
缓存客户端定时从数据库获取所有缓存服务端信息,将新增的缓存服务端信息加入链路链表;以及
缓存客户端使用心跳消息定时检测与各缓存服务端链路的状态,并将链路连接情况更新写入链路链表,定时更新链路链表,所述链路链表用于缓存客户端处理请求时的链路核查。
16.根据权利要求12或13所述的方法,其特征在于,所述方法还包括,
所述缓存客户端在收到应用程序的***请求处理后,判定数据请求类别,然后向内存数据库查询数据类别与缓存服务端存储对应目录表;
所述内存数据库服务器判断所述数据库中是否存在对应的缓存服务端信息,若数据库中不存在对应的缓存服务端信息,则查找磁盘可用空间最大的缓存服务端信息,返回给缓存客户端;若数据库中存在对应的缓存服务端信息,则将所述对应的缓存服务端信息返回缓存客户端;
所述缓存客户端根据所述链路链表核查数据库返回的缓存服务端信息是否有效,若有效则立即转发***请求;若无效则在当前链路链表中找到有效的链路,进行***请求转发;以及用于处理转发应用程序***请求后,将对应的数据类别和存储缓存服务端信息发送至数据库,进行更新;
所述缓存服务端接收***请求后,将数据块***到内存中,并将所述数据块写入文件存入磁盘;具体方式为,在内存中建立数据块hash链表,将***的数据块存放在内存数据块链表中,以数据块请求链接为key值,同时将数据块写入文件存放在磁盘。
17.根据权利要求16所述的方法,其特征在于,缓存服务端将数据块写入文件存入磁盘具体为,
缓存服务端对数据请求类别进行加密,获得32位密文类别码,再按照所述密文类别码组合成存储路径,将所述数据块写为二进制文件存放在所述存储路径下。
18.根据权利要求17所述的方法,其特征在于,所述32位密文类别码组合成存储路径具体为,
32位密文密码是由罗马数字和小写英文数字组合而成,32位密码的前两位为第一层目录名,密码的第3、4位为第二层子目录名,第三层子目录以该32位密码为名,第四层则为数据块写入的二进制文件。
19.根据权利要求12或13所述的方法,其特征在于,所述方法还包括,
所述缓存客户端接收应用程序的查询请求后,判定数据请求类别,向内存数据库查询数据类别与缓存服务端存储对应目录表,查找到后根据数据库返回的缓存服务端信息,在链路链表中核查该缓存服务端当前的状态,若可用将所述查询请求转发到所述缓存服务端,等待缓存服务端数据块定位查找后,将结果返回;否则返回失败响应;
缓存服务端根据所述查询请求从缓存服务端内存中进行数据块的定位获取。
20.根据权利要求19所述的方法,其特征在于,所述缓存服务端根据所述查询请求从缓存服务端内存中进行数据块的定位获取具体为,
所述缓存服务端根据查询请求的key值,查找hash表,找到后将对应数据块链表更新,并将数据返回缓存客户端,若未在内存中找到,则根据所述数据块文件命名和存储方式,直接定位到该数据块,有则返回数据,无则返回失败响应。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110093902.0A CN102739720B (zh) | 2011-04-14 | 2011-04-14 | 分布式缓存服务器***及其应用方法、缓存客户端 |
PCT/CN2011/075964 WO2012139328A1 (zh) | 2011-04-14 | 2011-06-20 | 缓存服务器***及其应用方法、缓存客户端、缓存服务端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110093902.0A CN102739720B (zh) | 2011-04-14 | 2011-04-14 | 分布式缓存服务器***及其应用方法、缓存客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102739720A CN102739720A (zh) | 2012-10-17 |
CN102739720B true CN102739720B (zh) | 2015-01-28 |
Family
ID=46994499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110093902.0A Active CN102739720B (zh) | 2011-04-14 | 2011-04-14 | 分布式缓存服务器***及其应用方法、缓存客户端 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102739720B (zh) |
WO (1) | WO2012139328A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853727B (zh) * | 2012-11-29 | 2018-07-31 | 深圳中兴力维技术有限公司 | 提高大数据量查询性能的方法及*** |
CN103118099B (zh) * | 2013-01-25 | 2016-03-02 | 福建升腾资讯有限公司 | 基于散列算法的图形图像缓存方法 |
CN104461929B (zh) * | 2013-09-23 | 2018-03-23 | ***股份有限公司 | 基于***的分布式数据缓存方法 |
CN105426371A (zh) * | 2014-09-17 | 2016-03-23 | 上海三明泰格信息技术有限公司 | 数据库*** |
US9876873B1 (en) | 2015-10-21 | 2018-01-23 | Perfect Sense, Inc. | Caching techniques |
CN106649408B (zh) * | 2015-11-04 | 2020-10-13 | ***通信集团重庆有限公司 | 一种大数据检索方法和装置 |
CN107038174B (zh) * | 2016-02-04 | 2020-11-24 | 北京京东尚科信息技术有限公司 | 用于数据***的数据同步方法和装置 |
CN106331147B (zh) * | 2016-09-09 | 2019-09-06 | 深圳市彬讯科技有限公司 | 一种redis分布式调用方法 |
CN106506613B (zh) * | 2016-10-31 | 2018-04-13 | 大唐高鸿信安(浙江)信息科技有限公司 | 分布式key‑value存储***的数据存储位置加密方法 |
CN106934001A (zh) * | 2017-03-03 | 2017-07-07 | 广州天源迪科信息技术有限公司 | 分布式快速清单查询***及方法 |
CN107087232B (zh) * | 2017-04-07 | 2020-03-27 | 优地网络有限公司 | 用户的实时状态检测方法及*** |
CN107133183B (zh) * | 2017-04-11 | 2020-06-30 | 深圳市联云港科技有限公司 | 一种基于tcmu虚拟块设备的缓存数据访问方法及*** |
CN107071059B (zh) * | 2017-05-25 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 分布式缓存服务实现方法、装置、终端、服务器及*** |
CN107797859B (zh) * | 2017-11-16 | 2021-08-20 | 山东浪潮云服务信息科技有限公司 | 一种定时任务的调度方法及一种调度服务器 |
CN108009250B (zh) * | 2017-12-01 | 2021-09-07 | 武汉斗鱼网络科技有限公司 | 一种多分类赛事数据缓存建立、查询方法及装置 |
CN110022257B (zh) * | 2018-01-08 | 2023-04-07 | 北京京东尚科信息技术有限公司 | 分布式消息*** |
CN110298677B (zh) * | 2018-03-22 | 2021-08-13 | 中移(苏州)软件技术有限公司 | 一种云计算资源计费的方法、装置、电子设备和存储介质 |
CN109086380B (zh) * | 2018-07-25 | 2022-09-16 | 光大环境科技(中国)有限公司 | 对历史数据进行压缩存储的方法及*** |
CN110232044B (zh) * | 2019-06-17 | 2023-03-28 | 浪潮通用软件有限公司 | 一种大数据汇总调度服务的实现***及方法 |
CN110535977B (zh) * | 2019-09-29 | 2022-04-01 | 深圳市网心科技有限公司 | 文件分发方法及装置、计算机装置及存储介质 |
CN110825986B (zh) * | 2019-11-05 | 2023-03-21 | 上海携程商务有限公司 | 客户端请求数据的方法、***、存储介质和电子设备 |
CN111858664B (zh) * | 2020-06-23 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种基于bmc的数据持久化方法及*** |
CN112383415A (zh) * | 2020-10-30 | 2021-02-19 | 上海蜜度信息技术有限公司 | 服务端标示方法及设备 |
CN114422570B (zh) * | 2021-12-31 | 2024-05-14 | 深圳市联软科技股份有限公司 | 一种跨平台的多模块通讯方法及*** |
CN114938393B (zh) * | 2022-05-06 | 2024-04-19 | 中富通集团股份有限公司 | 一种机房数据交互方法及***和存储介质 |
CN115633005A (zh) * | 2022-10-26 | 2023-01-20 | 云度新能源汽车有限公司 | 一种实时高并发连接处理方法及其处理*** |
CN116360711B (zh) * | 2023-06-02 | 2023-08-11 | 杭州沃趣科技股份有限公司 | 一种分布式存储处理方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308513A (zh) * | 2008-06-27 | 2008-11-19 | 福建星网锐捷网络有限公司 | 分布式***中缓存数据的同步配置方法与装置 |
CN101493826A (zh) * | 2008-12-23 | 2009-07-29 | 中兴通讯股份有限公司 | 基于web应用的数据库***及其数据管理方法 |
CN101562543A (zh) * | 2009-05-25 | 2009-10-21 | 阿里巴巴集团控股有限公司 | 一种缓存数据的处理方法、处理***和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006330B (zh) * | 2010-12-01 | 2013-06-12 | 北京瑞信在线***技术有限公司 | 分布式缓存***、数据的缓存方法及缓存数据的查询方法 |
-
2011
- 2011-04-14 CN CN201110093902.0A patent/CN102739720B/zh active Active
- 2011-06-20 WO PCT/CN2011/075964 patent/WO2012139328A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308513A (zh) * | 2008-06-27 | 2008-11-19 | 福建星网锐捷网络有限公司 | 分布式***中缓存数据的同步配置方法与装置 |
CN101493826A (zh) * | 2008-12-23 | 2009-07-29 | 中兴通讯股份有限公司 | 基于web应用的数据库***及其数据管理方法 |
CN101562543A (zh) * | 2009-05-25 | 2009-10-21 | 阿里巴巴集团控股有限公司 | 一种缓存数据的处理方法、处理***和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2012139328A1 (zh) | 2012-10-18 |
CN102739720A (zh) | 2012-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102739720B (zh) | 分布式缓存服务器***及其应用方法、缓存客户端 | |
AU2005312895B2 (en) | Bidirectional data transfer optimization and content control for networks | |
KR101725306B1 (ko) | 컨텐츠 중심 네트워크에서의 관리자 기반 라우팅을 이용한 에너지-효율적인 컨텐츠 캐싱 | |
CN103037312B (zh) | 消息推送方法及装置 | |
KR102100710B1 (ko) | 컨텐츠 중심 네트워크에서 컨텐츠 소유자 및 노드의 패킷 전송 방법 | |
US9465819B2 (en) | Distributed database | |
CN110191428B (zh) | 一种基于智能云平台的数据分配方法 | |
CN101764839B (zh) | 一种数据访问方法以及统一资源定位符服务器 | |
US8434156B2 (en) | Method, access node, and system for obtaining data | |
CN101090371B (zh) | 一种即时通讯***中用户信息管理的方法及*** | |
US8539041B2 (en) | Method, apparatus, and network system for acquiring content | |
CN105635196A (zh) | 一种获取文件数据的方法、***和应用服务器 | |
CN104717314A (zh) | 一种ip管理方法及***、客户端、服务器 | |
US20150256601A1 (en) | System and method for efficient content caching in a streaming storage | |
CN105653473A (zh) | 基于二元标识的缓存数据访问方法及装置 | |
CN103179161B (zh) | 一种内容获取方法、装置及网络*** | |
CN102857547A (zh) | 分布式缓存的方法及设备 | |
US20120311073A1 (en) | Routing by resolution | |
US9788192B2 (en) | Making subscriber data addressable as a device in a mobile data network | |
CN102497402B (zh) | 一种内容注入方法及***、内容分发方法及*** | |
CN103491124A (zh) | 一种对彩信数据进行处理的方法及分布式缓存*** | |
CN106301944B (zh) | 一种路由器网络中转读写方法及中转服务器 | |
CN117938937A (zh) | 基于分布式存储集群处理读写请求的方法及*** | |
CN113610529A (zh) | 联盟链的区块存储、获取方法、装置、节点和存储介质 | |
CN102916973A (zh) | 一种动态接口的实现方法及*** |
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 |