CN105282236B - 一种分布式缓存方法及装置 - Google Patents
一种分布式缓存方法及装置 Download PDFInfo
- Publication number
- CN105282236B CN105282236B CN201510587377.6A CN201510587377A CN105282236B CN 105282236 B CN105282236 B CN 105282236B CN 201510587377 A CN201510587377 A CN 201510587377A CN 105282236 B CN105282236 B CN 105282236B
- Authority
- CN
- China
- Prior art keywords
- caching
- user
- request
- calculated
- distributed
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种分布式缓存方法及装置,所述方法先判断接收到的用户的访问请求是否满足预先设定的规则,如果满足,则进入下一步进行缓存处理,否则不进行缓存处理;随后根据用户请求生成缓存主键,根据缓存主键计算缓存随机数,根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存。本发明的装置包括用户请求筛选模块和缓存服务器分配模块。本发明的方法及装置,将用户请求对应的响应数据缓存在不同缓存服务器中,提高了缓存的利用率,并提高了缓存的访问速度。
Description
技术领域
本发明数属于数据缓存技术领域,尤其涉及一种分布式缓存方法及装置。
背景技术
当传统数据库面临大规模数据访问时,磁盘I/O往往成为性能瓶颈,从而导致过高的响应延迟。分布式缓存将高速内存作为数据对象的存储介质,数据以键值对(key/value)形式存储,理想情况下可以获得DRAM级的读写性能。
然而随着所缓存的数据量的快速增长,在面对高并发访问要求的情况下,缓存响应的速度仍然不够让人满意。在大量的缓存数据中根据key来查找value,当缓存中的key有上亿或几十亿时,查找的速度并不理想。同时当value比较大,例如是图像数据时,更加影响访问的速度。
发明内容
本发明的目的是提供一种分布式缓存方法及装置,能够在大数据量情况下依然提供比较高的访问速度。
为了实现上述目的,本发明技术方案如下:
一种分布式缓存方法,所述方法包括步骤:
判断接收到的用户的访问请求是否满足预先设定的规则,如果满足,则进入下一步进行缓存处理,否则不进行缓存处理;
根据用户请求生成缓存主键,根据缓存主键计算缓存随机数,根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存。
其中,所述预先设定的规则为建立分别保存了相应的用户请求关键值的黑白名单,在收到用户请求后,提取用户请求中的关键值,先查看用户请求的关键值是否在白名单中,再查看用户请求的关键值是否在黑名单中,当用户请求的关键值在白名单中并且不在黑名单中时,判断为满足预先设定的规则。
本发明所述根据用户请求生成缓存主键,根据缓存主键计算缓存随机数,包括:
根据用户请求生成缓存主键A;
根据缓存主键按照预设的算法计算得到一个随机大数M;
对计算得到的随机大数用分布式缓存服务器的数量求模,得到缓存随机数k。
进一步地,所述预设的算法包括:
令C=A+B,其中B为{1,1,…,1},其中B的位数与A相同;
根据下式计算随机大数M:
M=CCT。
所述根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存,包括:
根据计算得到的缓存随机数,将对应于用户请求的响应数据缓存到第k台缓存服务器。
本发明还提出了一种分布式缓存装置,所述装置包括:
用户请求筛选模块,用于判断接收到的用户的访问请求是否满足预先设定的规则,如果满足,则进入缓存服务器分配模块进行缓存处理,否则不进行缓存处理;
缓存服务器分配模块,用于根据用户请求生成缓存主键,根据缓存主键计算缓存随机数,根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存。
本发明所述用户请求筛选模块内设置了预先设定的规则,建立分别保存了相应的用户请求关键值的黑白名单,在收到用户请求后,提取用户请求中的关键值,先查看用户请求的关键值是否在白名单中,再查看用户请求的关键值是否在黑名单中,当用户请求的关键值在白名单中并且不在黑名单中时,判断为满足预先设定的规则。
进一步地,所述缓存服务器分配模块在根据用户请求生成缓存主键,根据缓存主键计算缓存随机数时,执行如下操作:
根据用户请求生成缓存主键A;
根据缓存主键按照预设的算法计算得到一个随机大数M;
对计算得到的随机大数用分布式缓存服务器的数量求模,得到缓存随机数k。
进一步地,所述缓存服务器分配模块根据缓存主键按照预设的算法计算得到一个随机大数M,执行如下操作:
令C=A+B,其中B为{1,1,…,1},其中B的位数与A相同;
根据下式计算随机大数M:
M=CCT。
进一步地,所述缓存服务器分配模块根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存时,执行如下操作:
根据计算得到的缓存随机数,将对应于用户请求的响应数据缓存到第k台缓存服务器。
本发明提出的一种分布式缓存方法及装置,通过根据用户请求计算缓存随机数,将用户请求对应的响应数据缓存在不同缓存服务器中,提高了缓存的利用率,并提高了缓存的访问速度。
附图说明
图1为本发明一种分布式缓存方法的流程图。
具体实施方式
下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成对本发明的限定。
如图1所示,本实施例一种分布式缓存方法,包括:
S1、判断接收到的用户的访问请求是否满足预先设定的规则,如果满足,则进入下一步进行缓存处理,否则不进行缓存处理。
用户对网页进行操作,点击网页上的区域产生用户请求,用户请求被发送到网页对应的后台服务器。为了提高缓存的效率,并避免缓存冲突,本实施例还实行黑白名单机制,对用户请求进行分类,排除一些不允许缓存的用户请求。
具体地,用户请求request一般包括请求体和关键值,例如一个验证身份的用户请求会包括用户ID和用户身份信息,其中用户ID为关键值,而用户身份信息为请求体。
系统中会预先设置有黑名单和白名单,黑白名单中各自保存了相应的用户请求的关键值,本实施例通过黑白名单两层判断来为用户请求分类。在收到用户请求后,能够提取用户请求中的关键值,先查看用户请求的关键值是否在白名单中,再查看用户请求的关键值是否在黑名单中,当用户请求关键值在白名单中并且不在黑名单中时,判断为满足预先设定的规则,才进入下面的缓存步骤。
从而根据用户请求的关键值对用户请求进行分类,排除不允许进行缓存的用户请求,降低缓存的负担。
例如在网上商城后台服务应用中,对用户反复访问,却不会频繁变动数据结果的接口用户请求允许缓存,对可能影响用户看到最新结果的数据的接口用户请求不允许缓存,从而保证让用户最快访问到,诸如主页,某商品明细,某一组关键词搜索等的结果。具体黑白名单的分类与具体业务实现相关,这里不再赘述。
S2、根据用户请求生成缓存主键,根据缓存主键计算缓存随机数,根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存。
对于满足黑白名单规则的用户请求,应用后台服务器会收集对应的响应数据,在缓存中通过以键值对方式保存,键值对包括缓存主键(主键key)和对应的响应数据(值value)。
本实施例通过分布式缓存来缓存数据。在现有技术中,分布式缓存服务器每台缓存服务器都保存同样的数据,以便于无论从哪一台缓存服务器都能够取到对应的响应数据,而且无论哪一台缓存服务器故障,也能够从其他缓存服务器中得到响应数据。但是这种方式对于缓存系统来说,一台缓存服务器存储的数据有限,每次查询缓存时都需要检索所有的缓存数据,查询的时间比较长,当缓存的数据很大时,时间上的延迟带来不良的用户体验。并且现有技术这样做的好处是通过分布式缓存服务器保障了缓存数据的相互备份,但是对于缓存系统来说,缓存的数据并不是特别需要备份,完全可以通过重建来重新生成缓存数据。
本实施例打破常规的做法,采用分布式缓存服务器来缓存,并且每台缓存服务器保存不同的数据。由于缓存是用来保存暂时的数据,即使缓存服务器故障,也能通过重新缓存来满足使用需求,因此本发明从提高缓存的访问速度和保证缓存不会溢出的角度来提高缓存实用效率。
例如,假设计算机每秒计算100次,内存只能存储800个元素。则对于单一线性缓存,如果存储1000个元素,那么,首先会导致多出的200个元素被强制逐出(否则系统内存溢出直接奔溃),则查询时,假设用比较慢的算法,顺序查找,那么需要计算8秒钟。
而采用分布式缓存,建设有两台缓存服务器,因此平均每台存储500元素(小于800,可以正常存储),在查询时,散列后直接在对应缓存服务器内查询,则时间耗费5秒,而且可以存储大于单一缓存服务器的容量。
可见本实施例分布式缓存相比前者,不仅快了3/8,而且存储量上升1.6倍。在现实中,由于单个缓存服务器的硬件因素,实际上性能通常会比上面高更多。
本实施例对响应数据进行分布式缓存,具体地,包括:
S2.1、根据用户请求生成缓存主键。
本实施例生成缓存主键的方法是通过简单距离加密算法,例如md5/sha1等,这类散列结果通常是均匀的,凡是支持散列的算法都可以,甚至可以使用用户自己的散列函数,提供扩展效果,都能达到同样的效果。用简单距离加密算法对用户请求进行加密是为了实现散列。
假设用户请求为request,用户请求request包括请求体和关键值,则缓存主键A的计算方法如下:
A=hash(request);
可得A={S0,S1,…,S31},其中包括S0~S31共32个特征码,按照sha1规定,可知任意特征码Si∈[0,F],i为0~31。
需要说明的是,本实施例采用hash来计算散列值,采用其他散列方法也同样适用,例如MD5,不同的散列方法得到的特征码数量不同,这里不再赘述。
S2.2、根据缓存主键按照预设的算法计算得到一个随机大数M。
本实施例根据缓存主键计算得到一个随机大数M,是从特征码中抽取一些字符按照预设的算法进行计算得到。所谓的预设的算法为简单的逻辑计算公式,对抽取的字符按照逻辑计算公式计算得到随机大数M,该逻辑计算公式可以为用户自定义的公式,本发明不限于具体的逻辑计算公式。
例如令C=A+B,其中B为{1,1,…,1},B的位数为32位
则:
C={R0,R1,…,R31}={S0,S1,…,S31}+{1,1,…,1}
可见,Ri∈[1,17],且Ri∈Z。之所以在A的基础上加上B,是因为在后续计算步骤中,如果运用到了乘法,那么就有一定概率会因为特征码字符为0而导致结果为0,概率是1-(15/16)^16约等于0.644,会导致严重破坏均匀。
本实施例根据如下公式计算得到一个随机大数M:
计算随机大数M的方法很多,例如直接将C中所有特征码相加得到随机大数M,或如上述公式用矩阵转置相乘。本发明不限于具体的计算方法。
S2.3、对计算得到的随机大数M用分布式缓存服务器的数量求模,得到缓存随机数k,根据计算得到缓存随机数k分配对应的缓存服务器,在该缓存服务器中对用户请求的响应数据进行缓存。
假定有缓存服务器N台,则
设缓存随机数k:
k=M%N,k∈[0,N-1]且k∈Z
容易理解的是,缓存随机数k小于N,根据缓存随机数k就可以将对应于用户请求的响应数据缓存到第k台缓存服务器。
而在查询缓存时,如果数据已经失效(超出有效期),则返回无效信息;如果该数据有效,请求时可以带上标识符,根据标识符取出数据同时可以自动延长数据有效期,或请求时无视该字段,则继续按照之前的有效期继续计算,甚至直接要求取出数据时同时删除数据,令数据即时失效。
对应与上述方法,本实施例还提供了一种分布式缓存装置,该装置包括:
用户请求筛选模块,用于判断接收到的用户的访问请求是否满足预先设定的规则,如果满足,则进入缓存服务器分配模块进行缓存处理,否则不进行缓存处理;
缓存服务器分配模块,用于根据用户请求生成缓存主键,根据缓存主键计算缓存随机数,根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存。
容易理解的是,缓存服务器分配模块根据用户请求生成缓存主键,根据缓存主键计算缓存随机数,根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存,在上述方法中已经进行了详细描述,这里不再赘述。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (8)
1.一种分布式缓存方法,其特征在于,所述方法包括步骤:
判断接收到的用户的访问请求是否满足预先设定的规则,如果满足,则进入下一步进行缓存处理,否则不进行缓存处理;
根据用户请求生成缓存主键,根据缓存主键计算缓存随机数,根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存;
其中,所述根据用户请求生成缓存主键,根据缓存主键计算缓存随机数,包括:
根据用户请求生成缓存主键A;
根据缓存主键按照预设的算法计算得到一个随机大数M;
对计算得到的随机大数用分布式缓存服务器的数量求模,得到缓存随机数k。
2.根据权利要求1的分布式缓存方法,其特征在于,所述预先设定的规则为建立分别保存了相应的用户请求关键值的黑白名单,在收到用户请求后,提取用户请求中的关键值,先查看用户请求的关键值是否在白名单中,再查看用户请求的关键值是否在黑名单中,当用户请求的关键值在白名单中并且不在黑名单中时,判断为满足预先设定的规则。
3.根据权利要求1的分布式缓存方法,其特征在于,所述预设的算法包括:
令C=A+B,其中B为{1,1,…,1},其中B的位数与A相同;
根据下式计算随机大数M:
M=CCT。
4.根据权利要求1的分布式缓存方法,其特征在于,所述根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存,包括:
根据计算得到的缓存随机数,将对应于用户请求的响应数据缓存到第k台缓存服务器。
5.一种分布式缓存装置,其特征在于,所述装置包括:
用户请求筛选模块,用于判断接收到的用户的访问请求是否满足预先设定的规则,如果满足,则进入缓存服务器分配模块进行缓存处理,否则不进行缓存处理;
缓存服务器分配模块,用于根据用户请求生成缓存主键,根据缓存主键计算缓存随机数,根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存;
其中,所述缓存服务器分配模块在根据用户请求生成缓存主键,根据缓存主键计算缓存随机数时,执行如下操作:
根据用户请求生成缓存主键A;
根据缓存主键按照预设的算法计算得到一个随机大数M;
对计算得到的随机大数用分布式缓存服务器的数量求模,得到缓存随机数k。
6.根据权利要求5的分布式缓存装置,其特征在于,所述用户请求筛选模块设置了预先设定的规则,所述预先设定的规则为建立分别保存了相应的用户请求关键值的黑白名单,在收到用户请求后,提取用户请求中的关键值,先查看用户请求的关键值是否在白名单中,再查看用户请求的关键值是否在黑名单中,当用户请求的关键值在白名单中并且不在黑名单中时,判断为满足预先设定的规则。
7.根据权利要求5的分布式缓存装置,其特征在于,所述缓存服务器分配模块根据缓存主键按照预设的算法计算得到一个随机大数M,执行如下操作:
令C=A+B,其中B为{1,1,…,1},其中B的位数与A相同;
根据下式计算随机大数M:
M=CCT。
8.根据权利要求5的分布式缓存装置,其特征在于,所述缓存服务器分配模块根据计算得到的缓存随机数将收集的对应于用户请求的响应数据分配到不同的缓存服务器进行分布式缓存时,执行如下操作:
根据计算得到的缓存随机数,将对应于用户请求的响应数据缓存到第k台缓存服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510587377.6A CN105282236B (zh) | 2015-09-16 | 2015-09-16 | 一种分布式缓存方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510587377.6A CN105282236B (zh) | 2015-09-16 | 2015-09-16 | 一种分布式缓存方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105282236A CN105282236A (zh) | 2016-01-27 |
CN105282236B true CN105282236B (zh) | 2018-04-03 |
Family
ID=55150541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510587377.6A Active CN105282236B (zh) | 2015-09-16 | 2015-09-16 | 一种分布式缓存方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105282236B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407374A (zh) * | 2016-09-09 | 2017-02-15 | 浪潮软件股份有限公司 | 一种适用于移动开发的高性能缓存方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916289A (zh) * | 2010-08-20 | 2010-12-15 | 浙江大学 | 支持海量小文件和动态备份数的数字图书馆存储系统的构建方法 |
CN102014066A (zh) * | 2010-12-13 | 2011-04-13 | 武汉大学 | 一种覆盖网络中的数据缓存管理方法 |
CN104657500A (zh) * | 2015-03-12 | 2015-05-27 | 浪潮集团有限公司 | 一种基于key-value键值对的分布式存储方法 |
-
2015
- 2015-09-16 CN CN201510587377.6A patent/CN105282236B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916289A (zh) * | 2010-08-20 | 2010-12-15 | 浙江大学 | 支持海量小文件和动态备份数的数字图书馆存储系统的构建方法 |
CN102014066A (zh) * | 2010-12-13 | 2011-04-13 | 武汉大学 | 一种覆盖网络中的数据缓存管理方法 |
CN104657500A (zh) * | 2015-03-12 | 2015-05-27 | 浪潮集团有限公司 | 一种基于key-value键值对的分布式存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105282236A (zh) | 2016-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102006330B (zh) | 分布式缓存系统、数据的缓存方法及缓存数据的查询方法 | |
CN105718455B (zh) | 一种数据查询方法及装置 | |
CN104572727B (zh) | 一种数据查询方法及装置 | |
CN112015674B (zh) | 基于多层级的缓存资源访问方法、装置和计算机设备 | |
US8949535B1 (en) | Cache updating | |
CN112579606A (zh) | 工作流数据处理方法、装置、计算机设备及存储介质 | |
CN107368608A (zh) | 基于arc替换算法的hdfs小文件缓存管理方法 | |
Fukuda et al. | Caching memcached at reconfigurable network interface | |
CN112100185B (zh) | 区块链数据平衡负载的索引系统及方法 | |
CN107798106A (zh) | 一种分布式爬虫系统中的url去重方法 | |
CN108647266A (zh) | 一种异构数据快速分布存储、交互方法 | |
EP3049940A1 (en) | Data caching policy in multiple tenant enterprise resource planning system | |
CN106649150A (zh) | 一种缓存管理方法及装置 | |
CN114817195A (zh) | 一种分布式存储缓存管理的方法、系统、存储介质及设备 | |
CN114281855A (zh) | 数据请求方法、装置、计算机设备、存储介质和程序产品 | |
He et al. | Research on multifeature data routing strategy in deduplication | |
CN106547484A (zh) | 一种基于raid5的实现内存数据可靠性方法及系统 | |
CN105282236B (zh) | 一种分布式缓存方法及装置 | |
CN106155936B (zh) | 一种缓存替换方法与相关装置 | |
JP6233846B2 (ja) | 可変長ノンスの生成 | |
CN109213972B (zh) | 确定文档相似度的方法、装置、设备和计算机存储介质 | |
CN103678173B (zh) | 缓存失效方法和装置 | |
CN109254880A (zh) | 一种处理数据库宕机的方法及装置 | |
CN113127717A (zh) | 一种密钥检索方法和系统 | |
Ge et al. | Cinhba: A secondary index with hotscore caching policy on key-value data store |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |