Search⌘ K
AI Features

Design of a Blob Store

Define the high-level architecture and core APIs required for a scalable blob store service. Describe the detailed design components, such as the manager node and distributed metadata store, that enable horizontal scaling. Outline the end-to-end workflow for write, read, and delete operations in the blob store architecture.

High-level design

A blob store system consists of three core components: clients, frontend servers, and storage disks.

The high-level design of a blob store
The high-level design of a blob store

Frontend servers receive client requests and store blobs on attached storage disks.

API design

The following operations require a registered and authenticated user. Registration and authentication steps are omitted for brevity.

Create container

The createContainer operation creates a new container under the current user’s account.

createContainer(containerName)

Parameter

Description

containerName

This is the name of the container. It should be unique within a storage account.

Upload blobs

Clients upload data to the blob store as binary objects. Use the following code to upload data to a container:

putBlob(containerPath, blobName, data)

Parameter

Description

containerPath

This is the path of the container in which we upload the blob. It consists of the accountID and containerID.

blobName

This is the name of the blob. It should be unique within a container, otherwise our system will give the blob that was uploaded later a version number.

data

This is a file that the user wants to upload to the blob store.

Note: This API definition is logical. In production, large data transfers may require multistep streaming.

Download blobs

Blobs are identified by a unique name or ID.

getBlob(blobPath)

Parameter

Description

blobPath

This is the fully qualified path of the data or file, including its unique ID.

Delete blob

The deleteBlob operation marks a blob for deletion. The system removes the actual data ...