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

[jira] [Closed] (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:all-tabpanel ]

Jun Liu closed DUBBO-34.
------------------------
    Resolution: Fixed

> 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
(v8.20.1#820001)