Changes between Version 5 and Version 6 of WikiStart


Ignore:
Timestamp:
04/24/2012 02:59:47 PM (14 years ago)
Author:
oubin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WikiStart

    v5 v6  
    1717如果没有则留下痕迹,旁路缓存根据痕迹生成相应的缓存数据,并把相应数据存入相应的缓存中。架构图如下: 
    1818[[Image(http://rdtrac.pc.com.cn/2012bypasscache/attachment/wiki/WikiStart/%E6%97%81%E8%B7%AF%E7%BC%93%E5%AD%981.jpg)]] 
     19 
     20 
     21旁路缓存分为两种方式:方法一:应用程序查完数据后投递到相应地方,相应地方的程序就会把投递过来的信息进行缓存存取。 
     22 
     23方法二:旁路缓存生成缓存程序会从相应log中拿出相应记录,已相应访问方法生成相应缓存,然后再投递到相应地方,相应地方的程序就会把投递过来的信息进行缓存存取。 
     24 
     25MongoDB作用:存储相应缓存key和value的信息,为删缓存提供依据,可能你会问:旁路缓存的key不是根据uri中相应参数做组合生成的么? 
     26 
     27key组成的大部分信息可以在uri的参数中找到,但不排除有特例,因为当组成的key太长的时候,我们可能对这些长做一个md5然后再进行存储, 
     28 
     29这时候如果要删缓存的时候就是个问题了。Cache Manager System 缓存管理系统就是为应付这种情况而存在。这会产生一个问题,把大部分连点都缓存下来,那数据量是非常可观, 
     30 
     31例如:现在dlc2中使用的key是由dlid linkid 和useragent组成,那它一个连点可以有的最大缓存数为2^3*10*2^5*2,现在不使用useragent所以key的组合为dlid和linkid, 
     32 
     33那它一个连点可以有的最大缓存数为2^2*10*2^5*2。如何管理起这不能眼看为实(即从连点得出key)的缓存也是个要解决的问题。当然如果不存在奇怪的组合key,缓存管理系统是没存在的必要。 
     34 
     35Redis选择:Redis除了具有mc相应的一些功能外,它还存在硬缓存,就算是发生重启缓存还不至于丢失。 
     36 
     37用一些缓存保存时效性比较长的应用中,应该效果还不错,但需要经测试证实,在以往的测试中redis在我们的一些应用使用上并发连接不是很好--以后是在小图片缓存上进行测试过。 
     38 
     39所需的东西介绍:nginx-1.0.10.tar.gz lua-nginx-module memc-nginx-module nginx-eval-module echo-nginx-module ngx_devel_kit  lua-5.1.4.tar.gz lua-nginx-module  
     40 
     41调用lua进行在nginx编程,主要用户做逻辑,要求功能处理(例如:组建key,对key进行md5)总体概括为使nginx具有动态动能,与之前介绍的perl-nginx-module用法相当, 
     42 
     43但lua对使用者要求会低,更容易上手,另一方面资料会多很多,功能也会多一点。memc-nginx-module 这个是个nginx对mc处理的第三方模块(在nginx自我模块中还存在memcached模块, 
     44 
     45但它只具有读取功能),但memc第三方模块具有增删改功能,memc_cmds_allowed get set add delete flush_all; nginx-eval-module  可以将eval里面语句动作一个子程序来进行运行然后得到相 
     46 
     47应结果,大部分利用在proxy_passmemc_pass等;例如:我需要访问dl.pconline.com.cn然后以其body内容作为变量,就可以使用 
     48 
     49eval $result {proxy_pass http://dl.pconline.com.cn}ngx_devel_kit  配合lua进行开发者的相应功能。echo-nginx-module  
     50 
     51这样用来打印信息,使用这个模块可以在nginx中使用echo string 变量等进行信息的调试