uber-go/go-helix — explained in plain English
Analysis updated 2026-08-08 · repo last pushed 2018-03-23
Add Go-based worker services to an existing Apache Helix-managed data pipeline.
Let a Go service receive ownership of stream partitions from a Helix controller.
Build Go participants that go online and offline as a Helix cluster rebalances partitions.
| uber-go/go-helix | mitchellh/go-libucl | openlibrecommunity/pxy | |
|---|---|---|---|
| Stars | 56 | 56 | 56 |
| Language | Go | Go | Go |
| Last pushed | 2018-03-23 | 2019-03-08 | — |
| Maintenance | Dormant | Dormant | — |
| Setup difficulty | hard | moderate | moderate |
| Complexity | 4/5 | 2/5 | 3/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires an already-running Apache Helix controller in Java plus a ZooKeeper cluster for coordination.
go-helix is a tool that helps different parts of a large application coordinate with each other. Specifically, it lets services written in Go join a cluster managed by Apache Helix, a system for distributing work across multiple machines. The key benefit is that a Go service can participate in a Helix-managed system without needing to be rewritten in Java, which is the language Apache Helix originally used. At a high level, Apache Helix divides a resource (like a database or a stream of data) into smaller pieces called partitions, then assigns those partitions to different machines, or "participants." This library implements the participant side of that equation. When you connect your Go service to a Helix cluster, the central Helix controller tells your service which partitions it owns. Your service defines what happens when it receives a partition (going from OFFLINE to ONLINE) and what happens when it loses one (going from ONLINE to OFFLINE). The library handles the communication with the controller through ZooKeeper, which acts as a shared coordination layer. This would be useful for teams already running Apache Helix clusters who want to build some of their participant services in Go instead of Java. For example, if you have a data pipeline where partitions of a stream are assigned to worker nodes, and you prefer Go for its performance or your team's familiarity with it, this library lets those Go workers plug directly into your existing Helix setup. The central controller still runs in Java, but the workers can be Go services. The project is currently in beta, meaning the APIs work but might change in future versions. The README notes that it only implements the participant part, not the controller side, so you still need a Java-based Helix controller to manage the cluster. The README doesn't go into much detail beyond the basic setup and connection flow, so you'd likely need to refer to the broader Apache Helix documentation to understand the full cluster management model.
go-helix lets services written in Go join an Apache Helix cluster as workers, so they can receive and manage partitions of a resource without being rewritten in Java.
Mainly Go. The stack also includes Go, Apache Helix, ZooKeeper.
Dormant — no commits in 2+ years (last push 2018-03-23).
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Don't trust strangers blindly. Verify against the repo.