You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@dubbo.apache.org by "Huxing Zhang (JIRA)" <ji...@apache.org> on 2019/04/02 02:06:00 UTC

[jira] [Commented] (DUBBO-34) GSoC 2019: New Load Balancer for higher availability and resilience.

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

Huxing Zhang commented on DUBBO-34:
-----------------------------------

Hi Daniela,

Looking at the proposal of this idea, the goal is to choose one server based on statistics, random is one of the strategy but it is not the goal of this proposal. I think you should focus on what data should be collected to help you make the decision and how to collect it. When you are collecting data, keep in mind that will have cost, e.g. memory/cpu consumption, there should be a balance.

Regarding the how to choose server, non of them are implemented yet, I think the first three items is enough for this idea.  

> GSoC 2019: New Load Balancer for higher availability and resilience.
> --------------------------------------------------------------------
>
>                 Key: DUBBO-34
>                 URL: https://issues.apache.org/jira/browse/DUBBO-34
>             Project: Apache Dubbo
>          Issue Type: Task
>            Reporter: Jun Liu
>            Priority: Major
>              Labels: GSoC2019
>
> This is an idea for Google Summer of Code (GSoC). Get to know about Dubbo[0].
> As an RPC framework, LoadBalance is a key part of Dubbo for distributing traffics among servers. Below are the built-in strategies already supported:
> * Round Robin
> * Least Active
> * Consistent Hash
> * Random
> Now, we are considering some more intelligent and adaptive strategies that can learn the healthy status of servers at runtime and automatically adjust traffic distributions, something like P2C for Finagle[1 ]and JSQ for Netflix[2].
> 0. https://issues.apache.org/jira/browse/DUBBO-33.
> 1. https://twitter.github.io/finagle/guide/Clients.html.
> 2. https://medium.com/netflix-techblog/netflix-edge-load-balancing-695308b5548c. 
> How to achieve it, guidance for your reference:  
> The new load-balancing strategy should be able to automatically isolate abnormal instances based on the statistics of the load or health status of the back-end Provider instance. This ensures that traffic is forwarded to the processing-capable instance. The load balancer should also know when to recover,  periodically checks the health status of the isolated instances, put back the instance into the normal instance pool to be scheduled once it's recovered. 
> A quite similar project is [Circuit Breaker|http://example.com], except that circuit breaker treats the downstream cluster as a whole while this Load Balancer needs to distinguish the state of each instance.
> This topic can be achieved by extending the [LoadBalance|https://github.com/apache/incubator-dubbo/blob/master/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/LoadBalance.java] SPI.
> To provide the basic statistics for LB to make a decision, you may need to count the data of each RPC request, such as QPS, RT, Active Request, etc. This can be achieved by extending the [Filter|https://github.com/apache/incubator-dubbo/blob/master/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Filter.java] SPI. For more details, see How [MetricsFilter|http://example.com] does it.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)