Unofficial Rust implementation of the Feast feature server with focus on performance.
- Online feature retrieval via HTTP REST API.
- Online feature retrieval via gRPC API
- TLS support for both HTTP and gRPC servers.
- Metrics endpoint for Prometheus scraping.
- Health check endpoint.
Supported feature stores:
- File stores: local filesystem, GCS, S3.
Supported online stores:
- Sqlite.
- Redis
- Available Redis modes: single node, cluster, and sentinel.
- TLS connections are supported.
- For available config options, see the
CommonConnectionOptionsstruct in the source code.
Internally, interned strings are used for better performance. Theoretically, this could lead to an out-of-memory error, but this should not be a problem in standard use cases.
Easiest way to test the server is to use the pull docker image from docker hub.
docker pull pbezglasny/feast-server-rust:latestOr build the docker image locally
docker build -t feast-feature-server-rust:latest .feast-server-core: core feature-store domain logic (registry access, online store abstraction, protobuf helpers).rest-server: Axum-based HTTP server that exposes online feature retrieval endpoints.grpc-server: tonic-based gRPC server scaffolding.cli: command-line entrypoint that wires configuration, logging, and server startup.
- Rust toolchain (stable) with
cargoandrustfmt. You can install it using rustup.
- Point the CLI at a feature repository. Either change into the repo directory or pass it explicitly:
You can also use
FEATURE_REPO_DIR_ENV_VAR=<path-to-your-feature-repo> \ cargo run -p cli -- serve -h 0.0.0.0 -p 6566
--chdir <path>or--feature-store-yaml <file>to override the repository root andfeature_store.yamlfilename. These options can also be set via theFEATURE_REPO_DIR_ENV_VARandFEAST_FS_YAML_FILE_PATHenvironment variables, respectively. - Optional flags:
--metricsenables a/metricsendpoint backed byaxum-prometheus.--keyand--certmust be provided together to serve over TLS.--type grpcis accepted by the CLI, but the gRPC server is not implemented yet.
When the server starts it exposes:
POST /get-online-featuresexpecting a FeastGetOnlineFeaturesRequestpayload and returning the online feature vector.GET /healthfor readiness checks (HTTP 200 on success).GET /metricswhen metrics are enabled.
- Format:
cargo fmt --all - Lint:
cargo clippy --all-targets --all-features -- -D warnings - Test:
cargo test --all