Guard Entry Atomic Object Creation in Distributed Storage

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Distributed key-value storage systems face challenges in ensuring durability, eventual consistency, and atomicity, particularly in managing garbage data and maintaining system integrity across multiple servers, as existing solutions fail to guarantee atomic operations across server boundaries.

Innovation Solution

The proposed method involves creating a guard entry and a garbage collection entry with finite lifetimes on the Name Server and Object Server, respectively, with atomic operations to ensure successful object creation and garbage collection, using a protocol endpoint to manage requests and responses, and maintaining an Active Objects Table to track recently written objects for TTL extension or deletion.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If distributed key-value storage splits the system into multiple parts hosted on different servers for load balancing, then system scalability and load distribution are improved, but system consistency and atomicity across server boundaries deteriorate

Engineering Contradiction:
Improveload distributionVSAvoidsystem consistency
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system is segmented into Name Server (NS) and Object Server (OS) components hosted on different servers. NS stores object names/keys while OS stores object data, allowing independent scaling and load distribution across multiple servers while maintaining logical consistency through coordinated operations.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

A client acts as an intermediary coordinating between NS and OS. The client manages the creation process by first creating a name at NS, then creating corresponding object data at OS, and finally establishing the name-data association. This intermediary coordination ensures atomicity and consistency across the distributed servers.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of operation

If the system uses conventional object creation processes without special atomicity guarantees, then ease of operation is improved, but atomicity and consistency of name-object pair creation deteriorate

Engineering Contradiction:
Improveobject creation simplicityVSAvoidatomicity guarantee
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The system performs preliminary actions in a specific sequence: first create a guard entry at NS, then create object data at OS, and finally atomically replace the guard entry with the actual name. This preliminary structured approach ensures atomicity while maintaining operational simplicity through clear step-by-step procedures.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

A guard entry is created beforehand at the Name Server as a placeholder before actual object creation. This guard entry acts as a cushion that prevents premature name creation and ensures that the name-object pair is only established when both components are ready, guaranteeing atomicity without complicating the operation.

Inventive Principle:
Principle #11Beforehand cushioning (Prior cushioning)

3Reliability

If the system implements guard entries with finite lifetime for atomicity, then atomicity and consistency are improved, but system complexity and overhead increase

Engineering Contradiction:
ImproveatomicityVSAvoidsystem structure
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

Guard entries are designed as cheap, short-lived objects with finite lifetime (TTL). They serve as temporary placeholders during the atomic creation process and are automatically removed after serving their purpose. This disposable nature reduces complexity overhead while maintaining atomicity guarantees.

Inventive Principle:
Principle #27Cheap short-living objects (Disposable)

Solution Approach 2:

The guard entry has a time-to-live (TTL) parameter that automatically changes its validity state. After the TTL expires, the guard entry is automatically removed, providing a simple mechanism to enforce atomicity without permanent complexity. The parameter change from valid to expired automatically manages the entry's lifecycle.

Inventive Principle:
Principle #35Parameter changes

4Reliability

If the system performs multiple atomic operations across Name Server and Object Server, then consistency and durability are improved, but operation time and processing overhead increase

Engineering Contradiction:
ImproveconsistencyVSAvoidoperation duration
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system maintains continuity of useful action by keeping the guard entry in place throughout the object creation process. Rather than performing separate independent operations, the guard entry continuously represents the pending creation state, allowing the client to coordinate the atomic replacement with minimal interruption and reduced overall operation time.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS10783136B1Management of garbage data in distributed systems
Publication Date: 2020.09.22 VIRTUOZZO INT GMBH
  • US10783136B1 patent drawing
  • US10783136B1 patent drawing
  • US10783136B1 patent drawing

AI summary

Method for writing objects into an object storage. Performing, on a protocol end point: receiving a client request for inserting an object into the object storage, wherein the object has a name and object data; generating a unique ID (UID) for the object; sending, to a name server (NS), a request for creating a guard entry (GE). The GE has a lifetime that defines when the name-object pair is inserted into the object storage. A request to an object server (OS) atomically creates a Garbage Collection Entry and assigns space for the object data. The GCE has a lifetime that defines when the object data is inserted into the object storage; sending, to the OS, object data for writing to storage; sending, to the NS, a request for writing the name; and sending response to the client, to report success after requests to the NS and the OS are successful.