设为首页 收藏本站
查看: 1190|回复: 0

[经验分享] 大数据量缓存应用--memcached+magent

[复制链接]

尚未签到

发表于 2015-11-18 15:01:24 | 显示全部楼层 |阅读模式
越来越感觉到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。文件同步读写。


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

  
         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-140808-1-1.html 上篇帖子: 通过memcached来实现对tomcat集群中Session的共享策略 下篇帖子: ruby元编程的首次尝试和 memcached的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表