Membase Cache Server

Toggle Space Navigation Tree
Space Map

vBucket 개념

  • 원본 문서 : http://dustin.github.com/2010/06/29/memcached-vbuckets.html
    servers = ['server1:11211', 'server2:11211', 'server3:11211']
    server_for_key(key) = servers[hash(key) % servers.length]
    
  • 서버의 부하를 분산하기 위한 hash 알고리즘은 위와 같은 방식으로 구현
  • 현재 데이터베이스의 부하를 분산하기 위한 방법으로도 많이 활용한다. 예를 들어 blogId, cafeId를 hash 코드로 만든 후 8대의 DB 중 한 곳에 데이터를 저장한다면 hash(blogId) % 8 결과로 나온 데이터베이스에 해당 blog 데이터를 저장하는 방식이다.
  • 이 같은 방식을 적용할 경우의 문제점은 다음과 같다.
    • Having some servers have greater capacity than others.
    • Having cache misses skyrocket when a server dies.
    • Brittle/confusing configuration (broken things can appear to work)
  • 이 같은 문제점을 해결하기 위한 방안으로 vBucket 개념이 등장함.
    • vBucket은 key를 활용한 hash와 접속할 서버가 직접 매핑되지 않도록 중간에서 가교 역할을 해주는 구조이다.
    • hash(key)와 vBucket이 연결되고 vBucket이 서버와 연결된다. 따라서 hash(key)가 연결되는 vBucket은 항상 동일하고 서버의 추가, 삭제 유무에 따라서 vBucket과 서버와의 연결 관계가 바뀌는 구조이다.

참고 문서

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.