Accord: A high-performance coordination service for write-intensive workloads

Overview

Accord is a high-performance coordination service like Apache ZooKeeper that uses Corosync Cluster Engine as a total-order messaging infrastructure. It features:

  1. Accord is a distributed, transactional, and fully-replicated (No SPoF) Key-Value Store with strong consistency.
  2. Accord can be scale-out up to tens of nodes.
  3. Accord servers can handle tens of thousands of clients.
  4. Any clients can issue I/O requests, and any servers can accept and process I/O requests.
  5. The changes for a write request from a client can be notified to the other clients.
  6. Accord detects events of client's joining/leaving, and notifies joined/left client information to the other clients.

The difference between Accord and ZooKeeper is:

  1. Accord focuses on write-intensive workloads unlike ZooKeeper. ZooKeeper forwards all write requests to a master server. It can be bottleneck in write-intensive workloads. The below benchmark demonstrates that the write-operation throughput of Accord is much higher than one of ZooKeeper (up to 18 times better throughput at persistent mode, and up to 20 times better throughput at in-memory mode).
  2. More flexible transactions are supported. Not only write, del operations, cmp, copy, but also read operations are supported in transaction operations.
  3. In-memory mode and persistent mode supported.
  4. Message size is unbounded, and partial update is supported.

You can use read/write/del/transaction APIs to build high-performance distributed systems. API Documents is available from here

Performance

http://www.osrg.net/accord/images/accord_bench.png

Design

http://www.osrg.net/accord/images/accord_architecture.png

Use case

Accord is specific to write-intensive workloads. So assumed applications are as follows:

Installation

Dependencies

NOTE: If you run the sheepdog cluster in the same network segment, please specify another "mcastport" parameter which sheepdog uses.

Download and build Accord

$ git clone git://github.com/collie/accord.git
$ cd accord
$ make

Usage

API Document

TODO Lists