RSSAmplifier

Sumanth's Personal Website · Feb 1, 2023

Surfstore - A dropbox-like service

0
Sign in to vote or save

Sumanth R Hegde · Sumanth's Personal Website

Last updated on Jul 16, 2023

A fun course project I did as a part of the Graduate Networked Systems course at UCSD. We created a cloud-based file storage service called SurfStore in Golang. SurfStore is a networked file storage application based on Dropbox, that lets you sync files to and from the “cloud”. We implemented the cloud service, and a client which interacts with the service via gRPC. SurfStore has two services: the BlockStore (which stores file blocks, each of which is accessible via an API call by a unique identifier), and the MetaStore (which stores metadata of the files and the entire system). Each file gets broken into blocks, and these blocks are stored in the BlockStore, with the file metadata (file version, list of blocks ids, etc) in the MetaStore. Versioning helps in resolving conflicts, and in making sure the client first “syncs” their local filesystem before uploading to the cloud. We also implemented horizontal scaling ( partitioning file blocks among multiple Blockstores ) using consistent hashing. Consistent hashing is basically one way of making sure we have a straightforward way of sending a block to a specific Blockstore, and there’s very little data transfer required when you add/remove a Blockstore. We further added fault-tolerance for the MetaStore service (making sure that there is a consistent update in case of node failures) by implementing the RAFT protocol.

This was my first time programming in Golang, and very enjoyable!

Sumanth R Hegde

Read the original on sumanthrh.com

Comments

Nothing yet. Say the first thing.

    Sign in to join the conversation.