🦫 - A little distributed system (Map Reduce simplified)
Marmot-Reduce is a simplified distributed system inspired by the MapReduce programming model. It allows you to perform distributed computations across multiple clients connected to a server. This project is designed to be educational and fun, providing a hands-on experience with distributed systems and concurrent programming in Go.
All project notes and updates are available in notes.md
.
- Interactive menu to manage operations.
- Display connected clients in real time.
- Ping clients to check their availability.
- Update Distant client, sending new version of client
- Proper connection management, preventing resource leaks.
- Distributed execution of calculations:
- Letter counting in a text.
- Checking if a number is prime.
- PI estimation using Monte Carlo algorithm
- Free fall simulation
- Persistent connection:
- If the connection is lost, the client automatically attempts to reconnect.
- It continues until the server sends an exit message.
- It can self update himself with new version sent by server
- Go (1.18 or higher) installed on your machine.
-
Navigate to the
sources
directory:cd sources
-
Start the server:
go run ./ server
-
Start one or more clients:
go run ./
- Start the server: it waits for client connections.
- Clients connect: each client registers with the server.
- The server can send commands to clients: ping, execute calculations, etc.
- Clients respond and return results.
- If a client disconnects, it automatically attempts to reconnect.
- The server can properly close all connections before shutting down.
This project is open-source and licensed under MIT.