大数据量缓存应用--memcached+magent

越来越感觉到DB力不从心,在面对千万级用户量的应用时,DB面对平凡的curd,特别是查询的时候,早已不堪重负!如何解决高并发下数据的查询效率,在应用中显的越来越重要,好了废话不多说,首先介绍下magent与memcached

 

一、 magent

magent是一款开源的Memcached代理服务器软件,其项目网址为:http://code.google.com/p/memagent/

 

1. 安装:

1.mkdir magent  
2.cd magent/  
3.wget http://memagent.googlecode.com/files/magent-0.5.tar.gz  
4.tar zxvf magent-0.5.tar.gz  
5./sbin/ldconfig  
6.sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile  
7.make  
8.cp magent /usr/bin/magent  
9.cd ../ 

 

2. magent  命令参数说明:
1.-h this message  
2.-u uid  
3.-g gid  
4.-p port, default is 11211. (0 to disable tcp support)  
5.-s ip:port, set memcached server ip and port  
6.-b ip:port, set backup memcached server ip and port  
7.-l ip, local bind ip address, default is 0.0.0.0 
8.-n number, set max connections, default is 4096 
9.-D do not go to background  
10.-k use ketama key allocation algorithm  
11.-f file, unix socket path to listen on. default is off  
12.-i number, max keep alive connections for one memcached server, default is 20 
13.-v verbose 

 

二、memcached   http://memcached.org/

1. 安装libevent

 

1.  tar zxvf libevent-1.4.13-stable.tar.gz

2.  cd libevent-1.4.13-stable

3.  ./configure  --prefix=/usr

4.  make

5.  make install

 

2. 安装memcached

 

1.  tar zxvf memcached-1.4.5.tar.gz

2.  cd memcached-1.4.5.tar.gz

3.  ./configure  --with-libevent=/usr

              configure 需要加 libevent的安装路径

1.  make

2.  make install

3.  安装完成后会把memcached放到 /usr/local/bin/memcached

启动: /usr/local/bin/memcached -d -m 512 -u root -p 11211 -c 10000  -M -f 1.1 -P /tmp/memcached.pid

三、配置memcached   magent,无图无真相,一图抵千言:


 

 

magent与memcached 是可以混搭的,不必死板的一个magent s-memcached s-memcached b-memcached

上图此模型已经能够很好的解决一个节点,一组服务器的缓存数据服务,但是如果在北方网通架设了一组服务器,同时在南方电信又架设了另外一组服务器,那么这两组相对独立的节点之间如何做到数据的同步与共享,基于magent与memcached的解决方案如下:

 

需要注意的是,两组magent的配置最好完全一致,比如:

北方的magent配置为:magent s-memcached1 s-memcached2 b-memcached3

那么南方的magent配置也为:magent s-memcached1 s-memcached2 b-memcached3 

其顺序都是一致的,因为magent在分配key到memcached上时只是简单的使用散列余数算法。

当然如果你够懒,那么你可以直接连接备份magent,因为所有的数据上面都有。

 

有个特别要注意的地方是:

1:其中一台Memcached死掉,从magent取数据,数据会从备份的Memcached取出,保证用户不受影响.

2:Memcached重启复活,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管备份Memcached还有数据。可采用定时维护服务器,恢复memcached。

3。如果Memcached死掉,备份机同时死掉,那么只能说明你够倒霉,此时此刻你或许能见到上帝。

 

四、java客户端

推荐使用:xmemcached

http://code.google.com/p/xmemcached/

 

五、缓存与DB的同步

比较保险的做法是:查询的时候从缓存中取,add、updae、delete的时候同时操作缓存与DB。

当然你也可以定时同步缓存与DB的数据,个人认为不同的业务应该有不同的选择!

我在实际的应用中是同时使用这两种方式,比如用户个人信息之类的内容,就用定时同步的方式。

 

六、搜索引擎+缓存+DB

这个主题比较大,可以分为:

1。文件结构的存储代替DB持久化存储。

2。缓存在搜索引擎中的使用--文本库与索引库的缓存实现。

3。使用搜索引擎进行统一的数据查询。

4。文件同步读写。

 

有点困了,下次继续这个主题...

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值