• Grace模式、Saint模式


    一、probe(后端探针)

      探测后端,确定他们是否健康,返回的状态用req.backend.healthy核对

    backend b1 {
         .host = "127.0.0.1";
         .port = "8080";
         .connect_timeout = 1s;
         .first_byte_timeout = 5s;
         .between_bytes_timeout = 2s;
         .max_connections=1000;
         .probe = {           .url = "/index.jsp"; //访问backend的路径,缺省是”/"
                                    .timeout = 0.3 s; //定义probe的过期时间
                                    .window = 8; //要检查后端服务器的次数
                                    .threshold = 3; //.window里面要有多少polls成功就认为后端是健康的
                                    .initial = 3; //当varnish启动的时候,要确保多少个probe正常
                                }
         
     }

    二、ACLs :访问控制列表

     acl purgeallow {
          "127.0.0.1";
     }
    
    
     sub vcl_recv {
        
                 .....
             if(req.request =="PURGE") {
                 if(!client.ip ~ purgeallow){
                         error 405 "not allowed";
                     }
                     return(lookup);
             }
                   ......
    
    }    

    三、Grace模式

    当几个客户端请求同一个页面的时候,varnish只发送一个请求到后端服务器,然后让那个其他几个请 求挂起等待返回结果,返回结果后,复制请求的结果发送给客户端。 如果您的服务每秒有数千万的点击率,那么这个队列是庞大的,没有用户喜欢等待服务器响应。为了解 决这个问题,可以指示varnish去保持缓存的对象超过他们的TTL(就是该过期的,先别删除),并且去提供旧 的内容给正在等待的请求。 为了提供旧的内容,首先我们必须有内容去提供。

    Grace模式解决了两个问题: 1:通过提供旧的内容,避免请求扎堆。 2:如果后端坏了,提供旧的内容。

    sub vcl_fetch { 
    
                 set beresp.grace = 30m;
    }
    
    sub vcl_recv {
     
             if (! req.backend.healthy) { 
                 set req.grace = 5m;
            } else { 
                set req.grace = 15s;
            }
    
    }
         

    四、Saint模式

    sub vcl_fetch {
      if (beresp.status == 500) {
          set beresp.saintmode = 10s;
          return(restart);
      } 
      set beresp.grace
    = 5m; }

    设置beresp.saintmode为10秒时,varnish会不请求该服务器10秒。或多或少可以算是一个黑名单。restart被执行时,如果我们有其他后端可以提供该内容,varnish会请求它们。当没有其他后端可用,varnish就会提供缓存中的旧内容。

  • 相关阅读:
    微软产品的安全漏洞
    C++中的访问级别
    不是每一滴牛奶都叫特伦苏
    友元关系
    友元关系
    C++中的访问级别
    基类和子类
    基类和子类
    《那些年啊,那些事——一个程序员的奋斗史》——63
    《那些年啊,那些事——一个程序员的奋斗史》——66
  • 原文地址:https://www.cnblogs.com/xiaoliangup/p/9211730.html
Copyright © 2020-2023  润新知