2011-10-08 2 views
3

MemCached 설명서에 데이터가 노드를 통해 분산되어 있다고 언급되어 있습니다. 이것이 분산 캐시의 정의입니다. 노드 A가 노드 B에있는 데이터를 필요로하면 데이터가 B에서 A로 전송됩니다. A가 손상되면 A에 저장된 모든 데이터를 더 이상 B에서 사용할 수 없습니다.EhCache는 MemCached와 같은 모든 노드의 메모리를 활용합니까?

그러나 EhCache의 정의는 distributed caching입니다. 기본적으로 분산 캐시보다 공유 메모리에 가깝습니다. 노드 A가 일부 데이터를 수정하면 노드 B는 해당 수정 사항을 보게됩니다. 나는 A, B, C 각각은 1기가바이트 3 개 노드가있는 경우

  1. , • 충돌하는 경우, 공유 메모리에 저장된 데이터 A가 노드 B로 계속 사용할 수

    이 두 가지 질문에 날 리드 MemCached는 메모리를 추가하여 노드에 총 3GB의 메모리처럼 보이게합니다. 그러나 EhCache는 3GB를 추가하지 않고 오히려 각 노드 사이에 최대 1GB의 공유 메모리를 허용합니다. 이 올바른지?

  2. 대답이 '예'인 경우 EhCache와 MemCached가 경쟁보다는 실제로 보완적인 것으로 결론 지을 수 있습니까?

답변

1

나는 몇 가지 exper 둘 다있다.

두 질문 모두에 '예'라고 대답하고 싶습니다.

나는 최대 절전 모드와 함께 ehcache를 사용 해왔다. 중앙 데이터베이스에있는 데이터를 클러스터의 여러 서버 노드에있는 메모리에 캐시합니다. 물론 이유는 데이터베이스 액세스가 적습니다. 캐시 된 값이 한 노드에 의해 쓰여지는 경우이 값은 다른 노드에서 무효화되어 데이터베이스에서 값을 다시 읽고 강제로 다시 캐시해야합니다.

Memcached 데이터 소스로 사용했습니다. 이것은 간단한 키 = 값 데이터베이스입니다.모든 서비스 노드에서 사용할 수있는 memcached 노드의 목록을 정의합니다. 그러면 어떤 노드에 쓸 것입니다 (라운드 로빈에 의해 추측됩니다). 키에는 값이 저장된 memcached 노드에 대한 정보가 있습니다.

memcached는 종종 분산 된 데이터베이스 (관계형이 아닌 데이터베이스이지만)이지만 ehcache는 전통적인 캐시입니다.

4

나는 Memcache에 대한 전문가가 아니기 때문에 Ehcache가하는 일에 대해서도 말하고 있습니다.

Ehcache는 "계층화 된 캐시"입니다. 모든 계층에서 확장 및 확장 할 수 있습니다. Ehcache의 서버 노드가 3 개인 경우 (실제로 서버 계층은 TSA, Terracotta Server Array) 각 서버 노드는 고유 한 데이터를 가지므로 디스크에 스왑 될 수있는 데이터는 포함되지 않습니다. TSA는 HA 및/또는 능동 수동 장애 조치에 디스크 지속성을 사용하도록 구성 할 수 있습니다. BigMemory를 연결하면 GC 문제에 대한 두려움없이 이러한 계층을 수백 개의 RAM으로 확장 할 수 있습니다.

왜 계층화 된 캐시가 멋진가요? 클라이언트의 메모리를 사용하는 방법입니다. 원격 힙 (heap) 및 힙 (heap) 로컬 티어 또는 원격 티어 (milliseconds)에서 수백 마이크로 기가 바이트의 일관된 데이터를 처리 할 수 ​​있습니다. 그리고 모든 데이터는 HA가 될 수 있습니다.

현재이 물건의 일부에 대한 자세한 내용을보실 수 있습니다 : 여기

http://scaleaholic.blogspot.com/2010/09/little-bit-about-bigmemory-for-ehcache.html

과 :

http://scaleaholic.blogspot.com/2011/08/what-is-terracotta.html

물론 : ehcache.org 및 terracotta.org

+0

TSA 노드에 1GB가 있으면 EhCache 노드가 여전히 1GB의 자체 데이터를 보유 할 수 있으며 TSA 노드는이 데이터의 메모리에 1GB를 유지하고 디스크에 나머지 2GB를 쏟아 붓는다는 말입니까? (어느 정도)? – JVerstry

관련 문제