发布于 2016-04-06 21:28:18
代理键是此功能的快速实现。我编写了当前的实现,但没有使用HashTwo/Hashninja/xkey,所以我不是实现之间差异的权威。Xkey在https://github.com/varnish/libvmod-xkey上作为vmod公开可用。
代理密钥是part服务的一个标准部分,但作为CDN,我们提供它作为我们托管平台的一部分。它并不是开源的,没有什么好的理由;有一些关于这样做的讨论,但是它不是一个很重要的优先事项(部分原因是我们的Varnish是2.1.4中的一个分支)。
单个密钥不允许超过1kb (因为为什么?)而整个密钥列表不允许超过16 key。我们在大约一年前应客户请求提高了对这些值的限制(以前是1kb )。只要键在这个空间内,键的数量就没有限制(虽然我意识到这会有效地绑定键空间)。限制长度的基本原理是,关键清除会导致一定数量的线性时间运算,而我们更喜欢保持有界。如果我们目前的限制有什么实际问题,我会感到惊讶的。
我要注意的是,xkey的长度和键数也是有限的,因为键也是通过头指定的,而头长度实际上是由为连接服务的线程的可用工作区所限制的。这个长度是可调的,如果您运行您自己的漆,这可能不是一个实际的限制,但它确实存在。
我在代码中注意到的另一个细微差别是,xkey vmod支持多个xkey头,而快速代理键则是从第一个匹配头中获取的。在用于实现该功能的数据结构方面存在一些差异(部分原因是我们运行了一个多租户清漆),但在其他方面功能似乎是相似的。
最后,我们(此时)在全球拥有数百个Varnish安装集群。我们的基础设施的一部分是通过我们的网络可靠地分发清除,并确保它们在全球范围内得到应用。如果您运行了一个Varnish节点集群,您可能需要做一些额外的工作来使跨多个节点的缓存失效(尽管对于一个小型集群来说,这不太可能是一个重大问题)。
发布于 2015-12-13 18:39:50
xkey和hashtwo (在一些营销材料中是hashninja)是相同的。
我认为快速提供的主要区别在于,xkey不对每个对象/URL的长度或键数增加任何限制。据我所知,这两种方法都很好。(全面披露:我在清华软件公司工作)
https://stackoverflow.com/questions/34247295
复制相似问题