小编Inu*_*huk的帖子

在Varnish 4重试期间更改后端

我希望能够在Varnish 4的重试中更改后端.我们已经使用Varnish 3在不同的(较旧的)应用程序上工作,但我无法弄清楚v4,也没有找到很多文档.我们想要的设置是拥有2组导向器 - 一个用于尝试与varnish在同一数据中心中的本地服务器的初始请求,因为这样更快,然后只有在失败的情况下,从其他导向器中随机选择其他导向器.数据中心.

在第3版中,这很简单:

sub vcl_recv {
    if (req.restarts == 0) {
        set req.backend = defaultdirector;
    } else {
        set req.backend = backupdirector;
    }
}

#Then in vcl_fetch and/or vcl_error something like:
if (beresp.status >= 500 && req.restarts < some_max) {
    return(restart);
}
Run Code Online (Sandbox Code Playgroud)

但是现在在v4中,重启已经被替换为重试,整个文档是:

在3.0中,可以在注意到后端响应错误后返回(重启),以更改为不同的后端.

现在称为return(重试),并跳转回vcl_backend_fetch.

这只影响后端获取线程,客户端处理不受影响.

然而,我仍然看到一些人的示例代码包含return(重新启动)而不是return(重试),而不是使用retry命令的单个示例.

我知道清漆不应该再次在vcl_recv中完成所有工作(例如剥离cookie),因为它只是与后端的通信失败了,所以反弹到后端获取而不是重做是有意义的所有前端处理,但如果我尝试更改vcl_backend_fetch中的后端,我会收到编译错误.我该如何工作?

varnish varnish-vcl

8
推荐指数
1
解决办法
3759
查看次数

Java使用集合中的键初始化映射

在 java 中,您可以根据现有集合的值初始化新地图的键集吗?

就像是:

Set<String> setOfStrings = getSetFromSomeOtherFuntion();

Map<String, Boolean> map = new Hashmap<>(setOfStrings);
Run Code Online (Sandbox Code Playgroud)

如果这是可能的,那么我会假设地图中每个条目的值都是 null,这是可以的,但如果可以设置默认值(例如,如果它是布尔值,则为 false)更好。

java

1
推荐指数
2
解决办法
240
查看次数

标签 统计

java ×1

varnish ×1

varnish-vcl ×1