2008-12-09 2 views
8

MemCached를 웹 응용 프로그램으로 사용하려고합니다. 개발 중이며 지난 며칠 동안 MemCached를 연구 한 후에 답변을 찾을 수없는 질문을 만났습니다.MemCached 서버를 함께 연결하는 방법은 무엇입니까?

어떻게 Memcached 서버를 함께 연결합니까? 또는 MemCached 서버간에 데이터를 어떻게 복제합니까?

추가적으로 :이 기능은 서버 또는 클라이언트에 의해 제어됩니까?

답변

5

나는 BeITMemcached을 사용했으며 MemcacheClient의 인스턴스를 만들고 사용하려는 서버를 문자열로 설정한다는 점에서.

그 시점에서 클라이언트 자체가 다른 항목을 넣을 수있는 서버를 결정합니다. 어느 아이템이 들어 있는지 알 수 없습니다.

체크 here to see how the servers handle failover.

가장 쉬운 방법은 다시 채우는 메커니즘입니다. 필자의 경우, 데이터베이스에서 나오는 memcache에 수백 개의 객체를 저장합니다.다시 전화를 걸어서 모두 다시 넣을 수 있습니다. 데이터베이스에 추가, 업데이트 또는 삭제할 때마다 memcache에 동일한 호출을 수행합니다.

7

여러 서버를 설정하면 클라이언트 라이브러리는 첫 번째 해시를 사용하여 각 키/데이터 쌍을 저장할 위치를 선택합니다. 이는 복제가없고 모든 클라이언트가 동일한 서버 세트를 사용해야 함을 의미합니다.

장점 :

  • 거의 제로 오버 헤드, 스토리지 및 대역폭이 선형 적으로 증가.
  • 서버 코드는 간단하고 신뢰할 수 있습니다.

단점 :

  • 서버의 설정의 변화 (하나가 다운 또는 새 하나를 추가) 갑자기 무효화 (거의) 전체 캐시.
  • 모든 클라이언트에서 동일한 알고리즘을 사용해야합니다.

고객의 코드를 제어 할 수 있다면 두 개의 서버에 각 키/데이터 쌍을 두 번 저장할 수 있습니다. 다른 클라이언트에서 읽을 때 동일한 장소를 검색하십시오. 당신이 등 그렇다면 재부팅 기계 대응할 수있는 캐시를 원하는 것처럼

+0

분명히 그게 유일한 방법은 아니겠습니까? –

+1

일관된 해싱은 다른 서버에 대한 해시에 의해 무효화 된 키의 수를 상당히 제한 할 수 있습니다. 이것은 또한 가지고있는 서버의 수에 달려 있습니다. –

1

그것은 ... 소리 케이스의 많은에서

는 RDMS 캐싱 충분히 빠른 (당신이 페이스 북을 작성하지 않는 가정). 키와 blob 열이있는 테이블을 작성하기 만하면됩니다. RDBS 서버에 충분한 RAM이 있으면 모든 데이터가 RAM에 저장되고 복구가 가능하도록 디스크에 저장됩니다.

메인 데이터베이스 서버와는 별도의 서버 일 수 있습니다.

더 멋진 RDMS를 사용하려는 경우 오래된 행을 삭제하는 "캐싱 된 데이터"를 만드는 데 사용되는 쿼리에 변경 알림을 설정할 수 있습니다 캐시에서.

누군가가 캐시에서 유효하지 않은 행을 삭제하기 위해 트리거를 설정할 수 있지만 매우 복잡 할 수 있습니다.

2

http://repcached.lab.klab.org/

또한, PHP PECL memcache에 클라이언트는 memcache.redundancy를 참조 여러 서버에 데이터를 복제 할 수 있습니다.

0

Memcached는 복제 속성을 제공하지 않습니다. 그렇게하려면 memcached 클라이언트 서버 목록에 서버를 추가 한 다음 해당 서버에 데이터가 저장되도록 DB를 누르십시오.

0

CouchBase을 심각하게 고려해야합니다. 그것은 memcached 프로토콜을 사용하여 거의 동일한 속도를 제공하고 찾고있는 자동 복제를 제공합니다. 또한 디스크에 저장되므로 캐시가 차갑지 않게됩니다.

+0

실습 경험이 있습니까? 나는 Couchbase로 많은 이상한 문제에 부딪쳤다. 부트 스트랩 (bootstrapping) 문제부터 크래시 (crash)에 이르기까지. 나는 그 이슈들을 에스컬레이션하려고 애썼다. 나는 당신의 경험이 더 좋았 으면 좋겠다. – Till

+0

나는 Membase에 대한 생산 경험이 있지만 Couchbase는 아닙니다. Couchbase는 이제 Membase + CouchDB입니다. –

+0

그래, 나는 Membase도 시도했다. 나는 Couchbase도 사용하지 않았다. – Till

관련 문제