编辑
我已将问题移至顶部。我会留下问题的描述以获取搜索帮助和某人可能想要的任何背景信息。
如果您将 memcached 库与 kestrel 一起使用,如果您在集群中使用 2 台以上的服务器并利用可靠的读取功能(或任何其他功能),那么 memcached 哈希算法是否可能总是在错误的位置查找?您是否必须更改 memcached 库中的哈希算法?我错过了什么吗?有没有人有任何见解?
背景信息
Kestrel 用户夸口说,您可以使用任何 memcached 库连接到您的 kestrel 集群,以将项目弹出和推送到队列中。想了想,好像有点不对劲。Memcached 在没有服务器间通信的集群中工作,因为客户端根据组合散列算法确定密钥的存储位置或存储位置。
kestrel 文档讨论了 kestrel 如何“大部分公平”,因为客户端连接到随机 kestrel 节点以读取或写入队列。如果您使用 memcached 客户端,您的客户端将始终在同一位置查找队列,因为 memcached 的客户端使用一致的散列算法。显然,如果您只在集群中使用单个红隼服务器,那没关系,只有一个地方可以查看。即使您使用多个节点,也可能没问题,因为您访问的是静态队列名称,因此散列算法总是在同一个地方查找。
但是,通过修改您从客户端访问的队列名称(通过添加 /open 启动可靠读取并以 /close 结束)来与 kestrel 交互的额外功能公开。从理论上讲,这应该会导致客户端始终在错误的位置查找队列,并且永远不会检索队列对象,因为它们一致地写入单个节点,并且一致地从不同的节点读取。
谢谢!