4. Daemon Feature
• Cache Cloud 데몬과 Memcached 데몬은 같은 서버내에 존재한다.
• 클라이언트 Accept와 Read 를 담당하는 Main Thread 는 하나만
존재한다.
• 모든 요청은 일단 Work Queue 에 쌓인다.
• Set 에 대한 요청은 WorkQueue를 거쳐 바로 FailQueue 로 들어가,
Failure Thread가 이를 처리한다.
6. Worker Thread
• Request String 에 대한 cache 가 있는 지
검사한 후, 그 결과값을 즉시 반환해준다.
• Worker Thread 의 갯수는 유동적으로 조절
가능
7. Failure Thread
• cache miss 가 발생한 데이터를 Cassandra
에서 가져와 저장하는 Thread
• Fail Queue 에 아무런 데이터가 없으면 Wait
상태로 들어감
• Fail Queue에 데이터가 들어오는 순간 Fail
Queue에 있는 모든 데이터를 처리.
8. Value Grouping
• Request String : 0/a/b/c/d
• value 를 220kb 기준으로 분할
0/a/b/c/d 0/a/b/c/d/0 0/a/b/c/d/1 0/a/b/c/d/2
9. 데몬 확장방법
• 서버의 특정파일에 서버주소 저장
• 클라이언트 실행시 주소 얻어와 적용
• Ex) nexusz99.i.ahems.co.kr/list.txt
• < 파일 내용 >
• Cats3.kaist.ac.kr
• Cats4.kaist.ac.kr
11. cache_insert
Client Side Daemon Side
1
1
WorkQueue FailQueue
Failure
Thread
Set Data
Set Request
Set Request 를
Single Get API
형태로 전환
2
3
4
5
6
Set Request
12. Cache_delete
Client Side Daemon Side
1
1
WorkQueue FailQueue
Failure
Thread
Delete Data
Delete Request 2
3
4
5
Delete Request
13. cache_get, etc – cache hit
Client Side Daemon Side
1
Set Request
WorkQueue
Worker
Thread
2
Get cache RequestReturn cache
34
5
Return Cache
14. cache_get, etc – cache miss
Client Side Daemon Side
1
Set Request
WorkQueue
Worker
Thread
2
Get cache
Request
Return null
34
5 Return Null
Failure
Thread
FailQueue
6
7
6
7
8