1

AWSのjava用elasticacheクライアントライブラリを使用して、elasticacheをmemcacheサービスとして使用しようとしています。

次のコードは、クラスターに接続するために機能します。

_client = new MemcachedClient(_serverList);

しかし、一貫性のあるハッシュを使用しようとすると、memcache クライアントの初期化に失敗します。

_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: サーバーの構成が null です localhost 2015-04-07 07:00:32.914 WARN net.spy.memcached.ConfigurationPoller: 連続するポーラーの数エラーは 7 です。最後に成功したポーリングからの分数は 0 です

また、telnet、spymecached ライブラリ、および標準の MemcacheClient コンストラクターを使用して、セキュリティ グループが寛容であることを確認しました。

4

2 に答える 2

3

AWS Client Library を使用するKetamaConnectionFactoryと、デフォルトで「動的」クライアント モードになり、構成エンドポイントから利用可能な memcached ノードのリストをポーリングしようとします。これが機能するに_serverListは、構成エンドポイントのみを含める必要があります。

エラー メッセージは、ホストが ElastiCache 拡張機能を認識しない「プレーンな」memcached ノードであることを示しています。これが目的の場合 (自動検出機能を使用するのではなく、自分でノードを指定する)、複数引数のKetamaConnectionFactoryコンストラクターを使用しClientMode.Staticて、最初の引数として渡す必要があります。

于 2015-10-14T14:51:08.387 に答える
1

AddrUtil.getAddresses() メソッドを使用する必要があります。

_client = new MemcachedClient(new KetamaConnectionFactory(), AddrUtil.getAddresses("configEndpoint:port"));

また

ConnectionFactoryBuilder connectionFactoryBuilder = new ConnectionFactoryBuilder(new KetamaConnectionFactory());
// set any other properties you want on the builder
ConnectionFactory connectionFactory = connectionFactoryBuilder.build();
_client = new MemcachedClient(connectionFactory, AddrUtil.getAddresses("configEndpoint:port"));
于 2015-04-07T16:06:21.523 に答える