[![status-badge](https://ci.batsense.net/api/badges/105/status.svg)](https://ci.batsense.net/repos/105)
---

# dcache: Distributed, Highly Available cache implementation for mCaptcha

## Overview

-   Uses Raft consensus algorithm via [openraft](https://crates.io/crates/openraft)
-   GRPC via [tonic](https://crates.io/crates/tonic)

## Tips

We recommend running at least three instances of dcache in your
deployment.

**NOTE: Catastrophic failure will occur when n/2 + 1 instances are
down.**

## Usage

## Firewall configuration

dcache uses a single, configurable port for both server-to-server and client-to-server
communications. Please open that port on your server.

## Launch

```bash
dcache --id 1 \
--http-addr 127.0.0.1:9001 \
--introducer-addr 127.0.0.1:9001 \
--introducer-id 1 \
--cluster-size 3
```

### Options

| Name              | Purpose                                                     |
| ----------------- | ----------------------------------------------------------- |
| --id              | Unique integer to identify node in network                  |
| --http-addr       | Socket address to bind and listen for connections           |
| --introducer-addr | Socket address of introducer node; required to join network |
| --intdocuer-id    | ID of the introducer node; required to join network         |
| --cluster-size    | Total size of the cluster                                   |
