你是如何理解memcache服务的?_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、你是如何理解memcache服务的?meache是什么 memcache是的一个项目,最早是为 livejournal 服务的,目前全世界不少人用法这个缓存项目来构建自己大负载的网站,来分担数据库的压力。 它可以应对随意多个衔接,用法非堵塞的网络io。因为它的工作机制是在内存中开拓一块空间,然后建立一个hashtable,memcach自管理这些hashtable。 为什么会有memcache和memcached两种名称? 其实memcache是这个项目的名称,而memcached是它服务器端的主程序文件名。 memcache的用法 用法memcache的网站普通流量都是比较大的,为了缓解数据

2、库的压力,让memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够快速的举行存取。 那么普通的焦点就是集中在如何分担数据库压力和举行分布式,究竟单台memcache的内存容量的有限的。 a.分布式应用 memcache原来支持分布式,我们客户端稍加改造,更好的支持。我们的key可以适当举行有逻辑的封装,比如以user为主的网站来说,每个用户都有user id,那么可以根据固定的id来举行提取和存取,比如1开始的用户保存在第一台memcache服务器上,以2开始的用户的数据保存在其次胎mecache服务器上,存取数据都先根据user id来举行相应的转换和存取。 但是这个有缺点,就

3、是需要对user id举行推断,假如业务不全都,或者其他类型的应用,可能不是那么合适,那么可以按照自己的实际业务来举行考虑,或者去想更合适的办法。 b.削减数据库压力 这个算是比较重要的,全部的数据基本上都是保存在数据库当中的,每次常见的存取数据库,导致数据库性能极具下降,无法同时服务更多的用户,比如mysql,特殊常见的锁表,那么让memcache来分担数据库的压力吧。我们需要一种改动比较小,并且能够不会大规模转变前端的方式来举行转变目前的。 我考虑的一种容易办法: 后端的数据库操作模块,把全部的select操作提取出来(up/delete/insert不管),然后把对应的sql举行相应的h

4、ash算法计算得出一个hash数据key(比如md5或者sha),然后把这个key去memcache中查找数据,假如这个数据不存在,解释还没写入到缓存中,那么从数据库把数据提取出来,一个是数组类格式,然后把数据在到memcache中,key就是这个sql的hash值,然后相应的设置一个失效时光,比如一个小时,那么一个小时中的数据都是从缓存中提取的,有效削减数据库的压力。缺点是数据不实时,当数据做了修改以后,无法实时到前端显示,并且还有可能对内存占用比较大,究竟每次select出来的数据数量可能比较巨大,这个是需要考虑的因素。 memcache的平安 我们上面的memcache服务器端都是挺直通

5、过客户端衔接后挺直操作,没有任何的验证过程,这样假如服务器是挺直裸露在互联网上的话是比较危急,轻则数据泄露被其他无关人员查看,重则服务器被入侵,由于mecache是以root权限运行的,况且里面可能存在一些我们未知的bug或者是缓冲区溢出的状况,这些都是我们未知的,所以危急性是可以预见的。为了平安起见,我做两点建议,能够略微的防止黑客的入侵或者数据的泄露。 a.内网拜访 最好把两台服务器之间的拜访是内网形态的,普通是web服务器跟memcache服务器之间。普遍的服务器都是有两块网卡,一块指向互联网,一块指向内网,那么就让web服务器通过内网的网卡来拜访memcache服务器,我们memcac

6、he的服务器上启动的时候就监听内网的ip地址和端口,内网间的拜访能够有效阻挡其他非法的拜访。 memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -p /tmp/memcached.p memcache服务器端设置监听通过内网的192.168.0.200的ip的11211端口,占用1024mb内存,并且允许最大1024个并发衔接 b.设置防火墙 防火墙是容易有效的方式,假如却是两台服务器都是挂在网的,并且需要通过外网ip来拜访memcache的话,那么可以考虑用法防火墙或者代理程序来过滤非法拜访。 普通我们在linux下

7、可以用法iptables或者freebsd下的ipfw来指定一些规章防止一些非法的拜访,比如我们可以设置只允许我们的web服务器来拜访我们memcache服务器,同时阻挡其他的拜访。 iptables -f iptables -p input drop iptables -a input -p t -s 192.168.0.2 dport 11211 -j accept iptables -a input -p udp -s 192.168.0.2 dport 11211 -j accept 上面的iptables规章就是只允许192.168.0.2这台web服务器对memcache服务器的拜

8、访,能够有效的阻挡一些非法拜访,相应的也可以增强一些其他的规章来加强平安性,这个可以按照自己的需要来做。 memcache安装 rpm -ivh libevent-1.1a-3.2.1.i386.rpm rpm -ivh libevent-devel-1.1a-3.2.1.i386.rpm tar -zxvf memcached-1.2.8.tar.gz ./configure -prefix=/data/memcached/ -with-libevent=/usr make make install tar zxvf memcache-2.2.5.tgz /opt/bin/phpize (假

9、如无此用法查找) ./configure -memcache -with-php-config=/data/php5/bin/php-config -with-zlib-dir make make install /data/memcached/bin/memcached -d -m 100 -u root -p 11211 -p /tmp/memcached.pid 修改php配置文件,启用memcache模块 vi /data/php/lib/php.ini tension_dir = /data/apache2/moles extension= memcache.so -d选项是启动一个

10、守护进程, -m是分配给memcache用法的内存数量,单位是mb,我这里是10mb, -u是运行memcache的用户,我这里是root, -l是监听的服务器ip地址,假如有多个地址的话,我这里指定了服务器的ip地址192.168.0.200, -p是设置memcache监听的端口,我这里设置了12000,最好是1024以上的端口, -c选项是最大运行的并发衔接数,默认是1024,我这里设置了256,根据你服务器的负载量来设定, -p是设置保存memcache的pid文件,我这里是保存在 /tmp/memcached.pid 布式缓存系统memcached指导 体系结构相当简单理解。我建立了

11、一个 web 层,其中包括一些 apache 实例。下一层是应用程序本身。这一层通常运行于 apache tom 或其他开源应用服务器之上。再下面一层是配置 memcached 实例的地方 即应用服务器与数据库服务器之间。在用法这种配置时,需要采纳略微不同的方式来执行数据库的读取和写入操作。 读取 我执行读取操作的挨次是从 web 层猎取哀求(需要执行一次数据库查询)并检查之前在缓存中存储的查询结果。假如我找到所需的值,则返回它。假如未找到,则执行查询并将结果存储在缓存中,然后再将结果返回给 web 层。 写入 将数据写入到数据库中时,首先需要执行数据库写入操作,然后将之前缓存的任何受此写入操作影响的结果设定为无效。此过程有助于防

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论