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

ASF GitHub Bot commented on PHOENIX-3654:
-----------------------------------------

Github user joshelser commented on a diff in the pull request:

    https://github.com/apache/phoenix/pull/236#discussion_r129068605
  
    --- Diff: phoenix-load-balancer/pom.xml ---
    @@ -0,0 +1,84 @@
    +<?xml version='1.0'?>
    +<!--
    +
    + Licensed to the Apache Software Foundation (ASF) under one
    + or more contributor license agreements.  See the NOTICE file
    + distributed with this work for additional information
    + regarding copyright ownership.  The ASF licenses this file
    + to you under the Apache License, Version 2.0 (the
    + "License"); you may not use this file except in compliance
    + with the License.  You may obtain a copy of the License at
    +
    +   http://www.apache.org/licenses/LICENSE-2.0
    +
    + Unless required by applicable law or agreed to in writing,
    + software distributed under the License is distributed on an
    + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    + KIND, either express or implied.  See the License for the
    + specific language governing permissions and limitations
    + under the License.
    +
    +-->
    +
    +<project xmlns="http://maven.apache.org/POM/4.0.0";
    +         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    +         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
    +  <modelVersion>4.0.0</modelVersion>
    +  <parent>
    +    <groupId>org.apache.phoenix</groupId>
    +    <artifactId>phoenix</artifactId>
    +    <version>4.11.0-HBase-1.3-SNAPSHOT</version>
    +  </parent>
    +  <artifactId>phoenix-load-balancer</artifactId>
    +  <name>Phoenix Load Balancer</name>
    +  <description>A Load balancer which routes calls to Phoenix Query 
Server</description>
    +
    +  <dependencies>
    +    <dependency>
    +      <groupId>org.apache.hbase</groupId>
    +      <artifactId>hbase-common</artifactId>
    --- End diff --
    
    It looks like you're using a bunch of dependencies transitively. This will 
work for now, but is brittle in the long term.
    
    We should make sure that this module depends directly on all of the 
dependencies that it uses instead of relying on another dependency bringing 
them in. Can do this later though.


> Load Balancer for thin client
> -----------------------------
>
>                 Key: PHOENIX-3654
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3654
>             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 balancer.
> 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
(v6.4.14#64029)

Reply via email to