memcached와 공유메모리 인터벌 동기화.
2015/05/27
이름은 걍 지은 것임. 물 먹다 떠올라서 기록해 둠.
원래 자바등으로 서비스 짤 때 비슷한 패턴으로는...
expired 타임이 짧은 memcached를 쓰고, memcached를 찔러서 데이터가 없으면 DB 다녀오는 흔한 구조.
배경.
- 속도! 속도만 중요하다!
- memcached에는 1분 마다 특정 메타 데이터가 인입되고 있음.
- 아차치 모듈이 prefork 모델로 수백개의 프로세스가 서비스를 서빙하고 있는 상황임.
- httpd 프로세스는 프로세스끼리 데이터를 공유하기 위해 공유메모리를 사용 중임.
- memcached의 메타 데이터는 공유메모리에 write 되어야 하며, httpd 프로세스가 이 데이터를 사용함.
- request 콜 바이 콜로 memcached를 찌르는 것은 비효율적인 것 같음.
패턴 = 그냥 공유메모리에 캐시 만든 것임.
- request가 들어오면 memcached를 찌르고 시간을 공유메모리에 기록함.
- memcached에서 가져온 메타 데이터는 공유메모리에 저장함. 프로세스들이 사용함.
- 다음 request가 들어오면 공유메모리의 최종 memcached 조회 시간과 비교, 1분이 지났으면 다시 콜, 안 지났으면 걍 공유메모리 사용.
장점
- memcached 다녀오는 횟수를 줄임.
단점
음슴.
소감
흔한 사용법인데 뭘 새로 만든 것 처럼 써놓냐.
[t:/] is not "technology - root". dawnsea, rss