Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

Component Index

This document provides an overview of all ASAP components and links to detailed documentation.

Components at a Glance

Component Purpose Technology Links
asap-query-engine Answers PromQL queries using sketches Rust Details · Code · Dev Docs
Arroyo Stream processing for building sketches Rust (forked) Details · Code
asap-summary-ingest Configures Arroyo pipelines from config Python Details · Code · README
asap-planner-rs-rs Auto-determines sketch parameters Rust Details · Code
Exporters Generate synthetic metrics for testing Rust/Python Details · Code · README
asap-tools Experiment framework for CloudLab Python Details · Code · Docs

Component Interaction

graph TB
    subgraph "Configuration (Offline)"
        U[User] -->|edits| CC[controller-config.yaml]
        CC --> C[asap-planner-rs]
        C -->|streaming_config.yaml| AS[asap-summary-ingest]
        C -->|inference_config.yaml| Q
        AS -->|create pipelines| A
    end

    subgraph "Data Ingestion (Real-time)"
        E[Exporters] -->|metrics| P[Prometheus]
        P -->|remote_write| A[Arroyo]
        A -->|build sketches| A
        A -->|produce| K[Kafka]
    end

    subgraph "Query Execution (Real-time)"
        K -->|consume| Q[QueryEngine]
        G[Grafana] -->|PromQL| Q
        Q -->|results| G
        Q -.->|fallback| P
    end

    subgraph "Experiments (Research)"
        EXP[asap-tools] -->|deploy & run| E
        EXP -->|deploy & run| P
        EXP -->|deploy & run| A
        EXP -->|collect results| EXP
    end

    style C fill:#fff4e1
    style AS fill:#fff4e1
    style A fill:#e1f5ff
    style Q fill:#e1f5ff
    style EXP fill:#f0f0f0
Loading

By Role

Core Runtime Components

These run continuously to serve queries:

  • asap-query-engine - Answers PromQL queries using sketches

    • Consumes sketches from Kafka
    • Implements Prometheus HTTP API
    • Forwards unsupported queries to Prometheus
  • Arroyo - Builds sketches from metrics streams

    • Receives Prometheus remote write
    • Executes SQL pipelines
    • Produces sketches to Kafka

Configuration Components

These run once to set up the system:

  • asap-planner-rs - Determines optimal sketch parameters

    • Analyzes query workload
    • Selects sketch algorithms
    • Generates configs for Arroyo and QueryEngine
  • asap-summary-ingest - Creates Arroyo pipelines

    • Reads streaming_config.yaml
    • Renders SQL templates
    • Creates pipelines via Arroyo API

Testing & Research Components

These are used for development and experiments:

  • Exporters - Generate synthetic metrics

    • Fake exporters with configurable cardinality
    • Real trace data exporters
    • Performance monitoring exporters
  • asap-tools - Experiment orchestration

    • Deploy ASAP to CloudLab
    • Run controlled experiments
    • Collect and analyze results

By Language

Rust Components

Performance-critical components written in Rust:

  • asap-query-engine - Sub-millisecond query execution
  • Arroyo - High-throughput stream processing
  • Fake Exporters - Fast metric generation

Python Components

Configuration and orchestration in Python:

  • asap-planner-rs - Query analysis and config generation
  • asap-summary-ingest - Pipeline configuration
  • asap-tools - Experiment framework
  • Python Exporters - Simpler metric generators

Component Dependencies

asap-query-engine
├── Kafka (runtime) - Consumes sketches
├── Prometheus (runtime, optional) - Fallback queries
└── inference_config.yaml (config) - From asap-planner-rs

Arroyo
├── Prometheus (runtime) - Remote write source
├── Kafka (runtime) - Sketch output
└── SQL pipelines (config) - From asap-summary-ingest

asap-summary-ingest
├── Arroyo (runtime) - Creates pipelines via API
└── streaming_config.yaml (config) - From asap-planner-rs

asap-planner-rs
├── controller-config.yaml (input) - User-provided
├── streaming_config.yaml (output) - For asap-summary-ingest
└── inference_config.yaml (output) - For asap-query-engine

Exporters
└── (standalone, no dependencies)

asap-tools
├── All components (deploys and orchestrates)
└── Hydra configs (experiment specifications)

Component Documentation

Detailed Component Docs

Component-Specific READMEs

For implementation details, see READMEs co-located with code: