Memcache---集群方案

Memcache—集群方案

magent

一、伪集群方案
最常见的做法:memcache安装后,在一台机器或多台机器上启动多个实例,客户端配置memcache节点的ip,port即可。
由客户端实现分布式缓存效果,其实是伪集群。
memcache节点之间不通信,无数据备份,负载均衡由客户端实现,存在单点故障。
客户端可设置故障恢复和故障转移机制。

二、简单集群方案
使用Magent代理组件搭建集群服务。
集群特性:
1)memcache节点宕机后,客户端能自动重连。
2)有数据备份,比如部署了memcache节点1、节点2和备份节点,当节点1宕机,set操作到节点1的时候,会失败(不会自动跳到另一个节点当中去),但备份memcache节点是会保留所有key,所有运用get命令还是能够得到正常结果的。

1、下载安装
1)下载地址:http://memagent.googlecode.com/files/magent-0.6.tar.gz,最新版本为0.6,目前演示用的是magent-0.5版本的。注意目前这个google的地址在国内是无法访问的,只能通过其他方式下载了,相信各位有办法的。也可以在以下地址找到:
http://download.csdn.net/detail/huangying2124/9386872

2)编译安装
1.tar -xzvf magent-0.5.tar.gz
2./sbin/ldconfig
3.sed -i “s#LIBS = -levent#LIBS = -levent -lm#g” Makefile
4.make
5.cp magent /usr/bin/magent
6.magent

执行第三步时,要注意最后的输出文件为Makefile。
执行第四步时,一般会遇到如下错误:
错误一:
这里写图片描述

问题原因:缺少SSIZE_MAX字义
解决方法:
修改ketama.h文件,在文件起始行加下以下代码:
#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif

保存文件,重新执行make命令即可

错误二:
这里写图片描述

这个错误是magent-0.6.tar.gz才有,0.5版本的没有。

问题原因:文件存放路径的问题
libm.a 默认在/usr/lib/x86…/lib64下
libevent.a 默认在/usr/lib/下
本人演示用的Linux操作系统是Centos-6.5,其他操作系统可能不同,请注意区分。

解决办法:
可用find命令查找,再将这两个文件拷贝到/usr/lib64目录下
find -name libm.a
find -name libevent.a

这里写图片描述

这里写图片描述

若libm.a提示找不到,则需要重新安装glibc-static组件:yum install glibc-static。

错误三:
安装过程中出现:/usr/lib64/libevent.a(event 0) : In function ‘gettime’错误字样

解决办法:
1、先备份Makefile文件:cp Makefile Makefile.bak
2、修改Makefile文件,找到CFLAGS = -Wall -g -O2 -I/usr/local/include $(M64),改为CFLAGS = -lrt -g -O2 -I/usr/local/include $(M64)即可。

make命令成功后,会在当前目录下产生magent文件,将该文件夹移到/usr/bin/目录下即可。

这里写图片描述

文件夹移到新的位置后,可以直接使用magent命令,如下图所示,表示安装成功:
这里写图片描述

这里写图片描述

2、Magent启动命令常用参数
-u:启动用户名
-n:连接数,默认为4096
-l:magent监听的IP地址
-p(小写):magent监听的端口号
-s:注册的memcache节点信息,格式为ip:port
-b:用于备份的memcache节点信息,格式为ip:port

示例命令 magent -u root -n 2048 -l 192.168.0.103 -p 12001 -s 192.168.0.103:11211 -s 192.168.0.103:11212 -b 192.168.0.103:11213

3、使用示例
1)先启动memcache节点
/usr/local/bin/memcached -d -m 128 -u root -l 192.168.0.103 -p 11211 -P /tmp/memcached11211.pid
/usr/local/bin/memcached -d -m 128 -u root -l 192.168.0.103 -p 11212 -P /tmp/memcached11212.pid
/usr/local/bin/memcached -d -m 128 -u root -l 192.168.0.103 -p 11213 -P /tmp/memcached11213.pid

共启动3个memcache节点,端口分别为11211,11212,11213

