`
annan211
  • 浏览: 462632 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

mysql分布式缓存与memcached

阅读更多

  请尊重知识,请尊重原创 更多资料参考请见  http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1
memcached 作为一个流行度不亚于MySQL的缓存工具,简单的协议,清晰的API接口,卓越的性能使其深受广大开发者的喜爱。
但是memcached通常仅仅被作为最简单的cache工具使用。在这里介绍如何把他做成更为高效理想的数据服务层。

首先先说明把memcached仅仅作为缓存工具的浪费与不好的地方。
memcached吧数据都存放在内存中,效率十分高效。如果把他和数据库系统距离拉得这么开的话简直是浪费。仅仅作为cache工具的话,从代码开发和维护的角度
来说会产生大量的编码工作和配置文件,对后期的维护开发不利。
    我们可以将memcached与我们的数据库整合成一个整体,或者作为数据库的一个缓冲。
一般来说,我们有两种方式将memcached和mysql数据库整合成一个整体对外提供数据服务。一种是直接利用memcached的内存容量作为MySQL的二级缓存,
提升MySQL的缓存大小,另一种是通过mysql的UDF来和memcached进行通信,维护和更新memcached中的数据,应用直接通过memcached来读取数据。
对于第一种方式,主要用于业务要求非常特殊,实在难以进行数据切分,而且有很难通过对应用程序进行改造利用上数据库之外的Cache 的场景。
当然,在正常情况下是肯定无法做到这一点的,之少目前必须借助外界的力量,开源项目Waffle Grid 就是我们需要借助的外部力量。

Waffle Grid 这个开源项目,利用MySQL 和Memcached双双开源的特性,结合Memcached 通信协议简单的特点,将Memcached 成功实现成为MySQL 主机的外部
“二级缓存”,目前仅支持用于Innodb 的Buffer Pool。Waffle Grid 的实现原理其实并不复杂,他所做的事情就是当Innodb 在本地的
Buffer Pool(我们姑且称其为Local Buffer Pool 吧)的时候,在从磁盘数据文件读取数据之前,先通过Memcached 的通信API 接口尝试从Memcached
中读取相应的缓存数据(我们称之为Remote Buffer 吧),只有在Remote Buffer 中也不存在需要的数据的时候,Innodb 才会访问磁盘文件来读取数据。
而且,只有处于Innodb Buffer pool 中的LRUList 中的数据会被发送到Remote Buffer Pool 中,而这些数据一旦被修改,就会Innodb
就会将之移入FLUSH List ,Waffle Grid 同时会将进入FLUSH List 的数据从RemoteBuffer Pool 中清除掉。所以可以说,Remote Buffer Pool 中永远不会存在Dirty Pages,
这也保证了当Remote Buffer Pool 出现故障的时候不会产生数据丢失的问题。








下面我们再来介绍一下Memcached 和MySQL 的另外一种整合方式,也就是通过MySQL所提供的UDF 功能,自行编写相应的程序来实现MySQL 与Memcached 的数据通信更新操
作。这种方式和Waffle Grid 不一样的是Memcached 中的数据并不完全由MySQL 来控制维护,而是由应用程序和MySQL 一起来维护数据。每次应用程序从Memcached
读取数据的时候,如果发现找不到自己需要的数据,则再转为从数据库中读取数据,然后将读取到的数据写入Memcached 中。而MySQL 则控制Memcached 中数据的失效清理工作,每次数据库
中有数据被更新或者被删除的时候,MySQL 则通过用户自行编写的UDF 来调用Memcached的API 来通知Memcached 某些数据已经失效并删除该数据。
  请尊重知识,请尊重原创 更多资料参考请见  http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1




 

  • 大小: 44.2 KB
  • 大小: 37.2 KB
分享到:
评论

相关推荐

    PHP分布式缓存memcached开发包

    作为PHP开发人员,我们一般能想到的方法有页面静态化处理、防盗链、CDN内容分发加速访问、mysql数据库优化建立索引、架设apache服务器集群()、还有就是现在流行的各种分布式缓存技术:如memcached/redis;...

    基于MySQL的分布式数据库实践

    通过上述分析,可以看出基于MySQL的分布式数据库实践涉及到了许多关键技术和实践策略,包括数据库分片、缓存应用、NoSQL数据库的引入以及多IDC部署等。这些技术的应用有助于解决大规模数据处理过程中的各种挑战,...

    JAVA+MYSQL+Memcached

    Memcached则是一种分布式内存缓存系统,用于提高Web应用的性能。它通过将经常访问的数据暂存到内存中,避免了频繁的数据库读写操作,从而显著提升了响应速度。Memcached尤其适合那些读取操作远多于写入操作的系统,...

    基于Springcloud+mysql的分布式架构网上商城设计与实现(源码+设计文档+部署说明+视频演示).zip

    资源名字:基于Springcloud+mysql的分布式架构网上商城设计与实现(源码+设计文档+部署说明+视频演示).zip 资源内容:项目全套源码+完整...分布式缓存:系统使用分布式缓存,如Redis、Memcached等,提高系统的访问速度

    canal 的 mysql 与 redis/memcached/mongodb 的 nosql 数据实时同步方案

    标题中的“canal”的MySQL与“redis/memcached/mongodb”的NoSQL数据实时同步方案,主要涉及了数据库间的数据迁移和实时同步技术。这个话题涵盖了多个关键知识点,包括: 1. **Canal**: Canal是阿里巴巴开源的一个...

    memcached_functions_mysql

    5. **集成Memcached与MySQL**:通过在PHP中编写函数,可以实现在处理数据时先从Memcached中查找,如果缓存中没有再查询MySQL,这样可以显著提升应用的响应时间。 6. **Memcached Functions**:这些特殊的功能可能...

    分布式Memcached在社交游戏中的应用研究.pdf

    在社交游戏中部署这种分布式缓存,不仅能够提升数据访问速度,还能在服务器出现故障时,快速实现数据的恢复和重建,保证了游戏的高可用性和稳定性。 综上所述,分布式Memcached技术为社交游戏服务器端的高负载问题...

    Memcached、Redis、MySQL存储层面试问题

    可以通过使用Memcached客户端来实现分布式集群,客户端可以自动发现和连接到Memcached服务器,从而实现分布式缓存。 3. Memcached服务特点及工作原理是什么? Memcached服务器可以在内存中存储数据,从而提高访问...

    distributeTemplate 可以进行所有mysql 分布式上的SQL语法进行 增删改查 现在为初始版本

    不仅限于传统的MySQL数据库,它还涵盖了NoSQL数据库如MongoDB,文件存储服务,以及消息队列系统如RabbitMQ,同时包括内存键值存储Redis和分布式缓存Memcached,甚至涉及大数据处理平台Hadoop。这意味着开发者可以...

    强大缓存memcached

    Memcached,作为一款广泛使用的开源分布式内存对象缓存系统,正是这种需求的理想解决方案。 Memcached的设计目标是减轻数据库负载,通过将频繁访问的数据存储在内存中,从而减少对磁盘存储(如数据库)的依赖。...

    《Apache, MySQL, memcached和Perl开发Web应用程序》[PDF]

    memcached是一款高性能的分布式内存对象缓存系统,常用于缓解数据库负载,提高Web应用的响应速度。在书中,读者将学习到如何安装和配置memcached,以及如何在Perl代码中集成memcached,实现数据的快速读取和存储。 ...

    JAVA_memcached面试专题.pdf

    Java Memcached面试专题主要涉及了分布式缓存系统Memcached的核心概念和优势,以及与MySQL查询缓存的对比。以下是对这些知识点的详细说明: 1. **Memcached的工作原理**: Memcached是一个分布式内存对象缓存系统...

    php mysql redis nginx memcached

    这个组合通常用于搭建一个高性能的Web环境,其中Nginx负责接收HTTP请求,通过FastCGI与PHP交互处理动态内容,MySQL存储数据,Redis和Memcached作为缓存层,提升整体性能。这样的架构在现代Web开发中非常常见,尤其...

    《APMServ 5.2.6》:一键快速搭建Apache+PHP+MySQL+Nginx+Memcached+ASP平台的绿色软件

    Memcached是一个分布式内存对象缓存系统,用于提高网站的响应速度。在APMServ中,如果启用Memcached,其默认端口为11211。 对于ASP平台的支持,APMServ集成了NetBox 2.8 Build 4128,这是一个HTTP服务器和ASP脚本...

    [Apache.MySQL.memcached.Perl开发高速开源网站

    Memcached是一种分布式内存对象缓存系统,用于加速动态Web应用程序的速度。它通过在内存中缓存数据和对象,避免了对数据库的频繁读写操作,从而极大地提高了数据访问速度。在构建高速开源网站时,memcached可以用来...

    MySQL中InnoDB的Memcached插件的使用教程

    总的来说,MySQL的InnoDB Memcached插件提供了一种有效的方式,将流行的Memcached缓存层与强大的MySQL数据库相结合,提升了数据访问的效率,同时也保留了MySQL的高级特性和数据一致性保证。对于那些希望利用...

Global site tag (gtag.js) - Google Analytics