-
Notifications
You must be signed in to change notification settings - Fork 77
1. Overview
Park JunHyun edited this page Aug 21, 2014
·
4 revisions
Arcus는 NAVER에서 remote caching 서비스를 제공하는 memory cache cloud입니다. Arcus는 일반적으로 back-end storage인 DB의 앞단에서 hot-spot 성격의 데이터를 caching하여 서비스함으로써, 여러 응용들에게 빠른 응답성을 제공하면서 DB로의 load를 경감시켜 줍니다. 그 외에도 복잡한 계산에 의한 결과물 또는 웹 처리상의 중간 데이터 등을 신속히 저장 및 조회할 수도 있으며, caching 데이터를 여러 프로세스들 간에 공유하여 사용할 수 있습니다.
Arcus는 key-value 데이터 모델과 multiple values를 구조화된 형태로 저장하고 조회하는 collection(List, Set, B+Tree) 자료 구조를 제공합니다.
- Key-Value – key-value 쌍으로 저장하는 구조입니다.
- List – double-linked list 구조를 가집니다. 현재 임의 위치의 data 접근을 신속히 하는 기능이 없어 queue 처럼 동작하는 경우에만 유용합니다. 임의 위치에 대한 신속한 접근 기능은 향후에 계획하고 있습니다.
- Set – unordered set of unique value 구조이며, membership check에 유용합니다. 예를 들어, 친구 정보를 하나의 collection으로 표현하고 친구 여부 조회 시에 유용합니다.
- B+Tree – 개념상 sorted map과 유사합니다. 각 element는 <bkey(b+tree key), [eflag,] data>로 구성되며, bkey 기준으로 sorted list 형태로 유지합니다. 하나의 bkey로 특정 data를 조회하거나 bkey range로 여러 data를 조회하는 경우에 유용합니다.
Arcus는 distributed key-value store 구조로 효과적인 cloud 서비스를 위한 특성들을 제공합니다.
- Scalability – caching 대상 데이터 규모 또는 caching 데이터에 대한 요청량 규모에 따라 cache node 추가/삭제 또는 cache memory 증대/감소를 통해 cloud 운영 도중에 서비스 중단 없이 cloud 규모를 늘리거나 줄일 수 있습니다.
- Availability – 일부 cache node가 다운되거나 network partition 등의 문제가 발생하더라도, 나머지 cache node들로 caching 서비스를 지속합니다.
- Fault-Tolerance – 일부 cache node가 다운되거나 접근되지 않는 문제 등이 발생하면, 자동으로 failed cache node를 찾아 cache cloud에서 제거하고 나머지 cache node들로 cloud를 형성하여 동작합니다.
응용프로그램은 Arcus Cache Cloud를 DB의 앞단에 두고, 아래와 같이 demand-fill 방식으로 이용하면 됩니다.
- Read 연산 - 먼저 Arcus cache에서 get 요청으로 데이터를 조회하고, cache miss이면 DB에서 데이터 조회한 다음 Arcus cache에 set 요청으로 그 데이터를 caching해 둡니다. 한번 caching된 데이터는 다음 번 read 요청에 빠르게 응답할 수 있게 됩니다.
- Write 연산 - DB에 변경 데이터를 기록한 다음, Arcus cache에서 delete 요청으로 기존 데이터를 invalidate 시킵니다. 그 이후, 변경 데이터에 대한 Read 요청은 Arcus cache에서 cache miss가 발생하게 되므로, DB에서 그 데이터를 조회하여 다시 Arcus cache에 넣어두고 이용하게 됩니다.