`
annan211
  • 浏览: 445918 次
  • 性别: 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;...

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

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

    海量数据处理优化

    课程内容 •数据层架构 •数据同步方案 •图片存储架构和缓存 •分布式缓存Memcached •Mysql性能优化 •Oracel性能优化 •应用层架构

    Java主流分布式解决方案多场景设计与实战-全新课程资料

    Tomcat+Mysql+设计模式+并发编程+JVM+Netty开源框架(SSM框架):Spring+SpringMVC+Mybatis微服务架构:Dubbo、SpringBoot、SprinGCloud、Docker分布式:分布式限流+分布式缓存+分布式通讯(限流:Nignx+Zookeeper/...

    java面试题总汇(计算机基础、网络、存储、缓存、分布式、安全)

    3、缓存:Java本地缓存、Memcached、Redis、MongoDB; 4、消息:RabbitMQ、RocketMQ、Kafka等 5、存储:Minio/Fastdfs、 MySQL(MybatisPlus)、Oracle、DB2、SQL Server 6、测试:Jmeter、Loadrunner、JUnit、Mockjs ...

    分布式集群、PB级别网站性能优化

    memcached缓存安装配置 memcached缓存编程实战 mysql主从复制安装配置 mysql主从复制安装配置进阶 hadoop分布计算安装 hadoop分布计算配置 redis安装实战 redis使用进阶 redis实用命令实战 redis实战案例及总回顾

    Windows平台分布式架构实践

    最近.NET的世界开始闹腾了,微软官方终于加入到...第二个理由是在Linux系统下还有很多非常优秀的构架(当然同样也是免费的),分布式缓存Memcached,大数据处理构架Hadoop等等,这些都为一些大型的分布式系统提供了很好

    Memcached缓存系统-其他

    memcached是一套自由和开放源代码,高性能,分布式内存对象的缓存系统。它旨在通过减轻数据库负载来加速动态Web应用程序。 Memcached是一个内存中键值存储,用于存储来自数据库调用,API调用或页面渲染结果的任意小...

    memcached权威指南

    第三章 memcached 的内存管理与删除机制.................................................................................. 9 3.1:内存的碎片化.................................................................

    MySQL 通过索引优化含ORDER BY的语句

    4、当你的程序和数据库结构/SQL语句已经优化到无法优化的程度,而程序瓶颈并不能顺利解决,那就是应该考虑使用诸如memcached这样的分布式缓存系统的时候了。 5、习惯和强迫自己用EXPLAIN来分析你SQL语句的性能。 一...

    .NET的极速开发框架

    (4)模块缓存可配置,支持本地缓存、Memcached分布式缓存和Redis分布式缓存,可扩展其他缓存方式 (5)支持列表视图自定义,用户可定义多个视图(包括外侧树视图、树网格视图、分组视图),可定义关联模块视图,...

    Rookey.Frame企业级极速开发框架.zip

    (4)模块缓存可配置,支持本地缓存、Memcached分布式缓存和Redis分布式缓存,可扩展其他缓存方式 (5)支持列表视图自定义,用户可定义多个视图(包括外侧树视图、树网格视图、分组视图),可定义关联模块视图,...

    UPUPW PHP v5.2.17 经典怀旧版套装 c1.zip

    memcache/2.2.5 高性能的分布式的内存对象缓存系统客户端。 Zend Debugger/5.2.15 PHP程序调试器,跟踪、调试和分析PHP程序的运行状况。  UPUPW PHP探针 支持服务器信息检测,PHP组件检测,PHP已编译模块检测,...

    MySqlCdc:适用于.NET和.NET CoreMySQLMariaDB Binlog更改数据捕获(CDC)连接器

    MySqlCdc 适用于.NETMySQL / MariaDB Binlog更改数据捕获(CDC)连接... 将MySQL数据库复制到Memcached / Redis缓存。 将MySQL数据库复制到NoSQL / Elasticsearch。 派生数据系统。 警告事项 使用二进制日志事件流时

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    3.4 通过UDFs实现Memcached与MySQL的自动更新 3.4.1 UDFs使用简介 3.4.2 memcached_functions_mysql应用实例 3.4.3 对memcached_functions_mysql的简单功能进行测试 3.4.4 使用memcached_functions_mysql的...

    Java全能学习面试手册——Java架构师进阶资料面试资料.zip

    25 分布式缓存 Redis + Memcached 经典面试题!.pdf 26 搞定 HR 面试的 40 个必备问题!.pdf 27 精选7道Elastic Search面试题!.pdf 28 精选8道Dubbo面试题!.pdf 29 精选17道海量数量处理面试题!.pdf 30 史上最全...

Global site tag (gtag.js) - Google Analytics