Retour au classement

A lightweight stream processing library for Go

stream-processingpipelineetlkafkadata-streamkafka-streamsstreamsredispulsardata-pipelinestreaming-datastream-processor
Croissance des étoiles
Étoiles
2.2k
Forks
174
Croissance hebdomadaire
Issues
4
1k2k
mai 2019sept. 2021févr. 2024juil. 2026
ArtefactsGo Modulesgo get github.com/reugn/go-streams
README

go-streams

Build PkgGoDev Go Report Card codecov

go-streams provides a lightweight and efficient stream processing framework for Go. Its concise DSL allows for easy definition of declarative data pipelines using composable sources, flows, and sinks.

pipeline-architecture-example

Wiki
In computing, a pipeline, also known as a data pipeline, is a set of data processing elements connected in series, where the output of one element is the input of the next one. The elements of a pipeline are often executed in parallel or in time-sliced fashion. Some amount of buffer storage is often inserted between elements.

Overview

The core module has no external dependencies and provides three key components for constructing stream processing pipelines:

  • Source: The entry point of a pipeline, emitting data into the stream. (One open output)
  • Flow: A processing unit, transforming data as it moves through the pipeline. (One open input, one open output)
  • Sink: The termination point of a pipeline, consuming processed data and often acting as a subscriber. (One open input)

Flows

The flow package provides a collection of Flow implementations for common stream processing operations. These building blocks can be used to transform and manipulate data within pipelines.

  • Map: Transforms each element in the stream.
  • FlatMap: Transforms each element into a stream of slices of zero or more elements.
  • Filter: Selects elements from the stream based on a condition.
  • Fold: Combines elements of the stream with the last folded value and emits the new value. Requires an initial value.
  • Reduce: Combines elements of the stream with the last reduced value and emits the new value. Does not require an initial value.
  • PassThrough: Passes elements through unchanged.
  • Split1: Divides the stream into two streams based on a boolean predicate.
  • FanOut1: Duplicates the stream to multiple outputs for parallel processing.
  • RoundRobin1: Distributes elements evenly across multiple outputs.
  • Merge1: Combines multiple streams into a single stream.
  • ZipWith1: Combines elements from multiple streams using a function.
  • Flatten1: Flattens a stream of slices of elements into a stream of elements.
  • Batch: Breaks a stream of elements into batches based on size or timing.
  • Throttler: Limits the rate at which elements are processed.
  • AdaptiveThrottler: Limits the rate at which elements are processed based on the current system resource utilization (CPU and memory usage).
  • SlidingWindow: Creates overlapping windows of elements.
  • TumblingWindow: Creates non-overlapping, fixed-size windows of elements.
  • SessionWindow: Creates windows based on periods of activity and inactivity.
  • Keyed: Groups elements by key for parallel processing of related data.

1 Utility Flows

Connectors

Standard Source and Sink implementations are located in the extension package.

  • Go channel inbound and outbound connector
  • File inbound and outbound connector
  • Standard Go io.Reader Source and io.Writer Sink connectors
  • os.Stdout and Discard Sink connectors (useful for development and debugging)

The following connectors are available as separate modules and have their own dependencies.

Usage Examples

See the examples directory for practical code samples demonstrating how to build complete stream processing pipelines, covering various use cases and integration scenarios.

License

Licensed under the MIT License.

Dépôts similaires
pathwaycom/pathway

Python ETL framework for stream processing, real-time analytics, LLM pipelines, and RAG.

PythonPyPIOtherbatch-processingkafka
pathway.com
62.6k1.7k
google-ai-edge/mediapipe

Cross-platform, customizable ML solutions for live and streaming media.

C++Apache License 2.0mediapipec-plus-plus
ai.google.dev/edge/mediapipe
36.2k6.1k
vectordotdev/vector

A high-performance observability data pipeline.

Rustcrates.ioMozilla Public License 2.0logsmetrics
vector.dev
22.2k2.2k
zhisheng17/flink-learning

flink learning blog. http://www.54tianzhisheng.cn/ 含 Flink 入门、概念、原理、实战、性能调优、源码解析等内容。涉及 Flink Connector、Metrics、Library、DataStream API、Table API & SQL 等内容的学习案例,还有 Flink 落地应用的大型项目案例(PVUV、日志存储、百亿数据实时去重、监控告警)分享。欢迎大家支持我的专栏《大数据实时计算引擎 Flink 实战与性能优化》

JavaMavenApache License 2.0flinkkafka
54tianzhisheng.cn/tags/Flink/
15.1k3.9k
oxnr/awesome-bigdata

A curated list of awesome big data frameworks, ressources and other awesomeness.

MIT Licenseawesomebigdata
github.com/onurakpolat/awesome-bigdata
14.5k2.6k
redpanda-data/redpanda

Redpanda is a streaming data platform for developers. Kafka API compatible. 10x faster. No ZooKeeper. No JVM!

C++kafkacpp
redpanda.com
12.4k772
madd86/awesome-system-design

A curated list of awesome System Design (A.K.A. Distributed Systems) resources.

Creative Commons Zero v1.0 Universalrelational-databasemessage-broker
12.3k1.3k
ThreeDotsLabs/watermill

Building event-driven applications the easy way in Go.

GoGo ModulesMIT Licensewatermillevent-driven
watermill.io
9.8k500
risingwavelabs/risingwave

Event streaming platform for agentic AI. Continuously ingest, transform, and serve event streams in real time, at scale.

Rustcrates.ioApache License 2.0databasestream-processing
go.risingwave.com/slack
9.2k800
redpanda-data/connect

Fancy stream processing made operationally mundane

GoGo Modulesmessage-queuestream-processing
docs.redpanda.com/connect/home/
8.7k951
fluent/fluent-bit

Fast and Lightweight Logs, Metrics and Traces processor for Linux, BSD, OSX and Windows

CApache License 2.0fluentdc
fluentbit.io
8k1.9k
robinhood/faust

Python Stream Processing

PythonPyPIOtherkafka-streamskafka
6.8k540