Skip to content

Latest commit

 

History

History
95 lines (54 loc) · 5.47 KB

File metadata and controls

95 lines (54 loc) · 5.47 KB
graph LR
    StateManager["StateManager"]
    StateStore["StateStore"]
    StateRecovery["StateRecovery"]
    RocksDBPartition["RocksDBPartition"]
    BaseTransaction["BaseTransaction"]
    TimestampedRocksDBStore["TimestampedRocksDBStore"]
    WindowedRocksDBTransaction["WindowedRocksDBTransaction"]
    StateManager -- "Orchestrates the lifecycle of" --> StateStore
    StateStore -- "Provides the abstract definition for" --> RocksDBPartition
    StateRecovery -- "Writes recovered state data to" --> RocksDBPartition
    BaseTransaction -- "Produces changelogs consumed by" --> StateRecovery
    RocksDBPartition -- "Is a concrete implementation of" --> StateStore
    RocksDBPartition -- "Serves as durable storage for" --> BaseTransaction
    BaseTransaction -- "Performs atomic state modifications on" --> RocksDBPartition
    BaseTransaction -- "Provides the core transactional framework for" --> TimestampedRocksDBStore
    TimestampedRocksDBStore -- "Extends and specializes" --> RocksDBPartition
    TimestampedRocksDBStore -- "Builds upon" --> BaseTransaction
    WindowedRocksDBTransaction -- "Is a specialized form of" --> BaseTransaction
    WindowedRocksDBTransaction -- "Operates on and modifies windowed data stored within" --> RocksDBPartition
Loading

CodeBoardingDemoContact

Details

The quixstreams.state subsystem provides robust state management capabilities. The StateManager acts as the central orchestrator, overseeing the lifecycle of StateStore instances, which define the interface for state persistence. RocksDBPartition serves as a concrete, durable implementation of StateStore, handling low-level key-value operations. BaseTransaction provides the transactional framework, ensuring atomic state modifications on RocksDBPartition and crucially, generating consistent and durable changelogs. For fault tolerance and recovery, StateRecovery consumes these changelogs to restore the state within RocksDBPartition instances. Specialized components like TimestampedRocksDBStore and WindowedRocksDBTransaction extend these core functionalities for specific use cases like time-series data and windowed aggregations.

StateManager

Orchestrates the entire state management lifecycle, including the creation, registration, initialization, and closing of state store instances. It also configures and manages Kafka changelog topics for state persistence and fault tolerance.

Related Classes/Methods:

StateStore

Defines the abstract interface and common contract for all concrete state store implementations, ensuring a consistent API for interacting with different underlying storage technologies.

Related Classes/Methods:

StateRecovery

Manages the critical process of recovering state from Kafka changelog topics by consuming and replaying changelog messages, ensuring data consistency and fault tolerance during state restoration.

Related Classes/Methods:

RocksDBPartition

Provides the concrete, persistent key-value storage mechanism for a single Kafka partition using RocksDB, handling low-level read and write operations to the disk-backed store.

Related Classes/Methods:

BaseTransaction

Establishes the foundational transactional capabilities for state operations, managing a cache of pending changes and coordinating with changelog producers to ensure atomicity and durability of state modifications.

Related Classes/Methods:

TimestampedRocksDBStore

A specialized RocksDBPartition implementation designed for managing time-series data, offering functionalities for timestamp-based queries, range lookups, and data expiration.

Related Classes/Methods:

WindowedRocksDBTransaction

Provides transactional operations specifically tailored for windowed state aggregations, managing window boundaries, expiration logic, and ensuring consistent updates within defined time or count windows.

Related Classes/Methods: