You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2015/06/22 20:41:01 UTC

[jira] [Commented] (HELIX-599) Support creating/maintaining/routing resources with same names in different instance groups

    [ https://issues.apache.org/jira/browse/HELIX-599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14596405#comment-14596405 ] 

ASF GitHub Bot commented on HELIX-599:
--------------------------------------

GitHub user lei-xia opened a pull request:

    https://github.com/apache/helix/pull/31

    [HELIX-599] Support creating/maintaining/routing resources with same names in different instance groups.

    
    More details on the problems and our proposed solution is on the jira description: https://issues.apache.org/jira/browse/HELIX-599

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/lei-xia/helix helix-0.6.x

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/helix/pull/31.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #31
    
----
commit 2f88e070fb698c1420873c1bffa63640638de1ba
Author: Lei Xia <lx...@linkedin.com>
Date:   2015-05-11T17:54:27Z

    [HELIX-599] Support creating/maintaining/routing resources with same names in different instance groups.

----


> Support creating/maintaining/routing resources with same names in different instance groups
> -------------------------------------------------------------------------------------------
>
>                 Key: HELIX-599
>                 URL: https://issues.apache.org/jira/browse/HELIX-599
>             Project: Apache Helix
>          Issue Type: New Feature
>          Components: helix-core, helix-webapp-admin
>            Reporter: Lei Xia
>            Assignee: Lei Xia
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> In LinkedIn, we have a new use scenario that there will be multiple databases sitting in the same Helix cluster with the same name, but on different instance groups.  What we need are:
>  1) Allow resources (databases) with the same name, these resources are on different instance groups (with different tags).
>  2) Routing table (Spectator) is able to aggregate and return all instance (from multiple instance groups) that hold the database with given name.
> Our proposed solution is:
>  1) Add a "Resource Group" field in IdealState for the databases with the same names from different instance groups
>  2) Use Instance Group Tag (or new "Resource Tag") to differentiate databases (with same name) from different instance groups.
>  3) Use name mangling for Idealstate, for example, with database TestDB in instance group "testGroup", the IdealState and ExternalView id would be "TestDB$testGroup". 
>  4) Change Helix Routing Table to be able to aggregate databases from the same resource group.
>  
> Four new APIs are going to be added to RoutingTableProvider:
> public class RoutingTableProvider {
>  
> /**
>  * returns the instances that contain the given partition in a specific state from all resources with given resource name
>  */
> public List<InstanceConfig> getInstances(String resource, String partition, String state);
>  
> /**
>  * returns the instances that contain the given partition in a specific state from selected resources with given name and tags
>  */
> public List<InstanceConfig> getInstances(String resource, String partition, String state, List<String> resourceTags);
>  
> /**
>  * returns instances that contain given resource that are in a specific state
>  */
> public Set<InstanceConfig> getInstances(String resource, String state);
>  
> /**
>  * returns instances that contain given resource with tags that are in a specific state
>  */
> public Set<InstanceConfig> getInstances(String resource, String state,  List<String> groupTags);
> }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)