Memcached集群
来源:互联网 发布:永宏官网plc编程软件 编辑:程序博客网 时间:2024/06/03 13:09
尽管Memcached是分布式缓存服务器,但服务端并没有提供分布式功能,各服务节点之间无法实现数据的复制和备份。下面介绍Memcached的两种集群方式
1.多个Memcached实例实现集群
由多个memcached实例组成的集群方式,可以在一定程度上缓解单点故障问题,如果一个节点出现故障,该故障节点上的数据会丢失,客户端会自动连接到其他节点,客户端从数据库读取数据并保存到新的memcached节点上。
该集群方式的缺点是:如果系统的并发量比较大,在出现节点故障后,有可能搞垮数据库。
JAVA连接多实例Memcached的代码如下:
package com.memecached;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;public class MemcachedClusters {private static MemCachedClient memCachedClient = new MemCachedClient();// 设置与缓存服务器的连接池static {// 服务器列表和其权重String[] servers = { "192.168.74.129:11211", "192.168.74.129:11212" };Integer[] weights = { 1,2 };// 获取socke连接池的实例对象SockIOPool pool = SockIOPool.getInstance();// 设置服务器信息pool.setServers(servers);pool.setWeights(weights);// 设置初始连接数、最小和最大连接数以及最大处理时间pool.setInitConn(5);pool.setMinConn(5);pool.setMaxConn(250);pool.setMaxIdle(1000 * 60 * 60 * 6);// 设置主线程的睡眠时间pool.setMaintSleep(30);// 设置TCP的参数,连接超时等pool.setNagle(false);pool.setSocketTO(3000);pool.setSocketConnectTO(0);// 初始化连接池pool.initialize();}public static void main(String[] args) {int totalCount = 100;for (int i = 0; i < totalCount; i++) {memCachedClient.set("username"+i, "张三");}System.out.println(memCachedClient.stats());}}
2.使用magent实现Memcached集群
下载magent
http://download.csdn.net/detail/zxlxiaoyi/6846659
安装magent
[root@zookeeper_slave_01 softwares]# tar zxvf magent-0.5.tar.gz -C /soft_install/magent-0.5/[root@zookeeper_slave_01 magent-0.5]# sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
ketama.h在开头加入
#ifndef SSIZE_MAX# define SSIZE_MAX 32767#endif
[root@zookeeper_slave_01 magent-0.5]# makegcc -Wall -O2 -g -c -o magent.o magent.cgcc -Wall -O2 -g -c -o ketama.o ketama.cgcc -Wall -O2 -g -o magent magent.o ketama.o -levent -lm –lm
启动memcached
[root@zookeeper_slave_01 bin]# ./memcached -p 11211 -d -u root -m 64 -c 1024 –vvv[root@zookeeper_slave_01 bin]# ./memcached -p 11212 -d -u root -m 512 -c 1024 –vvv
启动magent: 两master服务器形成的集群
[root@zookeeper_slave_01 magent-0.5]# ./magent -u root -n 51200 -l 192.168.74.129 -p 12000 -s 192.168.74.129:11211 -s 192.168.74.129:11212[root@zookeeper_slave_01 magent-0.5]# ps -ef|grep magentroot 2828 1 0 00:10 ? 00:00:00 ./magent -u root -n 51200 -l 192.168.74.129 -p 12000 -s 192.168.74.129:11211 -s 192.168.74.129:11212
查看magent的状态,并写入数据,telnet192.168.74.129 12000
statsmemcached agent v0.4matrix 1 -> 192.168.74.129:11211, pool size 0matrix 2 -> 192.168.74.129:11212, pool size 0ENDset key1 0 0 1aSTOREDset key2 0 0 1bSTOREDset key3 0 0 1cSTORED
查看11211 memcached,telnet 192.168.74.129 11211
查看11212 memcached,telnet192.168.74.129 11212
可以看到,在双master memcached服务器下,magent会将数据分散到各个master服务器.
关闭magent,以master/slave的方式启动magent
[root@zookeeper_slave_01 magent-0.5]# kill -9 2828[root@zookeeper_slave_01 magent-0.5]# ps -ef|grep magentroot 2997 2607 0 01:00 pts/0 00:00:00 grep magent[root@zookeeper_slave_01 magent-0.5]# ./magent -u root -n 51200 -l 192.168.74.129 -p 12000 -s 192.168.74.129:11211 -b 192.168.74.129:11212[root@zookeeper_slave_01 magent-0.5]# ps -ef|grep magentroot 2999 1 0 01:00 ? 00:00:00 ./magent -u root -n 51200 -l 192.168.74.129 -p 12000 -s 192.168.74.129:11211 -b 192.168.74.129:11212
查看magent的状态,并写入数据,telnet 192.168.74.129 12000
查看master,telnet192.168.74.129 11211
查看slave,telnet192.168.74.129 11212
可以看出,master memcached服务器11211上的数据同步到slave memcached服务器11212上.
关闭master memcached服务器11211
root 2783 1 0 00:02 ? 00:00:00 ./memcached -p 11211 -d -u root -m 64 -c 1024 -vvvroot 2999 1 0 01:00 ? 00:00:00 ./magent -u root -n 51200 -l 192.168.74.129 -p 12000 -s 192.168.74.129:11211 -b 192.168.74.129:11212root 3051 3041 0 01:19 pts/3 00:00:00 grep 11211[root@zookeeper_slave_01 ~]# kill -9 2783
再查看magent的状态,并添加数据
查看slave,telnet192.168.74.129 11212
可以看出,当master挂掉后,magent会启动slave作为master.
- memcached集群
- Memcached集群
- Memcached集群
- memcached+magent实现memcached集群
- memcached+magent实现memcached集群
- memcached+magent实现memcached集群
- memcached+magent实现memcached集群
- memcached+magent实现memcached集群
- memcached+magent实现memcached集群
- memcached+magent实现memcached集群
- memcached+magent实现memcached集群
- memcached+magent实现memcached集群
- memcached+magent实现memcached集群
- memcached+magent实现memcached集群
- magent做memcached集群
- Memcached集群代理
- memcached集群负载均衡
- php memcached缓存集群
- Android L中的RecyclerView 、CardView 、Palette的使用
- 在SVN服务器彻底删除文件
- Web_PHP_解决Apache/PHP无法启动的问题
- mybatis 二级缓存
- java虚拟机内存优化tomat内存配置
- Memcached集群
- WebSocket对象特性
- 安卓 显示在状态栏的ProgressBar 的实现
- 中国象棋编程的网站
- 对Oracle函数的整理 count substr
- 从 SVN 迁移到 Git
- 在centos 下安装配置基于gitosis 的git 服务
- [讨论][探索]优雅的并发执行代码.
- SpringMVC与Easyui(实现了JSON的展示)、FreeMarker的整合