helix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ol...@apache.org
Subject [2/3] git commit: fix links
Date Tue, 23 Oct 2012 20:48:18 GMT
fix links


Project: http://git-wip-us.apache.org/repos/asf/incubator-helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-helix/commit/6fb00261
Tree: http://git-wip-us.apache.org/repos/asf/incubator-helix/tree/6fb00261
Diff: http://git-wip-us.apache.org/repos/asf/incubator-helix/diff/6fb00261

Branch: refs/heads/master
Commit: 6fb00261ed3919b77d06d332f7a54d69dafe0ebb
Parents: e981438
Author: olivier lamy <olamy@apache.org>
Authored: Tue Oct 23 22:44:05 2012 +0200
Committer: olivier lamy <olamy@apache.org>
Committed: Tue Oct 23 22:44:05 2012 +0200

----------------------------------------------------------------------
 src/site/markdown/Home.md  |  135 ---------------------------------------
 src/site/markdown/index.md |   13 ++--
 src/site/site.xml          |    9 +++
 3 files changed, 15 insertions(+), 142 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/6fb00261/src/site/markdown/Home.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/Home.md b/src/site/markdown/Home.md
deleted file mode 100644
index 0381cdb..0000000
--- a/src/site/markdown/Home.md
+++ /dev/null
@@ -1,135 +0,0 @@
-Pages
----------------
-* [Home][]
-* [SampleApp][]
-* [Quickstart][]
-* [Architecture][]
-* [Features][]
-* [ApiUsage][]
-* [Javadocs][]
-* [UseCases][]
-
-WHAT IS HELIX
---------------
-Helix is a generic cluster management framework used for the automatic management of partitioned,
replicated and distributed resources hosted on a cluster of nodes. Helix provides the following
features: 
-
-1. Automatic assignment of resource/partition to nodes
-2. Node failure detection and recovery
-3. Dynamic addition of Resources 
-4. Dynamic addition of nodes to the cluster
-5. Pluggable distributed state machine to manage the state of a resource via state transitions
-6. Automatic load balancing and throttling of transitions 
-
------
-
-OVERVIEW
--------------
-Helix uses terms that are commonly used to describe distributed data system concepts. 
-
-1. Cluster: A logical set of Instances that perform a similar set of activities. 
-2. Instance: An Instance is a logical entity in the cluster that can be identified by a unique
Id. 
-3. Node: A Node is a physical entity in the cluster. A Node can have one or more logical
Instances. 
-4. Resource: A resource represents the logical entity hosted by the distributed system. It
can be a database name, index or a task group name 
-5. Partition: A resource is generally split into one or more partitions.
-6. Replica: Each partition can have one or more replicas
-7. State: Each replica can have state associated with it. For example: Master, Slave, Leader,
Stand By, Offline, Online etc. 
-
-To summarize, a resource (database, index or any task) in general is partitioned, replicated
and distributed among the Instance/nodes in the cluster and each partition has a state associated
with it. 
-
-Helix manages the state of a resource by supporting a pluggable distributed state machine.
One can define the state machine table along with the constraints for each state. 
-
-Here are some common state models used
-
-1. Master, Slave
-2. Online, Offline
-3. Leader, Standby.
-
-For example in the case of a MasterSlave state model one can specify the state machine as
follows. The table says given a start state and an end state what should be the next state.

