---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/flow/about.md
  - https://ytsaurus.tech/docs/ru/flow/about.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/en/llms.txt

<!-- source: en/_includes/flow/about.md -->
# What is YTsaurus Flow?

YTsaurus Flow is a framework for streaming cross-DC event processing with exactly-once guarantees within the YTsaurus ecosystem. It offers APIs for [C++](https://ytsaurus.tech/docs/en/flow/cpp/getting-started.md), [Java and Kotlin](https://ytsaurus.tech/docs/en/flow/java/getting-started.md), [Python](https://ytsaurus.tech/docs/en/flow/python/getting-started.md), and [Go](https://ytsaurus.tech/docs/en/flow/go/getting-started.md), and supports declarative pipeline descriptions in [YQL](https://ytsaurus.tech/docs/en/flow/yql/getting-started.md).

Its closest external counterparts are [Google Cloud Dataflow](https://cloud.google.com/products/dataflow?skip_cache=true%22%22) and [Apache Flink](https://flink.apache.org/).

The system is under active development, but more than ten teams have already built their production processes on it. The system can reliably:

- Handle loads exceeding 100 GB/s or 1 million events per second.
- Support 150+ logical pipeline nodes.

## Contacts {#contact}

For any issues with YTsaurus Flow, open a [GitHub Issue](https://github.com/ytsaurus/ytsaurus/issues).

## System properties {#properties}

<!-- Supported order of properties: product-relevant, technical guarantees, infrastructure. -->

- Native support for multi-stage [pipelines](https://ytsaurus.tech/docs/en/flow/concepts/glossary.md#pipeline). As a result, you get simpler deployment and system management.
- Support for [watermarks](https://ytsaurus.tech/docs/en/flow/concepts/watermarks.md) and [timers](https://ytsaurus.tech/docs/en/flow/concepts/timers.md).
- [Exactly-once semantics](https://ytsaurus.tech/docs/en/flow/concepts/guarantees.md) for event processing by default.
- Typical event processing latency under stable operation: 1s–10s.
- Automatic balancing of [partitions](https://ytsaurus.tech/docs/en/flow/concepts/glossary.md#partition) across machines.
- Fault tolerance: the pipeline survives the failure of individual machines and data centers.
- Ability to implement business logic in [C++](https://ytsaurus.tech/docs/en/flow/cpp/getting-started.md), [Java and Kotlin](https://ytsaurus.tech/docs/en/flow/java/getting-started.md), [Python](https://ytsaurus.tech/docs/en/flow/python/getting-started.md), [Go](https://ytsaurus.tech/docs/en/flow/go/getting-started.md), and [YQL](https://ytsaurus.tech/docs/en/flow/yql/getting-started.md).
- Support for [stateful processing](https://ytsaurus.tech/docs/en/flow/concepts/stateful.md) with persistent state in YTsaurus dynamic tables.
- Support for running in YTsaurus.

<!-- source: en/_includes/flow/language-choice.md -->
## Choose a language {#choose-language}

Flow supports several languages for implementing business logic:

- **[C++](https://ytsaurus.tech/docs/en/flow/cpp/getting-started.md)** — native implementation, maximum performance, full control. Use this for high-load pipelines.
- **[Java and Kotlin](https://ytsaurus.tech/docs/en/flow/java/getting-started.md)** — run via the [companion](https://ytsaurus.tech/docs/en/flow/concepts/companion.md) mechanism. They support Spring Boot. These are suitable for teams with a JVM stack.
- **[Python](https://ytsaurus.tech/docs/en/flow/python/getting-started.md)** — runs via the [companion](https://ytsaurus.tech/docs/en/flow/concepts/companion.md) mechanism. This is the easiest way to prototype a pipeline or process a small data stream.
- **[Go](https://ytsaurus.tech/docs/en/flow/go/getting-started.md)** — runs via the [companion](https://ytsaurus.tech/docs/en/flow/concepts/companion.md) mechanism. A single binary runs the pipeline and acts as a companion in the job. Suitable for teams with a Go stack.
- **[YQL](https://ytsaurus.tech/docs/en/flow/yql/getting-started.md)** — declarative pipeline description as an SQL query. It has a low entry barrier and doesn’t require writing code in C++, Java, Kotlin, Go, or Python. It’s under active development, and not all planned features are available yet.
<!-- endsource: en/_includes/flow/language-choice.md -->

## Target system properties {#target-properties}

- Smart planning of the entire pipeline, taking into account CPU/RAM consumption of individual pipeline nodes and shared resources (common caches, databases, etc.) used by multiple nodes.
- Ability to run pipelines on clusters with thousands of nodes or more.
- Minimal downtime when nodes, DCs, or clusters fail, as well as during updates.

## See also {#see-also}

- [Getting started](https://ytsaurus.tech/docs/en/flow/start.md)
- [Quick start](https://ytsaurus.tech/docs/en/flow/quickstart.md)
- [Basic concepts](https://ytsaurus.tech/docs/en/flow/concepts/glossary.md)
- [Task examples](https://ytsaurus.tech/docs/en/flow/tasks.md)
- [Flow releases](https://github.com/ytsaurus/ytsaurus/releases?q=tag%3Aflow%2F0&expanded=true)
<!-- endsource: en/_includes/flow/about.md -->
