Memcache基本上已经是开发的标配了,但是对于Memcache集群,很多线上部署仍然是很单薄的。几个常用的方式:
1,PHP内建支持Memcache::addServer,存取时将key进行Hash,在对应的服务器上进行操作。存在问题:1,不健壮;2,数据不安全;3,配置变更可能导致存取异常
2,引入代理:memcache-agent
鉴于存在以上问题,Memcache的开发团队开发了Membase,支持多台服务器集群,数据的切片和复制,有效的提高了服务稳定性和数据的安全性,并且支持数据的持久存储。代码的稳定性不够好,我曾经在部分线上业务上使用了Membase,后来因为几次莫名的存取操作缓慢,只能又撤销回到Memcache。
之后,Membase团队与CouchDB团队合并,推出二合一的产品:
首先,从安装讲起:
安装服务器:
下载对应版本的安装包
安装:
有可能提示:
wget
rpm
然后再安装couchbase就OK了。请留意安装完成后的提示信息:
从membase开始,就提倡采用web方式进行管理,这里是提示服务已经启动,可以通过8091端口访问。
另外一段信息,是关于端口。11211是memcache访问端口,8091是管理和操作端口,其他几个是用于管理和集群通讯的。
打开8091进行初始化设置:
初始化过程很人性化,第一步是选择物理存储位置,并且设定新创建还是加入到一个已有的集群中。
如果选择新创建,需要指定内存使用的数量。下一步中,还可以选择自动灌入一些测试数据,这样能直接体验一些view的效果。
再下一步,是创建缺省Bucket设置,这个很重要:
Bucket的意义,在于将数据进行分隔,比如:任何view就是基于一个bucket的,仅对bucket内的数据进行处理。一个server上可以有多个Bucket,每个Bucket的存储类型、内容占用、数据复制数量等,都需要分别指定。从这个意义上看,每个Bucket都相当于一个独立的实例。在集群状态下,我们需要对server进行集群设置,Bucket只侧重数据的保管。
创建Bucket,需要指明驱动类型:
关于复制集,可以设置:禁止复制集、复制集数量(如果设为2,数据将在两个节点上保存,任何一个节点损坏数据仍然存在),是否对索引也进行复制。Flush,是指是否支持清空全部数据的操作。
建议是使用Couchbase类型,设定好内存使用量,其他按默认。关于内存设定,尽量不要将Server上的内存全部分配出去,留一些空闲,对新建Bucket进行测试就很方便。当然,Bucket占用的内存数,在建立后也是可以动态调整的。
后面按照提示进行,设置完管理员密码,服务就可以使用了。在首页的管理界面,可以看到运行的概况:
在ServerNodes帧中,可以查看服务器集群情况;在View中,可以管理各个Bucket中的View,在DataBuckets中,对Buckets进行管理。比如调整内存占用:
只有一个服务器节点,replica是没有意义的,我们来搭建第二个服务器节点。安装过程类似,这里选择加入集群,填写IP和密码:
点击下一步,经过验证就可以加入集群了。集群中任何一台服务器,地位是对等的,用浏览器连接上去都可以进行管理。
可以看到,新加入的服务器处于
服务器的安装到这里就OK了。下一篇中讲介绍PHP扩展的安装和部分程序示例。