-For example, if the current state is Offline and the target state is Master, the table says
that the next state is Slave.  So in this case, Helix issues an Offline-Slave transition
-
-<pre><code>
-          OFFLINE  | SLAVE  |  MASTER  
-         _____________________________
-        |          |        |         |
-OFFLINE |   N/A    | SLAVE  | SLAVE   |
-        |__________|________|_________|
-        |          |        |         |
-SLAVE   |  OFFLINE |   N/A  | MASTER  |
-        |__________|________|_________|
-        |          |        |         |
-MASTER  | SLAVE    | SLAVE  |   N/A   |
-        |__________|________|_________|
-
-</code></pre>
-
-Helix also supports the ability to provide constraints on each state. For example in a MasterSlave
state model with a replication factor of 3 one can say 
-
-    MASTER:1 
-    SLAVE:2
-
-Helix will automatically maintain 1 Master and 2 Slaves by initiating appropriate state transitions
on each instance in the cluster. 
-
-Each transition results in a partition moving from its CURRENT state to a NEW state. These
transitions are triggered on changes in the cluster state like 
-
-* Node start up
-* Node soft and hard failures 
-* Addition of resources
-* Addition of nodes
-
-In simple words, Helix is a distributed state machine with support for constraints on each
state.
-
-Helix framework can be used to build distributed, scalable, elastic and fault tolerant systems
by configuring the distributed state machine and its constraints based on application requirements.
The application has to provide the implementation for handling state transitions appropriately.
Example 
-
-Once the state machine and constraints are configured through Helix, application will have
the provide implementation to handle the transitions appropriately.  
-
-<pre><code>
-MasterSlaveStateModel extends HelixStateModel {
-
-  void onOfflineToSlave(Message m, NotificationContext context){
-    print("Transitioning from Offline to Slave for resource:"+ m.getResourceName() + " and
partition:"+ m.getPartitionName());
-  }
-  void onSlaveToMaster(Message m, NotificationContext context){
-    print("Transitioning from Slave to Master for resource:"+ m.getResourceName() + " and
partition:"+ m.getPartitionName());
-  }
-  void onMasterToSlave(Message m, NotificationContext context){
-    print("Transitioning from Master to Slave for resource:"+ m.getResourceName() + " and
partition:"+ m.getPartitionName());
-  }
-  void onSlaveToOffline(Message m, NotificationContext context){
-    print("Transitioning from Slave to Offline for resource:"+ m.getResourceName() + " and
partition:"+ m.getPartitionName());
-  }
-}
-</code></pre>
-
-Once the state machine is configured, the framework allows one to 
-
-* Dynamically add nodes to the cluster
-* Automatically modify the topology(rebalance partitions) of the cluster  
-* Dynamically add resources to the cluster
-* Enable/disable partition/instances for software upgrade without impacting availability.
-
-Helix uses Zookeeper for maintaining the cluster state and change notifications.
-
-WHY HELIX
--------------
-Helix approach of using a distributed state machine with constraints on state and transitions
has benefited us in multiple ways.
-
-* Abstract cluster management aspects from the core functionality of DDS.
-* Each node in DDS is not aware of the global state since they simply have to follow . This
proved quite useful since we could deploy the same system in different topologies.
-* Since the controller's goal is to satisfy state machine constraints at all times, use cases
like cluster startup, node failure, cluster expansion are solved in a similar way.
-
-At LinkedIn, we have been able to use this to manage 3 different distributed systems that
look very different on paper.  
-
-----------------
-[Home]:wiki/Home "Introduction"
-[SampleApp]:wiki/Sample_App "Sample Application"
-[Quickstart]: wiki/Quickstart "Quick Start Guide"
-[Architecture]: wiki/Architecture "Helix Architecture"
-[Features]: wiki/Features "Features"
-[ApiUsage]: wiki/ApiUsage "Api usage"
-[Javadocs]: http://linkedin.github.com/helix/apidocs/
-[UseCases]: wiki/UseCases "Some usecases at LinkedIn"
-
-
-
-
-   
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/6fb00261/src/site/markdown/index.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/index.md b/src/site/markdown/index.md
index 0381cdb..585a580 100644
--- a/src/site/markdown/index.md
+++ b/src/site/markdown/index.md
@@ -1,13 +1,12 @@
 Pages
 ---------------
-* [Home][]
-* [SampleApp][]
-* [Quickstart][]
-* [Architecture][]
-* [Features][]
-* [ApiUsage][]
+* [SampleApp](./Sample_App.html)
+* [Quickstart](./Quickstart.html)
+* [Architecture](./Architecture.html)
+* [Features](./Features.html)
+* [ApiUsage](./ApiUsage.html)
 * [Javadocs][]
-* [UseCases][]
+* [UseCases](./UseCases.html)
 
 WHAT IS HELIX
 --------------

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/6fb00261/src/site/site.xml
----------------------------------------------------------------------
diff --git a/src/site/site.xml b/src/site/site.xml
index 61162c6..336d2eb 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -32,6 +32,15 @@
       <item name="Apache Helix" href="http://helix.incubator.apache.org/"/>
     </breadcrumbs>
 
+    <menu name="Helix">
+      <item name="About" href="./index.html"/>
+      <item name="Quick Start" href="./Quickstart.html"/>
+      <item name="Api Usage" href="./ApiUsage.html"/>
+      <item name="Architecture" href="./Architecture.html"/>
+      <item name="Features" href="./Features.html"/>
+      <item name="Sample App" href="./Sample_App.html"/>
+      <item name="Use Cases" href="./UseCases.html"/>
+    </menu>
 
     <menu ref="reports" inherit="bottom"/>
     <menu ref="modules" inherit="bottom"/>


Mime
View raw message