2)启动magent,代理memcache节点
magent -u root -n 2048 -l 192.168.0.103 -p 12001 -s 192.168.0.103:11211 -s 192.168.0.103:11212 -b 192.168.0.103:11213

如命令所示:
memcache 11211和11212两个节点为工作节点,11213节点将作为备份节点;
magent监听的端口为12001,ip为192.168.0.103。

注:为了演示方便,都在一台机器上启动实例,若实际需要为多台机器,将ip和端口更换即可。

4、基本使用方法
1)Telnet作为客户端,连接magent
还记得前一遍讲解的Telnet操作吗?magent的操作也一样适用。
演示的ip和port可以参照上面的演示示例。
telnet 192.168.0.103 12001
stats命令查看状态,如下图所示:
这里写图片描述

可以看到magent版本号,连接的memcache工作节点列表,用matrix1、matrix2表示。

2)get,set,version等命令跟memcache的操作是一致的
set操作时,按哈希算法写入两个工作节点(简单映射哈希算法),备份节点不受此哈希算法影响,所有的缓存对象都会到备份节点中存储。
get操作时,先按哈希算法查找,查找不到就到备份节点里查询,因为set时所有的缓存对象都会保存到备份节点上。
当某一memcache工作节点宕机时,set还是按原有的哈希算法做set操作,宕机的节点上无数据,但备份节点上有,get操作还是不受影响的(所以说备份节点很重要,一定要设置)。
当宕机的节点重新启动时,该节点已无数据。magent做get操作时,尽管备份节点上还有数据,但还是会返回空值。(这是一个很大的问题!)

code.google官方最新发布的版本为magent-0.6.tar.gz,也一样没有修复这个问题。

另外附上magent-0.5和magent-0.6的下载地址:
原版:
magent-0.5:http://download.csdn.net/detail/huangying2124/9386870
magent-0.6:http://download.csdn.net/detail/huangying2124/9386872

修正版(修正安装过程中出现SSIZE_MAX无法找到的问题)
magent-0.5:http://download.csdn.net/detail/huangying2124/9386875
magent-0.6:http://download.csdn.net/detail/huangying2124/9386878

Mcrouter

Mcrouter-基于Memcached协议的缓存层流量管理工具(Memcached集群的另一个选择)(转)
Mcrouter 是一个基于Memcached协议的路由器,它是 Facebook缓存架构的核心组件,在峰值的时候,它能够处理每秒50亿次的请求。近日,Facebook开放了Mcrouter的源代码,且遵从BSD协议,希望能够帮助更多的网站使用Mcrouter并扩大其系统规模。因为任何要接入Memcached服务的客户端都会使用标准ASCII编码的Memcached协议,所以对于客户端来说,Mcrouter就像一个Memcached服务器;而对于服务器端来说,Memcached却又像一个普通的Memcached客户端。采用Memcached的通用API作为通信方式如下图所示:

在这里插入图片描述

Mcrouter主要特性如下:

支持标准、开源的Memcached ASCII编码协议,使得支持Memcached协议的所有客户端无需做任何修改即可支持Mcrouter。
能够使得客户端共享连接池,达到减少连接个数的目的。
提供了一个非常有效的一致性哈希算法,允许给多个Memcached实例分配哈希值。
能够根据key前缀把客户端分配到不同的Memcached池中。
能够在多个主机上保存一份相同数据的备份。
在测试新缓存设备时,Mcrouter能够路做到从客户端到缓存设备的所有可能路径都可用的。
支持灵活的跟踪配置,通过重新哈希值范围跟踪测试不同大小的Memcached池,或只跟踪哈希值范围的一部分,或在运行时动态修改跟踪环境。
支持热加载配置文件,它会监控所有的配置文件,一旦检测到配置文件被修改,就启动一个后台线程自动地重新加载、分析这些文件,并根据新配置来处理新请求。
支持灵活的路由方式,路由句柄是由小路由模块组合而成,这些路由模块公用一个接口,也可以自由组合,单个路由句柄更容易理解、创建和测试。
支持目的主机的心跳检测和自动故障转移,能够检测每个目的主机的心跳。
允许以主机、池或者集群为单位设置任何请求的速率的阀值,同时也支持限制请求的速度以减缓请求的发送速度,以保障服务质量。
通过一个内核一个线程的方式充分利用了多核系统的优势,在处理异步处理网络事件时,使用了内部的轻量级线程即纤程。
具有丰富的stats和debug命令,并提供了安全可靠的删除操作。
能够通过简单的配置管理大的多集群,还能够根据slab的大小自动分割或重组数据块
能够通过广播操作把请求数据备份到多个Memcached池中或者集群里面。
支持本地和远程缓存两级缓存,自动填充新增缓存以消除新增缓存区造成的性能影响
采用JSON格式的配置,支持通过任意方式的路由处理,以适应各种路由需求。
更多Mcrouter相关信息,请登录其在GitHub上的站点查看,常用示例请参考这里。另外,Mcrouter由Facebook在去年的Data@Scale大会上提出,并于近日开源,即将成为Facebook 在新推出的TODO开源协作联盟当中开源的第一项技术。据Facebook方面介绍,Mcrouter 能够在Facebook遍布全世界的数据中心的服务器集群的缓存层中快速分配调用数据,它具有极强的适应性,峰值时可以达到每秒50亿次的请求。去年,Instagram 数据向Facebook平稳转移就是使用的该技术。

Mcrouter主要使用C++开发,且使用C开发了功能库部分,使用Ragel开发了协议解析部分,使用开源库Folly和Fbthrift处理异步网络。尽管Mcrouter已经开源,但是Facebook仍然一直寻求改进Mcrouter性能的方法(如修复Bug、添加新特性等),并作持续的更新和改进;还会在Github Wiki上维护Mcrouter的文档,同时还建立了一个Facebook讨论组,用来推动Mcrouter项目持续、健康的发展。

参考:

http://www.infoq.com/cn/news/2014/09/mcrouter-memcached(以上内容转自此篇文章)

http://www.oschina.net/translate/introducing-mcrouter-a-memcached-protocol-router-for-scaling-memcached-deployments

https://github.com/facebook/mcrouter/wiki(官方介绍)

https://github.com/facebook/mcrouter/wiki/mcrouter-installation(Ubuntu的安装参考)

链接: https://pan.baidu.com/s/1bMhuZs 密码: 8p8k(Mcrouter中文手册第二章)

分类: 分布式-[集群/方案/工具/设计], 服务器运维-[Linux/Mac/Ubuntu/CentOS/Windows]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MallBuilder是一款基于PHP MYSQL的多用户网上商城解决方案。利用MallBuilder可以快速建立一个功能强大的类似京东商城、天猫商城、1号店商城的网上商城,或企业、行业化、本地化和垂直化的多用户商城。MallBuilder是B2Bbuilder的姊妹篇。她除了延续B2Bbuilder的众多优点之外,还增填了许多新功能。使操作更加简单,功能更加完善,性能更加稳定的多用户商城建设系统。 MallBuilder为拓展企业销售渠道,突显电子商务商业价值,致力于推动电子商务技术的发展而不断努力。365天精心研发,真情回馈客户! MallBuilder优势: 专业、专注电子商务网站开发,正规化公司运营 政府及YBC创新基金扶持企业,信誉有保障 功能强大、安全高效、永久免费升级,无后顾之忧 完全知识产权产品,自主研发、升级、销售、服务 php mysql,开源发售,完善文档,便于二次开发 完善的售后服务体系,众多用户好评,保持零投拆记录 B2B,B2C,C2C,CMS,一站式深度整合,万能建站 超强垃圾信息过滤,内置远丰网盾智能垃圾信息处理 专业的开发团队,历时一年,精雕细琢,完美呈现 多语言支持,分离式语言包,可迅速实现其它语言版本 专业级搜索引擎化,快速提高网站排名及PR值 城市分站,自助建站,二级域名绑定,顶级域名绑定 模块化开发,不断加入实用的功能,自由安装 支持支付宝/财付通/PayPal等第三方支付平台 支持大规模应用,读写分离,集群架构,Memcache. 与ucenter,Discuz!等系统完美整合

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值