[t:/]$ 지식_

memcached와 공유메모리 인터벌 동기화.

2015/05/27

이름은 걍 지은 것임. 물 먹다 떠올라서 기록해 둠.

원래 자바등으로 서비스 짤 때 비슷한 패턴으로는...

expired 타임이 짧은 memcached를 쓰고, memcached를 찔러서 데이터가 없으면 DB 다녀오는 흔한 구조.

배경.

  1. 속도! 속도만 중요하다!
  2. memcached에는 1분 마다 특정 메타 데이터가 인입되고 있음.
  3. 아차치 모듈이 prefork 모델로 수백개의 프로세스가 서비스를 서빙하고 있는 상황임.
  4. httpd 프로세스는 프로세스끼리 데이터를 공유하기 위해 공유메모리를 사용 중임.
  5. memcached의 메타 데이터는 공유메모리에 write 되어야 하며, httpd 프로세스가 이 데이터를 사용함.
  6. request 콜 바이 콜로 memcached를 찌르는 것은 비효율적인 것 같음.

패턴 = 그냥 공유메모리에 캐시 만든 것임.

  1. request가 들어오면 memcached를 찌르고 시간을 공유메모리에 기록함.
  2. memcached에서 가져온 메타 데이터는 공유메모리에 저장함. 프로세스들이 사용함.
  3. 다음 request가 들어오면 공유메모리의 최종 memcached 조회 시간과 비교, 1분이 지났으면 다시 콜, 안 지났으면 걍 공유메모리 사용.

장점

  1. memcached 다녀오는 횟수를 줄임.

단점

음슴.

소감

흔한 사용법인데 뭘 새로 만든 것 처럼 써놓냐.









[t:/] is not "technology - root". dawnsea, rss