Implementation of raft consensus algorithm.
Project description
consensual
Summary
consensual
is a pure-Python library for defining network of nodes
running in a consistent fault-tolerant manner by implementing state-of-the-art
Raft
consensus algorithm.
Currently, next features are implemented & property-based tested
- leader election & log replication (described in section 5 of the article),
- cluster membership changes (described in section 6 of the article), namely consensual addition & removal of nodes,
- "solo mode": non-consensual separation of a node resulting in running as a cluster-by-itself,
- separate node state resetting with history deletion.
Next crucial features to implement will be
- persistence,
- log compaction (described in section 7 of the article).
In what follows python
is an alias for python3.7
or any later version (python3.8
and so on).
Installation
Install the latest pip
& setuptools
packages versions
python -m pip install --upgrade pip setuptools
User
Download and install the latest stable version from PyPI
repository
python -m pip install --upgrade consensual
Developer
Download the latest version from GitHub
repository
git clone https://github.com/lycantropos/consensual.git
cd consensual
Install dependencies
python -m pip install -r requirements.txt
Install
python setup.py install
Development
Bumping version
Preparation
Install bump2version.
Pre-release
Choose which version number category to bump following semver specification.
Test bumping version
bump2version --dry-run --verbose $CATEGORY
where $CATEGORY
is the target version number category name, possible
values are patch
/minor
/major
.
Bump version
bump2version --verbose $CATEGORY
This will set version to major.minor.patch-alpha
.
Release
Test bumping version
bump2version --dry-run --verbose release
Bump version
bump2version --verbose release
This will set version to major.minor.patch
.
Running tests
Install dependencies
python -m pip install -r requirements-tests.txt
Plain
pytest
Inside Docker
container:
docker-compose --file docker-compose.yml up
Bash
script:
./run-tests.sh
PowerShell
script:
.\run-tests.ps1
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for consensual-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0cd8b331872c9e9451eb5fcbb9ff28867bd3d846f7a3f3169e5976963e2bb67 |
|
MD5 | 5a4b47c501b7c46c5bd27462978b1bec |
|
BLAKE2b-256 | 7230a3dfa2ad0a94802eb6be79c6b1f89027e881542cb1023c92fabe5d66af58 |