Need help with anna?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

ucbrise
452 Stars 73 Forks 11 Commits 20 Opened issues

Services available

!
?

Need anything else?

Contributors list

Anna: A KVS for any scale

Note: This is a snapshot of the Anna codebase as of March, 2018. The latest codebase is released and maintained here (https://github.com/hydro-project/anna).

Anna is an in-memory KVS that delivers high performance at multiple scales, from a single core machine to NUMA to geo-distributed deployment. It also provides a wide spectrum of coordination-free isolation levels that aim to meet the consistency requirements of different applications.

Build Instruction (Ubuntu):

  1. Install Clang and libc++, run:

    sudo apt-get update
    .
    sudo apt-get install -y build-essential autoconf automake libtool curl make g++ unzip pkg-config wget clang-3.9
    .
    sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.9 1
    .
    sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.9 1
    .
    sudo apt-get install -y libc++-dev libc++abi-dev libtbb-dev
    .
  2. Install cmake, run:

    wget https://cmake.org/files/v3.9/cmake-3.9.4-Linux-x86_64.tar.gz
    .
    tar xvzf cmake-3.9.4-Linux-x86_64.tar.gz
    .
    mv cmake-3.9.4-Linux-x86_64 /usr/bin/cmake
    .
    export PATH=$PATH:/usr/bin/cmake/bin
    .
    rm cmake-3.9.4-Linux-x86_64.tar.gz
    .
  3. Install protobuf: after cloning the protobuf repo, run:

    ./autogen.sh
    .
    ./configure CXX=clang++ CXXFLAGS='-std=c++11 -stdlib=libc++ -O3 -g'
    .
    make
    .
    make check
    .
    sudo make install
    .
    ldconfig
    .
  4. Build KVS, run:

    bash scripts/build_release.sh
    .
    (This command will build a KVS that provides last-writer-win consistency. Lattice composition for other consistency levels can be found in
    kvs/include
    )

IP Configuration:

For each server node: 1. The ip of the current node should be stored in

conf/server/server_ip.txt
. 2. The ip of the seed node should be stored in
conf/server/seed_server.txt
. The seed node can be any proxy node. 3. The ip of all the proxy nodes should be stored in
conf/server/proxy_address.txt
. Each line contains a single proxy ip.

For each proxy node: 1. The ip of the current node should be stored in

conf/proxy/proxy_ip.txt
.

For each user/benchmark node: 1. The ip of the current node should be stored in

conf/user/user_ip.txt
. 2. The ip of all the proxy nodes should be stored in
conf/user/proxy_address.txt
. Each line contains a single proxy ip.

Run Instruction:

Please start the proxy first, and then the server and client. 1. Start a proxy by running

./build/kvs/kvs_proxy
. 2. Start a server by running
./build/kvs/kvs_server
. 3. Start a client by running
./build/kvs/kvs_user
.

The accepted input formats are

GET $key
and
PUT $key $value
.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.