Skip to content

abramtan/chord-url-shortening

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

chord-url-shortening

The chord-url-shortening project is a distributed computing implementation of url shortening using Google's Chord protocol, written in Golang. This project is for the 50.041 Distributed Systems and Computing course. The main goals of this project is to build a scalable and fault tolerant url-shortener, leveraging a distributed hash table (DHT) architecture. The project is built with a Golang backend and a Next.js frontend. For more details, check out the slides and report found in /docs.

Table of Contents


Screenshot


Features

  • Distributed URL Shortening: Utilizes the Chord protocol for efficient URL storage and retrieval.
  • Fault Tolerance: Implements data replication and successor lists to ensure high availability.
  • Scalability: Designed to handle a large number of nodes and URLs efficiently.
  • Caching: Local caching mechanism to optimize URL retrieval and reduce latency.

Getting Started

Installation

# Clone the repo
git clone https://github.com/abramtan/chord-url-shortening.git

# Navigate to the frontend directory
cd src/frontend

# Install dependencies
npm install

Usage

Start Backend (Chord Ring)

# Navigate to the src directory
cd src

# Run the backend chord ring
go run backend/main.go

Enter ADD in the CLI interface to add nodes to the chord ring. For more details, check out src/backend/README.md for more details on the backend usage.

Start Frontend (NextJS)

Copy the .env.example file and rename it to .env.

# Navigate to the frontend directory
cd src/frontend

# Run the frontend
npm run dev

On your browser, head to http://localhost:3000 to access the web app.


Architecture

Screenshot


Experiments

TimeVsNodes TimeVsNodes TimeVsNodes TimeVsNodes


Acknowledgements

About

50.041 Distributed Systems and Computing: Chord-Powered URL Shortening

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published