gpt4 book ai didi

java - 如何在 java elasticache 库中使用一致性哈希?

转载 作者:行者123 更新时间:2023-11-30 03:29:02 25 4
gpt4 key购买 nike

我正在尝试将 Elasticache 作为 Memcache 服务与 AWS 的 java Elasticache 客户端库一起使用。

以下代码适用于连接到集群:

_client = new MemcachedClient(_serverList);

但是我尝试使用一致性哈希会导致内存缓存客户端无法初始化:

_client = new MemcachedClient(new KetamaConnectionFactory(), _serverList);

ConnectionFactoryBuilder connectionFactoryBuilder = new ConnectionFactoryBuilder();
connectionFactoryBuilder.setLocatorType(Locator.CONSISTENT);
connectionFactoryBuilder.setHashAlg(DefaultHashAlgorithm.KETAMA_HASH);
connectionFactoryBuilder.setClientMode(ClientMode.Dynamic);
ConnectionFactory connectionFactory = connectionFactoryBuilder.build();
_client = new MemcachedClient(connectionFactory, _serverList);

我尝试使用除普通 MemcacheClient 之外的任何内容都会导致如下错误:

2015-04-07 07:00:32.914 WARN net.spy.memcached.ConfigurationPoller: The configuration is null in the server localhost 2015-04-07 07:00:32.914 WARN net.spy.memcached.ConfigurationPoller: Number of consecutive poller errors is 7. Number of minutes since the last successful polling is 0

此外,我还使用 telnet、spymecached 库和普通 MemcacheClient 构造函数验证了安全组是宽松的。

最佳答案

使用 AWS 客户端库时 KetamaConnectionFactory 默认为“动态”客户端模式,该模式尝试从配置终端节点轮询可用 memcached 节点的列表。为此,您的 _serverList 应仅包含配置端点。

您的错误消息表明主机是一个“普通”memcached 节点,它不理解 ElastiCache 扩展。如果这是您打算做的(自己指定节点而不是使用自动发现功能),那么您需要使用多参数 KetamaConnectionFactory 构造函数并传入 ClientMode.Static 作为第一个参数。

关于java - 如何在 java elasticache 库中使用一致性哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29485767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com