2012-01-18 3 views
0

플랫폼 : spymemcached-2.7.3.jar, 64 비트 Windows 7 OSSpymemcached 해싱 알고리즘

우리는 두 membase 서버 (비 클러스터 환경)를 가지고 우리는 spymemcached 자바 클라이언트를 사용하는 Memcache에서 데이터를 설정하고 가져 오는 것. 우리는 두 개의 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 개의 서버가있는 경우 하나의 IP 주소를 지정하여 모든 서버에 연결할 수 있습니다. URI 목록을 허용하는 이유는 클러스터 정보를 가져 오는 서버가 다운되면 클러스터의 다른 서버에서 클러스터 정보를 가져올 수 있기 때문입니다.

이 경우 Spymemcached에서 사용되는 해시 알고리즘은 클러스터 구성이 시작될 때 Membase에 의해 결정됩니다. 구성 단계에서 Spymemcached로 전송되는 json을 살펴보면 해시 알고리즘이 CRC임을 알 수 있습니다. CRC에 대한 자세한 내용은 DefaultHashAlgorithm 클래스를 참조하십시오.

또한 내가 왜 Membase를 사용했는지 궁금합니다.