feature 2023.x: Expand NacosLoadBalancer to conveniently support custom service list filtering and load balancing algorithms #3794
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Expand NacosLoadBalancer to conveniently support custom service list filtering and load balancing algorithms
Describe what this PR does / why we need it
At present, neither the official loadbalancer provided by Spring Cloud nor the existing NacosLoadBalancer can meet personalized load balancing requirements.
In order to conveniently and quickly meet various personalized load balancing needs, NacosLoadBalancer has been extended to support custom service list filters and custom load balancing algorithms.
Does this pull request fix one issue?
NONE
Describe how you did it
com.alibaba.cloud.nacos.loadbalancer.ServiceInstanceFilter
to expand the service list filter.com.alibaba.cloud.nacos.loadbalancer.LoadBalancerAlgorithm
to expand the load balancing algorithm.com.alibaba.cloud.nacos.loadbalancer.DefaultLoadBalancerAlgorithm
implementation of default load balancing algorithm, and register as a Bean in LoadBalancerNacosAutoConfiguration.NacosLoadBalancer
, and add relevant logic for custom service list filtering and custom load balancing algorithm in the getInstanceResponse method.Describe how to verify it
spring.cloud.loadbalance.nacos.enabled
totrue
to enable NacosLoadBalancer.ServiceInstanceFilter
and register it as a bean.LoadBalancerAlgorithm
and register it as a bean.Special notes for reviews
NONE