2012-01-18 14 views
0

プラットフォーム: spymemcached-2.7.3.jar、64ビットのWindows 7 OSSpymemcachedハッシュアルゴリズム

我々は2台のMemBase値のサーバ(非クラスタ環境)を持っていると我々はspymemcached Javaクライアントを使用していますmemcacheからのデータの設定と取得私たちは2つのmembaseサーバー間で複製を使用していません。

次のコードを使用して、memcacheにデータを設定しています。 MemcachedClientのように見えるのは、まずserver1にデータを置く/取得しようとするときです。 server1が停止している場合、MemcachedClientはserver2からput/getします。 spymemcachedは、どのサーバからデータを設定/取得する必要があるかを決定するために、任意のハッシングアルゴリズムを使用しますか?どのように動作するかを説明する利用可能なドキュメンテーション?

コード

public class Main { 

    public static void main(String[] args) throws IOException, URISyntaxException { 

     MemcachedClient client; 

     URI server1 = new URI("http://192.168.100.111:8091/pools"); 
     URI server2 = new URI("http://127.0.0.1:8091/pools"); 
     ArrayList<URI> serverList = new ArrayList<URI>(); 
     serverList.add(server1); 
     serverList.add(server2); 
     client = new MemcachedClient(serverList, "default", ""); 

     client.set("spoon", 50, "Hello World!"); 
     client.shutdown(10, TimeUnit.SECONDS); 

     System.exit(0); 
    } 
} 

答えて

1

コンストラクタMemcachedClient(リスト、文字列、文字列)クラスタ全体についての情報を取得するために、リスト内の最初のURIに接続します。つまり、クラスタ内に10台のサーバがある場合、すべてのサーバに接続するために1つのIPアドレスを指定できます。 URIのリストが許可される理由は、クラスタ情報を取得しているサーバがダウンした場合、クラスタ内の別のサーバからクラスタ情報を取得しようとすることができるようにするためです。

この場合Spymemcachedで使用されるハッシュアルゴリズムは、クラスタ構成の開始時にMembaseによって決定されます。設定段階でSpymemcachedに送信されるjsonを調べると、ハッシュアルゴリズムがCRCであることがわかります。 CRCの詳細については、DefaultHashAlgorithmクラスを参照してください。

また、私はあなたがMembaseを使用している理由が不思議です。

関連する問題