You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by "Lei Xia (JIRA)" <ji...@apache.org> on 2015/11/08 07:36:11 UTC
[jira] [Closed] (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:all-tabpanel ]
Lei Xia closed HELIX-599.
-------------------------
Resolution: Fixed
Fix Version/s: 0.6.5
> 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
> Fix For: 0.6.5
>
> 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)