memcache

memcache

memcache

Memcache官网:http://memcached.org/

   memcache本身没有像redis所具备的数据持久化功能,比如RDB和AOF都没有,但是可以通过做集群同步的方式,让各memcache服务器的数据进行同步,从而实现数据的一致性,即保证各memcache的数据是一样的,即使有任何一台memcache发生故障,只要集群种有一台memcache可用就不会出现数据丢失,当其他memcache重新加入到集群的时候可以自动从有数据的memcache当中自动获取数据并提供服务。

   Memcache借助了操作系统的libevent工具做高效的读写。libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥高性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。

   Memcache支持最大的内存存储对象为1M,超过1M的数据可以使用客户端压缩或拆分报包放到多个key中,比较大的数据在进行读取的时候需要消耗的时间比较长,memcache最适合保存用户的session实现session共享,Memcached存储数据时, Memcached会去申请1MB的内存, 把该块内存称为一个slab, 也称为一个page。

   memcached具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/

单机部署

yum安装与启动

通过yum 安装是相对简单的安装方式

# yum install memcached -y 

# vim /etc/sysconfig/memcached 
PORT="11211"            #监听端口 
USER="memcached"        #启动用户 
MAXCONN="1024"          #最大连接数 
CACHESIZE="1024"        #最大使用内存   
OPTIONS=""              #其他选项
编译安装
# yum install libevent libevent-devel –y 

# pwd /usr/local/src 

# tar xvf memcached-1.5.12.tar.gz 

# ./configure --prefix=/usr/local/memcache 

# make && make install

启动memcached

# /usr/local/memcache/bin/memcached -u memcached -p 11211 -m 2048 -c 65536 &

部署repcahed

   repcached是memcached的补丁,实现了不同memcached实例内存数据同步的功能,类似于实现了主从的功能,但是每个memcached都是可以写入的,即可以双向复制主从的都是可读可写的,所以也不是简单的主从结构,更像是多主互从的结构,通过repcachd可以解决memcached单机内存数据不能持久化的问题,因为可以实现memcached主从结构,项目地址:http://repcached.sourceforge.net/

# cd /usr/local/src/
# wget https://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz/download

# tar xf memcached-1.2.8-repcached-2.2.1.tar.gz

# cd memcached-1.2.8-repcached-2.2.1/

# yum install -y libevent-devel gcc

# ./configure --prefix=/usr/local/repcached --enable-replication

# make && make install 

出现如下报错:

更改配置文件:

# vim memcached.c 
55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
56 #ifndef IOV_MAX
57 #if defined(__FreeBSD__) || defined(__APPLE__)
58 # define IOV_MAX 1024
59 #endif
60 #endif

改为如下内容:
55 /* FreeBSD 4.x doesn't have IOV_MAX exposed. */
56 #ifndef IOV_MAX   
57 # define IOV_MAX 1024   
58 #endif

再次编译安装:

# ./configure --prefix=/usr/local/repcached --enable-replication

# make && make install 

验证安装完成且命令可用:

# /usr/local/repcached/bin/memcached -h

安装完成:直接将安装目录打包发送至192.168.38.37主机

[root@centos7-17 local]# pwd
/usr/local
local]# tar cfz repcached.tar.gz repcached/*
[root@centos7-17 local]# scp repcached.tar.gz 192.168.38.37:/usr/local/


注:192.168.38.37要运行/usr/local/repcached/bin/memcached -h命令需要依赖于libevent-devel
[root@centos7-37 local]# yum install -y libevent-devel

通过repcached安装的memcached命令启动memcache服务并实现memcache主备结构,其中-x为对方即主memcache的IP,-X为本地启动的用数据同步的端口:

启动服务:
# /usr/local/repcached/bin/memcached  -d -m 1024 -p 11211  -u root -c 1024 -x 192.168.38.37 -X 16000  
实现原理:

   在 master上可以通过-X指定replication port,在slave上通过-x/-X找到master并connect上去,事实上,如果同时指定了-x/-X,repcached一定会尝试连接,但如果连接失败,它就会用 -X参数来自己listen(成为master);如果master坏掉,slave侦测到连接断了,它会自动listen而成为master;而如果slave坏掉,master也会侦测到连接断,它就会重新listen等待新的 slave加入。

   从这方案的技术实现来看,其实它是一个单master单slave的方案,但它的master/slave都是可读写的,而且可以相互同步,所以从功能上看,也可以认为它是双机master-master方案。

repcached部署架构

基于magent的部署架构
  • 注:由于magent很久没有更新版本,centos7对现有版本支持有限,一般不采取此方式部署memcached。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值