LinuxService- Memcache缓存型中间件

1  概念

1.1 中间件

      中间件是位于平台(硬件、操作系统、网络与数据库)和应用之间的通用服务,不会像应用程序一样提供业务,上面有很多应用接口。当系统升级时,只需要将中间件升级,接口的标准不变,这样上层的应用就可以照常使用。

1.1.1 中间件有以下几个功能

1)由于中间件有很多不同类型的应用接口,所以不同的应用之间、不同的操作系统之间、以及不同的应用与不同操作系统可以通过中间件通信。即相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。

2)中间件可以为上层应用程序提供运行与开发的环境;

3)提供Java脚本的动态网页服务。用PHP脚本编写的动态网页,在被客户端访问时,客户端会访问到web服务器后直接访问数据库调用存储的数据;而用Java脚本编写的动态网页在被客户端访问时,客户端在访问到web服务器后还需要通过中间件才能访问数据库进而调用存储的数据。

注1:数据库是软件,类似于高级的文件系统,定义了共享存储的存储和访问的格式。

注2:HTML语法编写的网页属于静态网页,静态网页被客户端访问时,web服务器会直接从本地的 /var/www/html 下调用页面返回给客户而不需要访问数据库。

1.1.2 中间件的分类

web应用型中间件:如Tomcat(free)、weblogic(pay)

消息性中间件:如rabbit(free,是erlang语言编写的)、mq(IBM)(pay)

缓存型中间件:如memcached(PHP语言编写的)

业务型中间件:如WAS、tuxedo

      rabbit消息型中间件的工作原理——例如,Windows系统A想要传达消息给Linux系统B,那么A会采用断点续传的方式发送消息给rabbit的,类似于发短信,A发出消息给rabbit后不会理会到底能不能传到、什么时候能传到;如果B此时宕机不能立即收到消息,则等B恢复正常后还是能收到消息。

      缓存型中间件工作模型:client——VIP——若干node节点——缓存型中间件——数据库——共享存储。所以当客户访问VIP时,VIP会根据算法分配任务给某一个节点,那么该节点就会访问数据库调用存储的数据。而缓存型中间件有缓存功能,当访问过VIP的客户再次访问时,节点可以直接调用中间件缓存中的数据,这样就能减缓数据库的压力,并且能加快数据的调用速度。

1.1.3 中间件应具有如下一些特点

1)满足大量应用的需要 ;              

2)运行于多种硬件和OS平台;  

3)支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互;

4)支持标准的协议;                   

5)支持标准的接口。

2 实现memcache型中间件

2.1  memcache概念

1)Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

2)Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

3)Memcached 同时是一个开源的、高性能、具有分布式内存对象的缓存系统。它通过减轻数据库负载加速动态WEB应用。

4)缓存一般用来保存一些常用存取的对象或数据,通过缓存来存取对象或数据要比磁盘存取快。

5)Memcached是一种内存缓存,把经常需要存取的对象或数据缓存在内存中,内存中缓存的这些数据通过API的方式被存取,数据就像一张大的HASH表一样,以Key-value对的方式存在。

6)Memcached通过缓存经常被存取的对象或数据,来减轻数据库的压力,提高网站的响应速度,构建速度更快的可扩展的WEB应用。

2.1.1 memcached与数据库写流程

1)检查客户端请求的数据是否在Memcache中,如果存在,直接将请求的数据返回,不在对数据进行任何操作。

2)如果请求的数据不在Memcache中,就去数据库查询,把从数据库中获取的数据返回给客户端,同时把数据缓存一份Memcache中

3)每次更新数据库的同时更新Memcache中的数据库。确保数据信息一致性。

4)当分配给Memcache内存空间用完后,会使用LRU(least Recently Used,最近最少使用)策略加到其失效策略,失效的数据首先被替换掉,然后在替换掉最近未使用的数据。

2.1.2 memcached特征

1)协议简单:使用基于文本行的协议,能直接通过telnet在Memcached服务器上存取数据

2)基于libevent的事件处理:libevent利用C开发的程序库,它将BSD系统的kqueue,Linux系统的epoll等事件处理功能封装成为一个接口,确保即使服务器端的链接数增加也能发挥很好的性能。Memcached利用这个库进行异步事件处理

3)内置的内存管理方式:Memcached有一套自己管理内存的方式,这套方式非常高效,所有的数据都保存在Memcached内置的内存中,当存入的数据占满空间时,使用LRU算法自动删除不使用的缓存,即重用过期的内存空间。Memecached不考虑数据的容灾问题,一旦重启所有数据全部丢失。

4)互不通信的分布式:各个Memecached服务器之间互不通信,都是独立的存取数据,不共享任何信息。通过对客户端的设计,让Memcached具有分布式,能支持海量缓存和大规模应用。

2.2 配置memcached

1)配置memcached

 配置epel.repo源,略

# yum  --enablerepo=epel  install  memcached  libmemcached  -y

# yum  install  httpd  php  php-mbstring  php-pear  php-pecl-memcache  -y

# memcached  -d  -m  256  -u  root  -p  11211  -c  1024

 -P    /tmp/memcached.pid

//-d 指定守护进程;-m指定缓存大小;-u指定属主;-p指定端口号;-c指定最大连接数;-P指定文件位置/tmp目录下

# systemctl   restart   memcached

# telnet   127.0.0.1   11211  或者  telnet   本机名   11211

stats 查看状态  quit 退出Telnet   ;  Ctrl+】 返回telnet>   ;  ?  帮助

2)使其支持PHP脚本

# vim   /etc/php.d/z-memcached.ini ,写入:

   extension = " memcached.so "                   //添加一个扩展模块memcached.so

# echo  "<?php phpinfo()?>"  >  /var/www/html/index.php

# systemctl   resetart   httpd

3)使用真实机浏览器测试,能看到PHP测试页面有一个单独的memcached区域

http://memcached服务器的IP


转载请注明出处,谢谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼刺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值