아커스 (Arcus)는 memcached와 ZooKeeper를 기반으로 네이버 (NAVER) 서비스들의 요구 사항을 반영해 개발한 메모리 캐시 클라우드 입니다.
아커스는 memcached 프로토콜을 지원하고 다음의 memcached 기본 성능 혜택은 그대로 유지합니다.
- 아커스는 백엔드 저장소인 데이터베이스의 앞단에 위치하여 hot-spot 성격의 데이터를 캐싱하여, 서비스 응용에게 빠른 응답성 제공하고 데이터베이스 부하 감소.
- 복잡한 계산에 의한 결과물 또는 웹 처리상의 중간 데이터 등을 신속히 저장, 조회.
- 캐시를 통하여 여러 프로세스들 간에 데이터 공유.
아커스는 memcached를 확장해서 다음의 추가 기능을 제공합니다.
- ZooKeeper 기반의 cache cloud 관리
- Collection 자료구조 (List, Set, B+tree) 지원
- B+tree의 다양한 기능들
- 다양한 크기의 B+tree key (bkey)
- Element flag 및 filtering
- Bkey 기반의 range scan
- 여러 B+tree들에 대한 sort-merge-get (smget)
- B+tree position 기반의 range scan
- Item attibute 조회 및 설정 기능
- Sticky item(not evicted & oot expired) 지원
- Collection 자료구조를 위한 small memory allocator
Arcus 설치, 테스트
arcus를 열고 README 설명을 따라 간단히 설치, 실험해보세요.
Code Repository
아커스는 memcached 외 여러 모듈들을 포함합니다. arcus가 슈퍼 프로젝트로서 다른 모듈들을 submodule 형태로 포함합니다. 빌드, 설치 스크립트와 기타 문서들도 함께 포함합니다.
- arcus : arcus super project including setup tools
- arcus-memcached : arcus memory cache server
- arcus-java-client : arcus java client
- arcus-c-client : arcus c client
- arcus-cpp-client : arcus cpp client
- arcus-ruby-client : arcus ruby client
- arcus-python-client : arcus python client
- arcus-zookeeper : zookeeper with arcus modifications
- arcus-hubble : dashboard service to monitor arcus clusters
- arcus-spring : arcus as a caching provider for the Spring Cache Abstraction
- arcus-misc : arcus miscellaneous code.
Public Documents
- ARCUS 차별 기능, 사용 이슈 그리고 카카오 적용 사례, DEVIEW 2014
- 웹서비스 성능향상을 위한 오픈소스 Arcus 주요 기능과 활용 사례, 네이버 오픈세미나 at 광주
- Arcus Collection 기능과 Open Source 전략, Open Technet Summit 2014
- Arcus: NHN Memcached Cloud, SDEC 2011
Contributing
Contribution 하기 위한 선행 작업으로 CLA(Contributor License Agreement)에 대해 contributor의 sign이 필요합니다. 먼저, 아래 Apache CLA 내용을 자세히 읽어보시기 바랍니다. Apache CLA에 동의하시면 해당 CLA에 필수 사항 기재하고 sign하고 나서, singed CLA를 스캔한 이미지를 junhyun.park@jam2in.com 또는 hoonmin.kim@navercorp.com 메일 계정으로 보내 주시기 바랍니다.
- Apache ICLA(Individual Contributor License Agreement)
- Apache CCLA(Corporate Contributor License Agreement)
Contribution은 GitHub pull requests 방식을 사용해 주시기 바랍니다.
Contacts
Arcus 문의나 논의 사항은 아래 채널을 이용해 주세요.
Arcus 버그나 이슈 사항은 개별 repository issues에 올려주세요.