This repository contains a subset of problems from Assignment-4 of the Distributed Systems course, taken in Monsoon'24 semester at IIIT Hyderabad. These algorithms have been implemented in a distributed setting using gRPC, in C++ and Python.
Note that comments to indicate what each block of code does have been provided in the source code for each of these programs.
- protobuf
- gRPC for python and C++ (you can refer to this handy guide)
- redis
- python
- A package manager for python like
pip
orconda
. - Python libraries mentioned in
requirements.txt
. - CMake
Once you have all of these installed, create a directory named build
in the root directory, and enter the directory using cd build
. Now, run cmake ..
, followed by make
to generate the executables.
- Follow the instructions mentioned in this README.
- The first entry in the first line is
K
, which specifies the number of nearest neighbours to consider. - The second entry in the first line is 'l', which specifies the dimension of the provided point. Note that this has to be the same as the dimensions of each datapoint present in the dataset.
- The second line contains
l
space separated floating point numbers which represent the point for which we are supposed to findK
nearest neighbours.
K
points, representing the top K nearest neighbours in ascending order of distance.
For details regarding the implementation and performance analysis, please refer to the report.
Created a distributed, asynchronous ride-sharing platform using gRPC, with support for rider and driver clients and servers to facilitate communication between the clients.
- SSL/TLS Authentication for both the client and the server (Mutual TLS).
- Interceptors for authorization, logging and other miscellaneous data.
- Timeout and rejection handling for drivers and riders.
- Client-side load balancing across servers.
- Create a CA certificate (you can follow this guide) and name it
ca.crt
. Put theca.crt
as well as its key namedca.key
in the certificate folder. - Follow the instructions mentioned in this README.
For details regarding the implementation, please refer to the report.