Dropbox system design | Google drive system design | System design file share and upload

hosting with google drive – Dropbox system design | Google drive system design | System design file share and upload


Dropbox system design | Google drive system design | System design file share and upload

hosting with google drive

Let’s design a file hosting service like Dropbox or Google Drive. Cloud file storage enables users to store their data on remote servers. Usually, these servers are …

you search:

hosting with google drive

Dropbox system design | Google drive system design | System design file share and upload

26 thoughts on “hosting with google drive – Dropbox system design | Google drive system design | System design file share and upload

  1. Salaams and respect from Pakistan for you sir! You are a hard working and a smart individual who is helping the IT community across the world using whatever best resources you have. Keep up the good work – Keep posting them system design videos. God Bless!

  2. great video! all good but I think you miss the Version control part , that you mentioned at very beginning….. any chance you can talk a bit about it ? thanks anyway.

  3. How we will consider the scenario where we add a complete full chunk of data in the file.
    In that we will have to update the chunk_order info in metadata for all chunks of the file..

  4. Clients described at 18:26, taking an example of Google Drive, refer to the various "Backup and Sync" desktop clients which you might have active on multiple devices. All these clients keep listening to a messaging queue. In case one device makes changes to a file, the change is propagated to S3 and all clients are notified of this by publishing the change to the messaging queue which they are listening to. The client which is the originator of the change doesn't care but other clients do and when they know of a change they update their local copies (download the whole file if not present).

    Update:
    It's not just one Q2. Each client will have its own queue on which the change is broadcasted. This is to have an asynchronous behaviour wherein the client can be offline for a period and then when it is online it starts listening to the queue for any changes

    This is my understanding. Correct me if I'm wrong

  5. Hey Naren. Great job! Few questions for you.

    1. Why can't we expose a single service which takes chunks of data and make metadata entry into database and also stores chunks to S3 instead of client calling both services?
    2. From your design, if sync service pushes notifications to a topic are we maintaining dedicated topics/partitions for different clients? Or are we pushing notifications via Websockets/HTTP Polling?
    Few comments:
    1. If clients go offline they can still come back and establish connections via Websockets?
    2. We can't have 'n' number of topics because creating Kafka topics/JMS queues need infrastructure support and is a costly operation. Also creating partitions in a live system is a costly affair. Pls let me know if I'm missing anything.

  6. 33:56 Here you threw the problem that we need to rebalance/re-shard as we get more and more data in one shard, but the subsequent mentioned approach "edgestore" does not seem to solve this, does it? It seems like the edge wrapper simply provides a better interface for developers to read/write data. How does the "edgestore" help in regards to the data sharding parts?

Leave a Reply

Your email address will not be published. Required fields are marked *