Skip to content

raakella1/nuraft_mesg

 
 

Repository files navigation

nuRAFT Messaging

Brief

nuRAFT Messaging is a multi-group service layer for nuraft

This project provides a middleware to nuRaft which manages multple NuRaft servers multiplex through a single client/server.

Changes

See the Changelog for release information.

Usage

This library only provides the nuraft message marshalling and routing. In essense, it translates nuRaft types into comparable Protobuf objects which can be used when defining a gRPC service. A Protobuf schema is included for use with embedding these message types into downstream .proto service files.

You must still provide the following:

  • nuraft::state_machine: Provides hooks to implement commit(), snapshot(), rollback() etc.
  • nuraft::state_mgr: RAFT state persistence. Loads/Stores state for the state_machine.
  • nuraft::logger: Provides logging facility to nuraft for debugging.
  • nuraft_mesg::grpc_client: Calls step on associated gRPC client.
  • nuraft_mesg::grpc_server: Associates/Binds step gRPC call to marshalling calls.

A simple echo server can be found in test_package/example_{client,server}.cpp

Conan builds

Notes

Currently this project can only be built on Linux using the GCC compiler toolchain. Work is on-going to support other platforms (e.g. MacOS) using the Clang and VSCode toolchains. Please feel free to contribute changes that support this endeavour.

Dependencies

This project depends on the Symbiosis Library which is currently not available in conan-center. If using conan-center one must first export this recipe to their local conan cache, example:

$ git clone https://github.com/eBay/sisl sisl
$ conan export sisl/ oss/master

Building the Package

This project is typically built from a combination of conan.io and CMake (which must be installed on the host).

$ pip install -U conan
$ conan create --build missing . <user>/<channel>

License Information

Copyright 2021 eBay Inc.

Primary Author: Brian Szmyd Primary Developers: Brian Szmyd, Ravi Nagarjun Akella, Harihara Kadayam

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 82.3%
  • CMake 13.3%
  • Python 2.6%
  • Shell 1.8%