Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Whether contain spring-cloud-loadbalancer dependency in nacos-discovery module #3115

Open
steverao opened this issue Jan 28, 2023 · 2 comments
Labels
good first issue kind/discussion Mark as discussion issues/pr

Comments

@steverao
Copy link
Collaborator

steverao commented Jan 28, 2023

Which Component
eg. Nacos Discovery

Describe what problem you have encountered
In relevant versions of spring-cloud-starter-alibaba-nacos-discovery from branch of 2.2.x, we add following dependency in it.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

For outside user, they just need to add spring-cloud-starter-alibaba-nacos-discovery, then can call downstream service directly.
But in relevant versions of spring-cloud-starter-alibaba-nacos-discovery from branch of 2021.x, Spring Cloud remove Ribbon from 2020.0.0, we did some adjustments, we use following loadbalancer module replacing Ribbon:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-loadbalancer</artifactId>
    <optional>true</optional>
</dependency>

This piece is consistent with spring-cloud-netflix-eureka-client. Because of the optional attribute set to true, users need to add spring-cloud-starter-alibaba-nacos-discovery in addition to adding spring-cloud-loadbalancer to new applications manually. Otherwise the application cannot normally consume services. Setting the optional attribute to true in spring-cloud-starter-alibaba-nacos-discovery has the following benefits:

  1. Reduce the size of the spring-cloud-starter-alibaba-nacos-discovery dependency report. If the application is not a consumer, it does not need to add redundant spring-cloud-loadbalancer dependencies.
  2. Let the user clearly know what load balancing component he/she is using.

shortcoming:

  1. The threshold for application construction has been raised. For beginners of Spring Cloud, it is easy to forget the spring-cloud-loadbalancer dependency for the first time.

Some users suggested that the community remove optional attributes from subsequent versions in branch of 2021.x, so that they no longer need to manually add spring-cloud-loadbalancer dependencies. What do you think?

@steverao steverao added good first issue kind/discussion Mark as discussion issues/pr labels Jan 28, 2023
@DanielLiu1123
Copy link
Collaborator

Agree

@yuluo-yx
Copy link
Collaborator

Yes, when I first started learning about spring-cloud, I would look at sample demos or watch instructional videos, or look up examples on github to build apps. There are very few problems with forgetting to add dependencies, copy and paste is always the best option for me. I think this kind of problem is more likely to occur when legacy systems are upgraded or version updated.
I agree with this, and I want to be able to control what dependencies are used in the application I'm building, otherwise there will be a lot of trouble if something goes wrong.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue kind/discussion Mark as discussion issues/pr
Projects
None yet
Development

No branches or pull requests

3 participants