一、分布式部署设置:

memcached 虽然称为 “ 分布式 ” 缓存服务器,但服务器端并没有 “ 分布式 ” 功能。每个服务器都是完全独立和隔离的服务。 memcached 的分布式,则是完全由客户端程序库实现的。 这种分布式是 memcached 的最大特点。所以部署时以相同的方式在不同服务器上安装部署即可。

二、监控:


【资料图】

一个简单的命令行工具memcache-top

下载网址:
http://code.google.com/p/memcache-top/

下载之后放在/root/soft目录下

运行命令:

perl memcache-top-v0.6 –instances=ip:端口号,ip:端口号

两台服务器:

perl/root/soft/memcache-top-v0.6–instances=192.168.175.100:11211,192.168.175.100:11211

运行效果如下:

daemontools: 监视memcached进程并自动启动.

网址:
http://cr.yp.to/daemontools.html

通常情况下memcached运行得相当稳定,但也不排除因为一些不可预知的因素导致memcached进程死掉,而又不能及时的发现重启。架构上保证了即使有几台memcached故障 也不会影响服务,不过对于memcached进程死掉的服务器,只要重新启动memcached,就可以正常运行,所以采用了监视memcached进程并自动启动的方法。于是使用了daemontools。

这里不介绍daemontools的安装了。我使用了以下的run脚本来启动memcached。

#!/bin/sh

exec 2>&1

exec /usr/local/bin/memcached -d -u root -m 1024 -p 11211 -c 2048 -P /tmp/memcached.pid

三、测试

服务端:

两台服务器,各启动两个进程,分配200M内存

启动参数:

/usr/local/bin/memcached -d -m 200 -u root -p 11211

/usr/local/bin/memcached -d -m 200 -u root -p 11212

监控启动:

perl/root/soft/memcache-top-v0.6–instances=192.168.175.100:11211,192.168.175.100:11212,192.168.175.101:11211,192.168.175.101:11212

基于spymemcached测试

1、 打开监控

2、 往memcached插入10000条数据

MemcachedClient c=new MemcachedClient(

AddrUtil.getAddresses(

“192.168.175.100:11211 192.168.175.100:11212

192.168.175.101:11211 192.168.175.101:11212″));

for(int i=0;i<10000;i++){

c.set(“key_”+i, 3600, “value_”+i);

}

插入数据之后监控画面:

四个memcached服务都存在,读取监控也同上图。

取值代码:

MemcachedClient c=new MemcachedClient(

AddrUtil.getAddresses(

“192.168.175.100:11211 192.168.175.100:11212

192.168.175.101:11211 192.168.175.101:11212″));

for(int i=0;i<10000;i++){

String key = “key_”+i;

Object obj = c.get(key);

System.out.println(key+”=”+obj);

}

3、 重启服务101:11212,再读取这10000个值,监控结果如下

说明某台服务器的数据丢失之后不会影响其它服务器的数据和读取。

4、 去掉某台服务,再读取这10000个值,监控结果如下

去掉服务101:11212,获取监控如下:

增加一个新的服务,101:11213,获取监控如下:

可见,节点的变化会影响命中率。

关键词: