+
Skip to content

VRAFT is a framework written in C++ that implements RAFT protocol and SEDA architecture. Based on VRAFT, distributed software can be developed easily, such as vectordb and distributed storage system.

License

Notifications You must be signed in to change notification settings

vectordb-io/vraft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vectordb.io

0 - Introduction | 中文

VRAFT is a framework written in C++ that implements the RAFT protocol and the SEDA architecture. Based on VRAFT, distributed software can be developed easily, such as distributed storage system and vectordb.

  • Program with TLA+ Specification -- Coding with the assistance of TLA+ Specification to theoretically ensure the correctness of the system.
  • Remu(Raft Emulator) -- There's a Built-in raft emulator that allows for distributed debugging, distributed global state viewing, and distributed automated testing.
  • Debug Everything -- The full-stack source code of VRAFT can be debugged.
  • Infrastructure Software Demo -- There are several demos of infrastructure software in VRAFT, such as distributed KV-store, metadata management center, distributed SQL, vectordb ...

Features:

  • Basic Raft
  • Raft Cluster Emulator
    • Global State Change View
    • Auto Message Flow
    • Cluster Breakpoint Debugger
  • Multi-Raft
  • Pre-Vote
  • Leadership Transfer
  • Dynamic Membership Change
  • Execution History CheckSum

Articles:

Video:

1 - Architecture

SEDA (Staged Event-Driven Architecture)

  • SEDA is a highly scalable internet software architecture, and VRAFT implements SEDA to support Multi-Raft.
  • SEDA Paper

VRaft-SEDA-Implementation

  • Four types of threads:
    • Server Thread: Implements TcpServer to receive messages from network.
    • Client Thread: Implements TcpClient to send messages to network.
    • Loop Thread: Implements EventLoop, used to respond to events (Raft messages, timer events, etc...)
    • Work Thread: Implements producer-consumer model to process messages sequentially.
  • Each type of thread has a corresponding thread pool, and the number of threads in the pool is configured based on the actual hardware conditions.
  • Each Raft instance has a unique 64-bit RaftId, and this RaftId is included in Raft messages.
  • Raft messages are passed between thread pools to complete the full Raft protocol process.
  • Messages with the same RaftId are always processed by the same thread.
  • A single thread can serve multiple different Raft instances.

VRaft Inner Component

2 - REMU (Raft Emulator)

《Raft Emulator的设计》

remu run cases

Remu-Architecture

History Checksum

Web Insight

auto generate message flow

global state change

node state change

3 Flame Graph

  • to be optimized ...

About

VRAFT is a framework written in C++ that implements RAFT protocol and SEDA architecture. Based on VRAFT, distributed software can be developed easily, such as vectordb and distributed storage system.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载