CN102917036A - 一种基于Memcached的分布式缓存数据同步实现方法 - Google Patents
一种基于Memcached的分布式缓存数据同步实现方法 Download PDFInfo
- Publication number
- CN102917036A CN102917036A CN2012103772349A CN201210377234A CN102917036A CN 102917036 A CN102917036 A CN 102917036A CN 2012103772349 A CN2012103772349 A CN 2012103772349A CN 201210377234 A CN201210377234 A CN 201210377234A CN 102917036 A CN102917036 A CN 102917036A
- Authority
- CN
- China
- Prior art keywords
- memcached
- data
- client
- data synchronization
- cluster
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 13
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Memcached的分布式缓存数据同步实现方法,包括如下步骤:S10:部署Memcached服务端;S11:在应用上配置Memcached集群;S12:根据步骤S11所示配置创建统一的缓存管理器CacheManager,并提供相应的数据操作接口。本发明于客户端将部署在一台机器上的多个Memcached服务端或者部署在多个机器上的Memcached服务端组成一个虚拟的服务端,存取数据时只需调用相应的接口后台,提高了单机的内存利用率,也提供了向上扩容的方式,保证Memcached在部分失效以后,数据还能够使用,避免了当缓存不命中就去数据源获取的策略容易导致系统崩溃的风险。
Description
技术领域
本发明属于缓存数据服务技术领域,涉及一种基于Memcached的分布式缓存数据同步实现方法。
背景技术
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站更快的运行速度。但是,Memcached作为集中式缓存服务端,其本身是单实例的并没有分布式功能,各个Memcached不会互相通信以共享信息。虽然Memcached支持多实例分布在多台机器上,但仅仅只是解决了数据全部丢失的问题,当其中一台机器出错以后,还是会导致部分数据的丢失。
故,针对上述现有技术存在的缺陷,实有必要进行研究,提供一种方案,能够保证Memcached在部分失效以后,数据还能够依然使用。避免当缓存不命中就去数据源获取的策略在并发量较大的场景中很容易导致应用系统崩溃的风险。
发明内容
为解决上述问题,本发明的目的在于提供一种基于Memcached的分布式缓存数据同步实现方法,以保证Memcached在部分失效以后,数据还能够依然使用,避免了当缓存不命中就去数据源获取的策略在并发量较大的场景中很容易导致应用系统崩溃的风险。
为实现上述目的,本发明的技术方案为:
一种基于Memcached的分布式缓存数据同步实现方法,包括如下步骤:
S10:部署Memcached服务端;
S11:在应用上配置Memcached集群;
S12:根据步骤S11所示配置创建统一的缓存管理器CacheManager,并提供相应的数据操作接口。
进一步地,所述步骤S10包括有步骤:
S101:启动部署在一台服务器上的多个Memcached服务端或者部署在多个机器上的Memcached服务端。
进一步地,所述步骤S11包括有如下步骤:
S110:根据各个服务器IP地址、Memcached服务器监听端口号配置socket连接池;
S111:将配置的Memcached客户端组建为集群。
本发明基于Memcached的分布式缓存数据同步实现方法通过于客户端将部署在一台机器上的多个Memcached服务端或者部署在多个机器上的Memcached服务端组成一个虚拟的服务端,调用者存取数据时只需调用相应的接口后台,这样做既提高了单机的内存利用率,也提供了向上扩容的方式,能够保证Memcached在部分失效以后,数据还能够依然使用,避免了当缓存不命中就去数据源获取的策略在并发量较大的场景中很容易导致应用系统崩溃的风险。
附图说明
图1是本发明一实施例的架构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参照图1所示,本发明基于Memcached的分布式缓存数据同步实现方法通过在客户端将部署在一台机器上的多个Memcached服务端或者部署在多个机器上的Memcached服务端组成一个虚拟的服务端,调用者存取数据时只需调用相应的接口后台,对于调用者来说则是完全屏蔽和透明的。这样做既提高了单机的内存利用率,也提供了向上扩容的方式。在调用Memcached客户端向缓存服务器集群提交要缓存的数据时,可实现一份数据多处备份,能够保证Memcached在部分失效以后,数据还能够依然使用。避免了当缓存不命中就去数据源获取的策略在并发量较大的场景中很容易导致应用系统崩溃的风险。实现了缓存集群中各Memcached服务器之间数据的同步,其主要包括如下步骤:
S10:部署Memcached服务端;
S101:启动部署在一台服务器上的多个Memcached服务端或者部署在多个机器上的Memcached服务端;
S11:在应用上配置Memcached集群;
S110:根据各个服务器IP地址、Memcached服务器监听端口号配置socket连接池;实现函数如下:
<socketpool name="pool0">
<servers>192.168.1.2:11211</servers>
</socketpool>
<socketpool name="pool1">
<servers>192.168.1.2:11212</servers>
</socketpool>
<socketpool name="pool2">
<servers>192.168.1.3:11211</servers>
</socketpool>
S111:根据socket连接池配置相对应进行数据操作的Memcached客户端;实现函数如下所示:
<client name="mclient0" socketpool="pool0"></client>
<client name="mclient1" socketpool="pool1"></client>
<client name="mclient2" socketpool="pool2"></client>
S111:将配置的Memcached客户端组建为集群;一个统一的虚拟服务端函数如下所示:
<cluster name="cluster">
<memCachedClients>
mclient0,mclient1,mclient2
</memCachedClients>
</cluster>
S12:根据步骤S11所示配置创建统一的缓存管理器CacheManager,并提供相应的数据操作接口。
在客户端实现过程中根据存储的主键做分区存储,而这个区就是Memcached服务端的一个或者多个实例,以实现将部署在一台机器上的多个Memcached服务端或者部署在多个机器上的Memcached服务端组成一个虚拟的集群。
本发明创作应用时,首先启用本缓存机制的应用需要操作缓存中的数据,根据要进行的操作调用缓存管理器CacheManager相应的接口;然后CacheManager根据传入的需要操作数据的key,按照其数据分配算法获取配置在集群Cluster中的相应缓存客户端;当获得缓存客户端Cache Client以后,执行具体的Cache操作。其中,如果是读取操作,当不能命中时去集群其他缓存客户端获取数据,如果获取到数据,尝试写入到本次获得的缓存客户端,并返回结果(达到数据恢复的作用);如果是更新操作,在本次获取得的缓存客户端执行更新操作以后,立即返回,将更新集群其他缓存节点命令提交给客户端的异步更新线程对列去异步执行,如果是根据key来获取Cache,那么异步执行不会影响到此主键的查询操作。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种基于Memcached的分布式缓存数据同步实现方法,其特征在于,包括如下步骤:
S10:部署Memcached服务端;
S11:在应用上配置Memcached集群;
S12:根据步骤S11所示配置创建统一的缓存管理器CacheManager,并提供相应的数据操作接口。
2.如权利要求1所述基于Memcached的分布式缓存数据同步实现方法,其特征在于,所述步骤S10包括有步骤:
S101:启动部署在一台服务器上的多个Memcached服务端或者部署在多个机器上的Memcached服务端。
3.如权利要求2所述基于Memcached的分布式缓存数据同步实现方法,其特征在于,所述步骤S11包括有如下步骤:
S110:根据各个服务器IP地址、Memcached服务器监听端口号配置socket连接池;
S111:将配置的Memcached客户端组建为集群。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103772349A CN102917036A (zh) | 2012-10-08 | 2012-10-08 | 一种基于Memcached的分布式缓存数据同步实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103772349A CN102917036A (zh) | 2012-10-08 | 2012-10-08 | 一种基于Memcached的分布式缓存数据同步实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102917036A true CN102917036A (zh) | 2013-02-06 |
Family
ID=47615266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012103772349A Pending CN102917036A (zh) | 2012-10-08 | 2012-10-08 | 一种基于Memcached的分布式缓存数据同步实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102917036A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475690A (zh) * | 2013-06-17 | 2013-12-25 | 携程计算机技术(上海)有限公司 | Memcached节点配置方法及装置 |
CN105847352A (zh) * | 2016-03-22 | 2016-08-10 | 青岛海信传媒网络技术有限公司 | 基于分布式缓存系统的扩容方法、装置及分布式缓存系统 |
WO2016138657A1 (en) * | 2015-03-05 | 2016-09-09 | Intel Corporation | Techniques for storing or accessing key-value item |
WO2016141522A1 (en) * | 2015-03-09 | 2016-09-15 | Intel Corporation | Memcached systems having local caches |
CN110809013A (zh) * | 2018-08-06 | 2020-02-18 | 北京神州泰岳软件股份有限公司 | 一种监控数据采集方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102137165A (zh) * | 2011-04-22 | 2011-07-27 | 南京邮电大学 | 一种基于对等网络的阿瑞斯索引系统的实现方法 |
CN102148871A (zh) * | 2011-03-18 | 2011-08-10 | 浪潮(北京)电子信息产业有限公司 | 存储资源调度方法和装置 |
US20110252181A1 (en) * | 2010-04-12 | 2011-10-13 | Darryl Ouye | Flexible way of specifying storage attributes in a flash memory-based object store |
-
2012
- 2012-10-08 CN CN2012103772349A patent/CN102917036A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110252181A1 (en) * | 2010-04-12 | 2011-10-13 | Darryl Ouye | Flexible way of specifying storage attributes in a flash memory-based object store |
CN102148871A (zh) * | 2011-03-18 | 2011-08-10 | 浪潮(北京)电子信息产业有限公司 | 存储资源调度方法和装置 |
CN102137165A (zh) * | 2011-04-22 | 2011-07-27 | 南京邮电大学 | 一种基于对等网络的阿瑞斯索引系统的实现方法 |
Non-Patent Citations (2)
Title |
---|
曾海军等: "Memcached 在呼叫中心系统中的应用", 《软件》 * |
陈俊等: "分布式Memcached 在社交游戏中的应用研究", 《电脑知识与技术》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475690A (zh) * | 2013-06-17 | 2013-12-25 | 携程计算机技术(上海)有限公司 | Memcached节点配置方法及装置 |
CN103475690B (zh) * | 2013-06-17 | 2016-06-08 | 上海携程商务有限公司 | Memcached节点配置方法及装置 |
WO2016138657A1 (en) * | 2015-03-05 | 2016-09-09 | Intel Corporation | Techniques for storing or accessing key-value item |
US10581997B2 (en) | 2015-03-05 | 2020-03-03 | Intel Corporation | Techniques for storing or accessing a key-value item |
WO2016141522A1 (en) * | 2015-03-09 | 2016-09-15 | Intel Corporation | Memcached systems having local caches |
US10146702B2 (en) | 2015-03-09 | 2018-12-04 | Intel Corporation | Memcached systems having local caches |
CN105847352A (zh) * | 2016-03-22 | 2016-08-10 | 青岛海信传媒网络技术有限公司 | 基于分布式缓存系统的扩容方法、装置及分布式缓存系统 |
CN105847352B (zh) * | 2016-03-22 | 2019-09-17 | 聚好看科技股份有限公司 | 基于分布式缓存系统的扩容方法、装置及分布式缓存系统 |
CN110809013A (zh) * | 2018-08-06 | 2020-02-18 | 北京神州泰岳软件股份有限公司 | 一种监控数据采集方法、装置、电子设备及存储介质 |
CN110809013B (zh) * | 2018-08-06 | 2022-06-28 | 北京神州泰岳软件股份有限公司 | 一种监控数据采集方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103379159B (zh) | 一种分布式Web站点数据同步的方法 | |
CN102194009B (zh) | 一种数据库托管方法和一种数据库托管平台系统 | |
CN102917036A (zh) | 一种基于Memcached的分布式缓存数据同步实现方法 | |
CN102710763B (zh) | 一种分布式缓存池化、分片及故障转移的方法及系统 | |
CN104750740A (zh) | 数据更新的方法及装置 | |
CN105518631B (zh) | 内存管理方法、装置和系统、以及片上网络 | |
CN102103544A (zh) | 一种分布式缓存的实现方法及装置 | |
CN112506823B (zh) | 一种fpga数据读写方法、装置、设备及可读存储介质 | |
CN104731799A (zh) | 内存数据库管理装置 | |
CN104202423A (zh) | 一种通过软件架构扩展缓存的系统 | |
CN103778120B (zh) | 全局文件标识生成方法、生成装置及相应的分布式文件系统 | |
CN105630812A (zh) | 集群应用缓存刷新方法及装置 | |
US20170364442A1 (en) | Method for accessing data visitor directory in multi-core system and device | |
CN107241444A (zh) | 一种分布式缓存数据管理系统、方法及装置 | |
CN103257859A (zh) | 高性能缓存和nutz的aop技术在教育网站群的应用 | |
CN104281668A (zh) | 一种数据处理方法 | |
CN107003940A (zh) | 用于在非统一存储器架构中提供改进的延迟的系统和方法 | |
CN107451070B (zh) | 一种数据的处理方法和服务器 | |
US9547590B2 (en) | Managing memory | |
CN104808950A (zh) | 对嵌入式存储器元件的模式依赖性访问 | |
CN104702508A (zh) | 表项动态更新方法及系统 | |
CN104714923A (zh) | 一种实现设备共享的方法和装置 | |
CN103744626A (zh) | 一种基于内存替换进行数据写入的方法 | |
CN114610243B (zh) | 一种精简卷转换方法、系统、存储介质及设备 | |
CN105068896A (zh) | 基于raid备份的数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130206 |
|
WD01 | Invention patent application deemed withdrawn after publication |