[ 
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)

Reply via email to