一、分布式部署设置:
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,获取监控如下:
可见,节点的变化会影响命中率。
关键词: