Posts Tagged ‘메모리 캐시’

memcached : 분산 메모리 객체 캐싱 시스템

Tuesday, September 15th, 2009

실시간 웹 기술을 알아보던 중 트위터와 같은 대규모 서비스에서 사용한 캐시 시스템 중 많이 들어본 memcached를 알아보고 요점만 정리해봤다.

memcached는 분산 메모리 객체 캐싱 시스템으로 일반적으로 데이터베이스 부하를 메모리 캐시로 대신하여 웹서비스 속도를 대폭 향상하는데 사용되는 시스템이다.

내부 동작은 엄청 복잡하겠지만 동작 방식은 쉽게 설명되어 있었다.

  1. 여러대의 각 서버에서 메모리 크기를 지정하여 데몬을 실행
  2. 각 서버 메모리는 하나의 공용 캐시 메모리로 관리
  3. memcached 라이브러리를 통해 객체 읽기/쓰기

memcached 라이브러리는 거의 모든 언어에 지원한다.
http://code.google.com/p/memcached/wiki/Clients

RDBMS의 문제

  • RDBMS의 특성상 ACID 조건을 충족시키기 위해 읽기/쓰기 쓰레드 블럭처리를 하면서 오버헤드가 발생

메모리 캐시는 블럭과 같은 오베헤드가 없고, 해시 테이블을 사용하여 매우 빠른속도로 RDBMS의 한계를 극복하는 좋은 대안이 될 수 있다.

트위터는 여러단계의 캐시를 사용하는데 중요한건 모든 DB를 캐시하여 서비스한다고 한다. 전체 메모리 용량이 얼마나 될까?..

나도 이런 분산 시스템 기반의 대규모 서비스를 제공해보고 싶은 욕망이^^ 열심히 구상해봐야지.. Google AppEngine에서도 memcache를 지원하니 한번 해봐야겠다.