This project implements a distributed system with a client-server architecture to bring the classic game of BINGO into the realm of distributed computing. The system demonstrates core distributed system principles, such as fault tolerance, dynamic discovery, and reliable communication.
- Scalable Supports integration of any number of clients and servers, making it suitable for large-scale use.
- Dyanmic Discovery of Hosts No hardcoding of IPs; clients and servers discover each other dynamically.
- Fault Tolerance Ensures system functionality remains intact despite node failures.
- Election Implements proper voting algorithms for leader election in case of conflicts or failures.
- Ordered Reliable Multicast Ensures all messages are delivered accurately and in order.
git clone https://github.com/Nikhil713/BINGO.git
If conda is installed, and you are creating the environment freshly
conda env create -f environment.yaml
For updating the environment
conda env update -f environment.yaml
For using the environment
conda activate bingo-game
For exiting out of the environment
conda deactivate bingo-game
If you are using pip
pip install -r requirements.txt
| Option | Description | Command Line Option | Value | Default |
|---|---|---|---|---|
| mode | Mode in which application is started | --mode or -m | client/ server | server |
| instances | Number of instance to be started | --instances or -i | integer | 1 |
| verbose | Verbose Mode | --verbose or --no-verbose | - | --no-verbose |
| config | Config File | --config or -c | - | - |
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
- Distributed Systems concepts from "Distributed Systems: Principles and Paradigms" by Andrew S. Tanenbaum.
- Game logic inspired by classic BINGO rules.