cache cloud 최종

27
Cache Cloud

Upload: nexusz99

Post on 15-Aug-2015

31 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Cache cloud 최종

Cache Cloud

Page 2: Cache cloud 최종

DAEMON DESIGN

Page 3: Cache cloud 최종

Event Driven(Java NIO)

Accept

Read

Read

Accept

Main Thread

WorkQueue

WorkerThread

Client

Response

FailQueue

FailureThread

CassandraMemcached

WorkerThreadWorkerThreadWorkerThread

FailureThreadFailureThread

FailureThread

Page 4: Cache cloud 최종

Daemon Feature• Cache Cloud 데몬과 Memcached 데몬은 같은 서버내에 존재한다 .

• 클라이언트 Accept 와 Read 를 담당하는 Main Thread 는 하나만 존재한다 .

• 모든 요청은 일단 Work Queue 에 쌓인다 .

• Set 에 대한 요청은 WorkQueue 를 거쳐 바로 FailQueue 로 들어가 , Failure Thread 가 이를 처리한다 .

Page 5: Cache cloud 최종

Request String

• {0}/{1}/{2}/{3}…• {0} : API number• {1} : keyspace• {2} : columnfamily• {3} : Api 별 부수적인 인자

Page 6: Cache cloud 최종

Worker Thread

• Request String 에 대한 cache 가 있는 지 검사한 후 , 그 결과값을 즉시 반환해준다 .

• Worker Thread 의 갯수는 유동적으로 조절 가능

Page 7: Cache cloud 최종

Failure Thread

• cache miss 가 발생한 데이터를 Cassandra 에서 가져와 저장하는 Thread

• Fail Queue 에 아무런 데이터가 없으면 Wait 상태로 들어감

• Fail Queue 에 데이터가 들어오는 순간 Fail Queue 에 있는 모든 데이터를 처리 .

Page 8: Cache cloud 최종

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

Page 9: Cache cloud 최종

데몬 확장방법• 서버의 특정파일에 서버주소 저장• 클라이언트 실행시 주소 얻어와 적용• Ex) nexusz99.i.ahems.co.kr/list.txt• < 파일 내용 >• Cats3.kaist.ac.kr• Cats4.kaist.ac.kr

Page 10: Cache cloud 최종

API 별 WORK FLOW

Page 11: Cache cloud 최종

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

Page 12: Cache cloud 최종

Cache_delete

Client Side Daemon Side

1

1

WorkQueue FailQueue

FailureThread

Delete request Delete Data

Delete Request 23

45

Delete Request

Page 13: Cache cloud 최종

cache_get, etc – cache hit

Client Side Daemon Side

1Set Request

WorkQueue

WorkerThread

2

Get cache RequestReturn cache

34

5Return Cache

Page 14: Cache cloud 최종

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

Page 15: Cache cloud 최종

TEST ENVIRONMENT

Page 16: Cache cloud 최종

Cache Cloud Daemon

Client

Page 17: Cache cloud 최종

Hardware – Daemon, Cassandra

• CPU– Intel® Core™ i7 CPU 860 @ 2.80GHz– Core : 4– Threads : 8

• Memory– 8GB

Page 18: Cache cloud 최종

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

Page 19: Cache cloud 최종

Test Information

• Cassandra– Version : 1.0.1

• Hector API– Version : 1.0.1

• Memcached– Version : 1.4.9

Page 20: Cache cloud 최종

ADDITIONAL INFORMATION

Page 21: Cache cloud 최종

Value Size

• Key 에 대해 저장되는 Value 사이즈를 의미• Value 는 integer array 로 구성되어 있다 .

• Ex) value size = 1KB– Integer array 1k 개를 생성

Page 22: Cache cloud 최종

Hit 율• 전체 데이터 중 캐시 ( 혹은 저장 ) 화 시킬

데이터의 비율

• Cache Miss 가 날 경우 , Cassandra 에서 읽어들임 .

Page 23: Cache cloud 최종

Key_cached

• 각 Column Family 마다 몇개의 key 를 캐싱할 것인지 설정

• Default : 20 만개

• Disabled row cached

Page 24: Cache cloud 최종

TEST RESULT

Page 25: Cache cloud 최종

실험 설정• Value Size : 1kb, 10kb, 100kb

• 데이터 갯수 : 2000 개

• Key cached : 200, 2000, 200000

Page 26: Cache cloud 최종
Page 27: Cache cloud 최종