cache cloud 최종

Post on 15-Aug-2015

31 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related