Distributed Data Store Consistency via Intent Indicators

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Distributed storage systems face challenges in maintaining read-after-read consistency due to node failures during write operations, leading to inconsistent value returns across different failure states.

Innovation Solution

Implementing intent indicators and sequence numbers to ensure that a write operation is completed across a majority of nodes, with an intent indicator written to less than a majority of nodes before updating the value, ensuring that the latest sequence number is propagated and returned consistently.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If write operations are propagated to a majority of nodes in a distributed storage system, then fault tolerance is improved, but read-after-read consistency deteriorates when nodes go offline and online sporadically during write operations

Engineering Contradiction:
Improvefault toleranceVSAvoidread-after-read consistency
Core Design Contradiction:
ReliabilityVSStability of the object's composition

Solution Approach 1:

The patent applies preliminary action by writing an intent indicator to at least one node before completing the write operation to the majority of nodes. This intent indicator serves as a preliminary marker that prepares the system state, allowing the leader node to later determine whether a write operation was in progress when reading occurs, thereby resolving the consistency issue while maintaining fault tolerance

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intent indicator as an intermediary element that mediates between the write operation and the read operation. This intent indicator acts as a signaling mechanism that communicates the state of the write operation to subsequent read requests, enabling the system to maintain both fault tolerance through majority writes and read-after-read consistency by providing information about incomplete write operations

Inventive Principle:
Principle #24Intermediary (Mediator)

2Stability of the object's composition

If the same value is returned for consecutive read requests with no intervening writes, then read-after-read consistency is improved, but the system becomes vulnerable to inconsistent returns when nodes experience failures during write operations

Engineering Contradiction:
Improveread-after-read consistencyVSAvoidhandling of node failures
Core Design Contradiction:
Stability of the object's compositionVSReliability

Solution Approach 1:

The intent indicator serves as an intermediary that provides information about the state of write operations to read requests. When a read request occurs, the leader node can check for intent indicators to determine if a write operation was in progress, allowing the system to maintain read-after-read consistency even when nodes experience failures during write operations

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system implements feedback by having the leader node check for intent indicators before servicing read requests. This feedback mechanism allows the system to detect incomplete write operations and respond appropriately, ensuring that consecutive read requests return consistent values even in the presence of node failures

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS10671482B2Providing consistency in a distributed data store
Publication Date: 2020.06.02 COHESITY INC
  • US10671482B2 patent drawing
  • US10671482B2 patent drawing
  • US10671482B2 patent drawing

AI summary

A request to store a new value to a data entity to be fault tolerant across a plurality of nodes is received. The data entity being in an intermediate state is indicating to at least one less than a majority of the plurality of nodes. A request to read a stored value of the data entity is received. A latest value instance of the data entity among a majority nodes of the plurality of nodes is determined. A value of the latest value instance in a majority nodes of the plurality of nodes is stored as a next value instance of the data entity.