Giter Site home page Giter Site logo

arcus's Introduction

Arcus Cache Cloud

Arcus is a memcached-based cache cloud developed by NAVER Corp. arcus-memcached has been heavily modified to support functional and performance requirements of NAVER services. Arcus supports collection data structures (List, Set, B+tree) for storing/retreiving multiple values as a structrued form in addition to the basic Key-Value data model of memcached.

Arcus manages multiple clusters of memcached nodes using ZooKeeper. Each cluster or cloud is identified by its service code. Think of the service code as the cloud's name. The user may add/remove memcached nodes/clouds on the fly. And, Arcus detects failed nodes and automatically removes them.

The overall architecture is shown below. The memcached node is identified by its name (IP address:port number). ZooKeeper maintains a database of memcached node names and the service code (cloud) that they belong to. ZooKeeper also maintains a list of alive nodes in each cloud (cache list).

Upon startup, each memcached node contacts ZooKeeper and finds the service code that it belongs to. Then the node inserts its name on the cache list so Arcus client can see it. ZooKeeper periodically checks if the cache node is alive, remove failed nodes from the cache cloud, and notifies the updated cache list to cache clients. With the latest cache list, Arcus clients do consistent hashing to find the cache node for each key-value operation. Hubble collects and shows the statistics of the cache cloud.

Arcus Architecture

Supported OS Platform

Currently, Arcus only supports 64-bit Linux. It has been tested on the following OS platfroms.

  • CentOS 6.x 64bit
  • Ubuntu 12.04 LTS 64bit

If you are interested in supporting other OS platforms, please try building/running Arcus on them. And let us know of any issues.

Quick Start

Arcus setup usually follows three steps below.

  1. Preparation - clone and build this Arcus code, and deploy Arucs code/binary package.
  2. Zookeeper setup - initialize Zookeeper ensemble for Arcus and start Zookeeper processes.
  3. Memcached setup - register cache cloud information into Zookeeper and start cache nodes.

To quickly set up and test an Arcus cloud on the local machine, run the commands below. They build memcached, set up a cloud of two memcached nodes in ZooKeeper, and start them, all on the local machine. The commands assume RedHat/CentOS environment.

# Rquirements: JDK & Ant

# Install dependencies
sudo yum install gcc gcc-c++ autoconf automake libtool pkgconfig cppunit-devel python-setuptools

# Clone & Build
git clone https://github.com/naver/arcus.git
cd arcus/scripts
./build.sh

# Setup a local cache cloud with conf file. (Should be non-root user)
./arcus.sh quicksetup conf/local.sample.json

# Test
echo "stats" | nc localhost 11211 | grep version
STAT version 1.7.0
echo "stats" | nc localhost 11212 | grep version
STAT version 1.7.0

To set up Arcus cache clouds on multiple machines, you need following two things.

Please see Arcus cache cloud setup in multiple servers for more details.

Once you finish setting up an Arcus cache cloud on multiple machines, you can quickly test Arcus on the command line, using telnet and ASCII commands. See Arcus telnet interface. Details on Arcus ASCII commands are in Arcus ASCII protocol document.

To develop Arcus application programs, please take a look at Arcus clients. Arcus currently supports Java and C/C++ clients. Each module includes a short tutorial where you can build and test "hello world" programs.

Documents

arcus's People

Contributors

hoonmin avatar jhpark816 avatar yoloseem avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.