magent实现memcached集群的一个问题

之前我们小组封装了一个memcached类库,里面有一个名为RemoveStartWith的方法可以根据起始字符串删除所有节点中负责键值规则的缓存项。它实现的原理就是通过stats命令获取每个节点的所有缓存键值然后逐一匹配。使用magent后这个方法就不起作用了,因为magent并不支持stats命令。查看了magent.c源代码:

} else if (ntokens >= 2 && (strcmp(tokens[COMMAND_TOKEN].value, "stats") == 0)) {
        /* END\r\n
         */
        char tmp[128];
        out_string(c, "memcached agent v" VERSION);
        for (i = 0; i < matrixcnt; i ++) {
            snprintf(tmp, 127, "matrix %d -> %s:%d, pool size %d",
                    i+1, matrixs[i].ip, matrixs[i].port, matrixs[i].used);
            out_string(c, tmp);
        }
        out_string(c, "END");
        skip = 1;
    }

要让magent支持stats命令需要作出一定的修改,主要包括在conn结构中的flag结构新增一个stats相关命令、修改发送请求的do_transcation函数实现、修改处理请求的process_get_response函数实现。

时间: 2024-08-06 07:56:57

magent实现memcached集群的一个问题的相关文章

Magent搭建Memcached集群

Magent搭建Memcached集群 Memcached集群介绍 由于Memcached服务器与服务器之间没有任何通讯,并且不进行任何数据复制备份,所以当任何服务器节点出现故障时,会出现单点故障,如果需要实现HA,则需要通过另外的方式来解决. 通过Magent缓存代理,防止单点现象,缓存代理也可以做备份,通过客户端连接到缓存代理服务器,缓存代理服务器连接缓存连接服务器,缓存代理服务器可以连接多台Memcached机器可以将每台Memcached机器进行数据同步.如果其中一台缓存服务器down机

Ubuntu 16.04通过Magent搭建Memcached集群(转)

一.下载Magent 官网:https://code.google.com/archive/p/memagent/downloads 离线版本:(链接: https://pan.baidu.com/s/1kU9DLI3 密码: k6qg) 二.编译安装 说明:magent由于是10年的产品,所以编译时一定会报错,但是先不要按照网上的修改来操作,应该先执行make,然后看错误来解决,因为每个系统的解决方式都不同,应该按照不同的系统来处理才是最优的解法. 前提:先安装Memcached,参考:htt

memcached+magent实现memcached集群

首先说明下memcached存在如下问题 本身没有内置分布式功能,无法实现使用多台Memcache服务器来存储不同的数据,最大程度的使用相同的资源:无法同步数据,容易造成单点故障.(memagent代理实现集群) 在 Memcached中可以保存的item数据量是没有限制的,只要内存足够 . Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程 最大30天的数据过期时间,设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA 6

Magent实现Memcached集群

Magent 是一款开源的 Memcached 代理服务器软件,使用它可以搭建高可用性的集群应用的 Memcached 服务 ,备份 Memcached 数据,尽管 Memcached 服务挂掉,前端也能获取到数据,客户端先连到 Magent 代理服务器 ,然后Magent 代理服务器 在可以连接多台 Memcached 服务器,然后可以进行数据的保存和备份数据.这样数据就不会丢失,保存了数据完整性. 安装Magent 1)下载安装 cd /usr/local mkdir magent wget

利用magent搭建memcached集群

memcached虽然能够通过分布式缓存,实现其中memcached宕掉不会丢失全部缓存数据,但部分数据还是难逃一劫. 我们可以利用magent代理memcached实现主从备份来保证缓存数据完好无损,而且magent还可以作为从继续使用,但大体工作原理如下: 1.magent每次写数据都会写到主memcached和从memcached上,并且向主从memcached写的算法一样: 2.当主memcached宕掉,magent会向从memcached中读取数据: 3.当主memcached恢复后

mamcached+magent构建memcached集群

cat /etc/redhat-release CentOS release 6.7 (Final) 防火墙.selinux 关闭 192.168.12.30 安装libevent和memcached.magent192.168.12.43 安装libevent和memcached.magent192.168.12.42 安装libevent和memcached软件下载地址:https://storage.googleapis.com/google-code-archive-downloads/

Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解

当网站访问量达到一定时,如何做Memcached集群,又如何高可用,是接下来要讨论的问题. 有这么一段文字来描述“Memcached集群” Memcached如何处理容错的? 不处理!:) 在memcached节点失效的情况下,集群没有必要做任何容错处理.如果发生了节点失效,应对的措施完全取决于用户.节点失效时,下面列出几种方案供您选择: * 忽略它! 在失效节点被恢复或替换之前,还有很多其他节点可以应对节点失效带来的影响. * 把失效的节点从节点列表中移除.做这个操作千万要小心!在默认情况下(

Memcached 集群架构与memcached-session-manager

Memcached 集群架构方面的问题_知识库_博客园https://kb.cnblogs.com/page/69074/ memcached-session-manager配置 - 学习中间件调优管理监控的专栏 - CSDN博客https://blog.csdn.net/big1980/article/details/8454333 memcached+magent实现memcached集群 - 快乐就好 - 博客园http://www.cnblogs.com/happyday56/p/346

Memcached 集群的高可用(HA)架构

Memcache自身并没有实现集群功能,如果想用Memcahce实现集群需要借助第三方软件或者自己设计编程实现,这里将采用memagent代理实现,memagent又名magent,大家注意下,不要将这二者当成两种工具.至于memcache.magent的安装请参考文章  在Linux上安装Memcached服务和 magent编译安装及常见错误 整体架构 直接上图: 从图中可以看到有两个magent节点,两个memcached节点,每个magent节点又分别代理两个memcached节点,应用