Memcache的分布式应用

 原贴:http://www.ooso.net/archives/263

Memcache的分布式应用

早就听说memcached是一个不错的分布式内存缓存系统,做了些功课想把这memcache用到实际当中来.因为一个好的缓存系统,能给web应用带来不小的性能提升.做了一些功课之后,做了下面几点总结:

  • memcache适合与web server安装在同一server上
  • memcache可以在n个端口开n个进程,如果和web server在同一机器的话,还能减少网络开销.
  • 配置简单,启动一个进程就行了,免去了配置文件

我更关心的是,memcache的分布式应用应该如何部署.带着这个问题,我在各搜索引擎上做了进一步的功课.最初找到的办法是,首先启动n个memcache进程,这些进程可以在不同的server的不同端口上.

然后使用perl的api可以方便的一次链接多个memcache,存储读取机制不明.不久找到php的 一个MemcachedClient类,基本上就是perl里api的再实现.它使用的fscokopen或者socket系列function来直接读 取memcache----这说明只要清楚memcache的网络协议,你甚至不用装什么php的memcache extenstion.看了这个类的实现,基本上弄清楚,它的分布式应用差不多就是将不同的key保存在不同的memcache daemon,不会保留多个副本,也就不存在多memcache同步的问题了.

过了不久俺又有发现,在最新的php手册上找到了memcache::addServer()这方法,它就是为分布式应用而产生的,有了这个支持的话,php的代码就更简单:

PLAIN TEXT
PHP:
  1. <?php
  2.     $memcache_obj = new Memcache;
  3.     $memcache_obj-> addServer ( 'memcache_host', 11211 );
  4.     $memcache_obj-> addServer ( 'failed_host', 11211 );
  5.    
  6.     $stats = $memcache_obj-> getExtendedStats ( );
  7.     print_r ( $stats );
  8. ?>

看来php手册也要与时俱进啊,最好是能够直接使用英文版,否则也不会走这么多弯路了:)

官方站点

http://www.danga.com/memcached/

作者: Volcano 发表于October 27, 2006 at 7:52 am

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原始出处和作者信息及此声明

永久链接 - http://www.ooso.net/archives/263

Tags: memcache,PHP

6 条评论 »

  1. nightsailer 于 2006-10-29 @ 01:17:12 留言 :

     

    PECL版本的Memcache extension并没有MCache快多少,另外在负载均衡和灾难恢复上都差很多。可惜,Mache站点已经down了。估计作者离职了吧。

  2. volcano 于 2006-10-29 @ 10:29:03 留言 :

     

    还没有仔细看过MCache,不知道它的性能方面的数据如何.
    另外我的同事在应用memcache之后对它的稳定性很满意,负载均衡方面有待加强,但是目前而言已经是能够接受,毕竟是内存缓存,重启之后就会没有

  3. 00 于 2008-04-13 @ 10:42:44 留言 :

     

    ”memcache适合与web server安装在同一server上“

    分布史被你搞没拉

  4. volcano 于 2008-04-15 @ 20:46:35 留言 :

     

    分布式怎么就没了

  5. Alex 于 2008-07-28 @ 11:01:20 留言 :

     

    # memcache适合与web server安装在同一server上
    # memcache可以在n个端口开n个进程,如果和web server在同一机器的话,还能减少网络开销.

    哈哈,兄弟啊,要搞清楚为什么弄缓存,而且要搞清楚为什么要搞分布式?
    如果你所有东西都跑在一台机器上搞定的话,要么说明你的应用压力很小,要么说明你的这台机器很牛。

    那么请问你还搞什么缓存,还搞什么分布式? 那不是脱裤子放P啊?

    另外,在内网,现在的网络速度不一定比硬盘的速度慢多少!

  6. Volcano 于 2008-07-28 @ 13:35:29 留言 :

     

    应用大了,web server难道只有一台么?讨论问题喜欢用粗话,能让你更有气势一些?

 

你可能感兴趣的:(PHP,Web,负载均衡,server,缓存系统,分布式应用)