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.
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 |
| 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 |
| This is the path of the container in which we upload the blob. It consists of the |
| 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. |
| 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 |
| 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 ...