zoukankan      html  css  js  c++  java
  • 【读书笔记】 nginx + memcached 高速缓存

    原文地址: http://blogread.cn/it/article/4441 

    内容很简单了,就是利用nginx直接于memcache互动进行cache的命中查找,而不是跳到PHP的处理周期当中去,

    没什么好说的,摘录其中一句话:

    传统的缓存策略仍可能造成效率低下,因为传统上是通过PHP操作memcache的,要执行PHP代码,Nginx就必然要和 FastCGI通信,同时也要进入PHP的生命周期,因此SAPI、PHP Core和Zend Engine的一系列逻辑会被执行。更糟糕的是,fpm和PHP可能会阻塞,因此破坏了Nginx的非阻塞性。下图展示了在memcache命中时整个处 理过程。

    这里原文附图梦戳这里

    然后要达到高性能,就需要跳出这个PHP处理周期,而不必每次请求到达都要调用fastphp‘模块来处理,于是就有了:

    可以看到,即使memcache命中,还是要进入PHP的生命周期。我们知道,目前很多互联网应用都使用RESTful规范进行设计,在 RESTful应用下,普遍使用uri和查询参数作为缓存的key,因此一种更高效的缓存策略是Nginx直接访问memcache,并用$uri 和$args等Nginx内置变量设定缓存key规则,这样,当缓存命中时,Nginx可以跳过通过fastcgi和PHP通信的过程,直接从 memcache中获取数据并返回。memc-nginx和srcache-nginx正是利用这种策略提高了缓存的效率。下图是这种高效缓存策略的示意 图(当memcache命中时)。

    原文附图地址在这里 

    传统的缓存策略仍可能造成效率低下,因为传统上是通过PHP操作memcache的,要执行PHP代码,Nginx就必然要和 FastCGI通信,同时也要进入PHP的生命周期,因此SAPI、PHP Core和Zend Engine的一系列逻辑会被执行。更糟糕的是,fpm和PHP可能会阻塞,因此破坏了Nginx的非阻塞性。下图展示了在memcache命中时整个处 理过程。

  • 相关阅读:
    子类继承方法的重写
    操作系统的用户模式和内核模式
    Java中的CAS
    FaceBook SDK登录功能实现(Eclipse)
    eclipse集成ijkplayer项目
    android handler传递数据
    android发送短信
    hadoop中的job.setOutputKeyClass与job.setMapOutputKeyClass
    mysql对事务的支持
    使用jd-gui+javassist修改已编译好的class文件
  • 原文地址:https://www.cnblogs.com/superniaoren/p/3350346.html
Copyright © 2011-2022 走看看