Upload
nexusz99
View
31
Download
0
Embed Size (px)
Citation preview
Cache Cloud
DAEMON DESIGN
Event Driven(Java NIO)
Accept
Read
Read
Accept
Main Thread
WorkQueue
WorkerThread
Client
Response
FailQueue
FailureThread
CassandraMemcached
WorkerThreadWorkerThreadWorkerThread
FailureThreadFailureThread
FailureThread
Daemon Feature• Cache Cloud 데몬과 Memcached 데몬은 같은 서버내에 존재한다 .
• 클라이언트 Accept 와 Read 를 담당하는 Main Thread 는 하나만 존재한다 .
• 모든 요청은 일단 Work Queue 에 쌓인다 .
• Set 에 대한 요청은 WorkQueue 를 거쳐 바로 FailQueue 로 들어가 , Failure Thread 가 이를 처리한다 .
Request String
• {0}/{1}/{2}/{3}…• {0} : API number• {1} : keyspace• {2} : columnfamily• {3} : Api 별 부수적인 인자
Worker Thread
• Request String 에 대한 cache 가 있는 지 검사한 후 , 그 결과값을 즉시 반환해준다 .
• Worker Thread 의 갯수는 유동적으로 조절 가능
Failure Thread
• cache miss 가 발생한 데이터를 Cassandra 에서 가져와 저장하는 Thread
• Fail Queue 에 아무런 데이터가 없으면 Wait 상태로 들어감
• Fail Queue 에 데이터가 들어오는 순간 Fail Queue 에 있는 모든 데이터를 처리 .
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
데몬 확장방법• 서버의 특정파일에 서버주소 저장• 클라이언트 실행시 주소 얻어와 적용• Ex) nexusz99.i.ahems.co.kr/list.txt• < 파일 내용 >• Cats3.kaist.ac.kr• Cats4.kaist.ac.kr
API 별 WORK FLOW
cache_insert
Client Side Daemon Side
1
1
WorkQueue FailQueue
FailureThread
single get re
quest
single
get r
esponse
Set Data
Set Request
Set Request 를Single Get API 형태로 전환
23
4
5
6
Set Request
Cache_delete
Client Side Daemon Side
1
1
WorkQueue FailQueue
FailureThread
Delete request Delete Data
Delete Request 23
45
Delete Request
cache_get, etc – cache hit
Client Side Daemon Side
1Set Request
WorkQueue
WorkerThread
2
Get cache RequestReturn cache
34
5Return Cache
cache_get, etc – cache miss
Client Side Daemon Side
1Set Request
WorkQueue
WorkerThread
2
Get cacheRequest
Return null
34
5 Return Null
FailureThread
FailQueue
6
7
6
7
8
TEST ENVIRONMENT
Cache Cloud Daemon
Client
Hardware – Daemon, Cassandra
• CPU– Intel® Core™ i7 CPU 860 @ 2.80GHz– Core : 4– Threads : 8
• Memory– 8GB
Hardware – Client
• Ahems VirtualMachine (2EA)– CPU
• Intel(R) Xeon(R) CPU E5645 @ 2.40GHz• Core : 1
– Memory• 1GB
• Cloud03a.kaist.ac.kr– AMD Phenom(tm) II X6 1055T Processor– 6core, 2.8Ghz– Memory : 16GB
Test Information
• Cassandra– Version : 1.0.1
• Hector API– Version : 1.0.1
• Memcached– Version : 1.4.9
ADDITIONAL INFORMATION
Value Size
• Key 에 대해 저장되는 Value 사이즈를 의미• Value 는 integer array 로 구성되어 있다 .
• Ex) value size = 1KB– Integer array 1k 개를 생성
Hit 율• 전체 데이터 중 캐시 ( 혹은 저장 ) 화 시킬
데이터의 비율
• Cache Miss 가 날 경우 , Cassandra 에서 읽어들임 .
Key_cached
• 각 Column Family 마다 몇개의 key 를 캐싱할 것인지 설정
• Default : 20 만개
• Disabled row cached
TEST RESULT
실험 설정• Value Size : 1kb, 10kb, 100kb
• 데이터 갯수 : 2000 개
• Key cached : 200, 2000, 200000