Apache Helix has two new releases:
0.7.0-incubating - A release that includes high-level APIs to logically interact with Participants, Controllers, Resources, and other Helix constructs. This release is an alpha and APIs are in the process of being finalized. Feel free to play with it and provide any feedback you have! [Release Notes]
Helix is a generic cluster management framework used for the automatic management of partitioned, replicated and distributed resources hosted on a cluster of nodes.
To understand Helix, first you need to understand cluster management. A distributed system typically runs on multiple nodes for the following reasons:
Each node performs one or more of the primary function of the cluster, such as storing and serving data, producing and consuming data streams, and so on. Once configured for your system, Helix acts as the global brain for the system. It is designed to make decisions that cannot be made in isolation. Examples of such decisions that require global knowledge and coordination:
While it is possible to integrate these functions into the distributed system, it complicates the code. Helix has abstracted common cluster management tasks, enabling the system builder to model the desired behavior with a declarative state model, and let Helix manage the coordination. The result is less new code to write, and a robust, highly operable system.
Modeling a distributed system as a state machine with constraints on states and transitions has the following benefits:
Requirements: JDK 1.6+, Maven 2.0.8+
git clone https://git-wip-us.apache.org/repos/asf/incubator-helix.git cd incubator-helix git checkout tags/helix-0.6.2-incubating mvn install package -DskipTests
<dependency> <groupId>org.apache.helix</groupId> <artifactId>helix-core</artifactId> <version>0.6.2-incubating</version> </dependency>