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

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 (

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:

    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:

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

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

IP Configuration:

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

. 2. The ip of the seed node should be stored in
. The seed node can be any proxy node. 3. The ip of all the proxy nodes should be stored in
. Each line contains a single proxy ip.

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


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

. 2. The ip of all the proxy nodes should be stored in
. 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

. 2. Start a server by running
. 3. Start a client by running

The accepted input formats are

GET $key
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.