FTCache is a fault-tolerant, distributed caching layer designed for high-performance computing (HPC) environments. It leverages consistent hashing and a hash ring architecture to provide load balancing and resilience against node failures. The system is implemented in C++ and supports integration with local and parallel file systems.
- Consistent Hash Ring for dynamic node management
- Fault tolerance with automatic failover
- Load balancing across multiple cache nodes
- Support for both local and parallel file systems (PFS)
- Performance benchmarking and result visualization scripts
.
├── src/ # Source code (C++ files, hash ring, main entry points)
│ ├── ConsistentHashRing.hpp
│ ├── v1_main.cpp ... v6_main.cpp
│ ├── Local_Cache/ # Simulated local cache nodes
│ └── PFS_Source/ # Parallel file system source files
├── Archive/ # Old presentations, scripts, and results
├── build/ # Build artifacts and CMake files
├── Presentations/ # Project presentations and scripts
├── Paper/ # Research paper drafts and references
├── README.md # This file
├── CMakeLists.txt # CMake build configuration
└── ... # Other supporting files
- C++17 compatible compiler (e.g., g++, clang++)
- CMake 3.10+
- Python 3.x (for plotting and analysis scripts)
- (Optional) Docker (for containerized node simulation)
-
Clone the repository:
git clone https://github.com/seunshix/replicated-cache-layer.git cd FTCache -
Build with CMake:
mkdir -p build cd build cmake .. make -
Or, build a specific version directly:
g++ -std=c++17 -o v1_main ../src/v1_main.cpp
- To run the main cache simulation:
./build/FTCache
- To run a specific version:
./src/v2_main
- Use the provided Python scripts to visualize results:
python3 src/plotting_results.py
- Configure cache nodes and PFS sources in the
src/Local_Cache/andsrc/PFS_Source/directories. - Modify or extend the hash ring logic in
src/ConsistentHashRing.hpp.
- See the
Presentations/andPaper/folders for methodology, results, and research context. - Refer to code comments in
src/for implementation details.
Contributions are welcome! Please open issues or submit pull requests for improvements or bug fixes.
This project is for academic and research purposes.