phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <>
Subject [jira] [Commented] (PHOENIX-3654) Load Balancer for thin client
Date Mon, 24 Jul 2017 15:34:01 GMT


ASF GitHub Bot commented on PHOENIX-3654:

Github user joshelser commented on a diff in the pull request:
    --- Diff: phoenix-core/src/main/java/org/apache/phoenix/query/
    @@ -284,14 +288,18 @@
         public static final int DEFAULT_COLUMN_ENCODED_BYTES = QualifierEncodingScheme.TWO_BYTE_QUALIFIERS.getSerializedMetadataValue();
         public static final String DEFAULT_IMMUTABLE_STORAGE_SCHEME = ImmutableStorageScheme.SINGLE_CELL_ARRAY_WITH_OFFSETS.toString();
         public static final String DEFAULT_MULTITENANT_IMMUTABLE_STORAGE_SCHEME = ImmutableStorageScheme.ONE_CELL_PER_COLUMN.toString();
    +    public  final static String DEFAULT_PHOENIX_QUERY_SERVER_CLUSTER_BASE_PATH = "/phoenix";
    +    public  final static String DEFAULT_PHOENIX_QUERY_SERVER_SERVICE_NAME = "queryserver";
    +    public  final static String DEFAULT_PHOENIX_QUERY_SERVER_ZK_ACL_USERNAME = "phoenixuser";
    +    public  final static String DEFAULT_PHOENIX_QUERY_SERVER_ZK_ACL_PASSWORD = "Xsjdhxsd";
    --- End diff --
    I think we should just change this to be something simple like "phoenix/phoenix" instead
of "phoenixuser/Xsjdhxsd" (the public random text is no-more secure than an easily remember-able
    We also need to document how users are expected to secure this (property to set in hbase-site.xml,
make sure hbase-site.xml is not globally readable, etc). I'm seeing down below that there
is not support for SASL ACLs -- that will also need to be documented as a limitation.

> Load Balancer for thin client
> -----------------------------
>                 Key: PHOENIX-3654
>                 URL:
>             Project: Phoenix
>          Issue Type: New Feature
>    Affects Versions: 4.8.0
>         Environment: Linux 3.13.0-107-generic kernel, v4.9.0-HBase-0.98
>            Reporter: Rahul Shrivastava
>            Assignee: Rahul Shrivastava
>         Attachments: LoadBalancerDesign.pdf, Loadbalancer.patch
>   Original Estimate: 240h
>  Remaining Estimate: 240h
> We have been having internal discussion on load balancer for thin client for PQS. The
general consensus we have is to have an embedded load balancer with the thin client instead
of using external load balancer such as haproxy. The idea is to not to have another layer
between client and PQS. This reduces operational cost for system, which currently leads to
delay in executing projects.
> But this also comes with challenge of having an embedded load balancer which can maintain
sticky sessions, do fair load balancing knowing the load downstream of PQS server. In addition,
load balancer needs to know location of multiple PQS server. Now, the thin client needs to
keep track of PQS servers via zookeeper ( or other means). 
> In the new design, the client ( PQS client) , it is proposed to  have an embedded load
> Where will the load Balancer sit ?
> The load load balancer will embedded within the app server client.  
> How will the load balancer work ? 
> Load balancer will contact zookeeper to get location of PQS. In this case, PQS needs
to register to ZK itself once it comes online. Zookeeper location is in hbase-site.xml. It
will maintain a small cache of connection to the PQS. When a request comes in, it will check
for an open connection from the cache. 
> How will load balancer know load on PQS ?
> To start with, it will pick a random open connection to PQS. This means that load balancer
does not know PQS load. Later , we can augment the code so that thin client can receive load
info from PQS and make intelligent decisions.  
> How will load balancer maintain sticky sessions ?
> While we still need to investigate how to implement sticky sessions. We can look for
some open source implementation for the same.
> How will PQS register itself to service locator ?
> PQS will have location of zookeeper in hbase-site.xml and it would register itself to
the zookeeper. Thin client will find out PQS location using zookeeper.

This message was sent by Atlassian JIRA

View raw message