forked from Hoverbear/old-raft-rs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCargo.toml
65 lines (60 loc) · 2.28 KB
/
Cargo.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
[package]
name = "raft"
version = "0.0.1"
authors = [
"Andrew Hobden <andrew@hoverbear.org>",
"Dan Burkert <dan@danburkert.com>",
"James McGlashan <github@darkfox.id.au>",
]
description = """
Today our systems operate in extreme conditions, functioning across containers,
virtual machines, infrastructure, networks, embedded systems, in our pockets,
and even inside of us. Many of these systems depend on one another for
operation, others are able to operate in failing connectivity without disaster.
In many cases it is preferable to have the latter, especially if the operation
the continued operation of the system is at stake. Distributed consensus
represents one small part of a larger system, and offer the ability to maintain
a replicated persistent log containing actions that are applied globally into
a state machine. This allows *n* clients to communicate to a cluster of *m*
servers in a stable and predictable manner, even in failing network conditions.
Using Ongaro and Osterhouts's Raft algorithm we are developing a fast, low
level, low requirements implementation of the system in an unopinionated,
minimal way. The Raft library interfaces with custom or preexisting Log and
State Machine implementations, providing a Client, Server, and Consensus Module
within its core. We have chosen an asynchronous single threaded event loop model
in the Rust language, allowing our implementation to have strong safety and
performance characteristics with low demands. Communication, a primary
performance concern, is kept as lightweight and fast as possible by using
Renshaw's Cap'n Proto implementation. We are currently exploring opportunities
in trust and security as well as testing our implementation for further failure
conditions."""
readme = "README.md"
keywords = [
"Raft", "Distributed Computing", "Consensus", "State Machine",
"Persistent Log", "Networking",
]
license = "MIT"
# Builds Cap'n Proto messages
build = "build.rs"
# Dependencies
[build-dependencies]
capnpc = "0.5"
[dependencies]
bufstream = "0.1"
capnp = "0.6"
capnp-nonblock = "0.3"
log = "0.3"
mio = "0.5"
rand = "0.3"
scoped_log = "0.1"
uuid = "0.1"
wrapped_enum = "0.1"
[dev-dependencies]
env_logger = "*"
# Used in Examples
docopt = "*"
serde = "*"
serde_json = "*"
serde_macros = "*"
rustc-serialize = "*"
bincode = "*"