[ 
https://issues.apache.org/jira/browse/DUBBO-34?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jun Liu updated DUBBO-34:
-------------------------
    Description: 
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.


  was:
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. 




> 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