一、系统学习微服务遇到的问题集合

发布于:2024-06-24 ⋅ 阅读:(25) ⋅ 点赞:(0)

1、启动了nacos服务,没有在注册列表

应该是版本问题

Alibaba-nacos版本
nacos-文档
Spring Cloud Alibaba-中文
Spring-Cloud-Alibaba-英文

Spring-Cloud-Gateway

写的很好的一篇文章

在Spring initial上面配置

start.aliyun.com

重新下载
<

2、 No Feign Client for loadBalancing defined.

No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?

由于使用了 OpenFeigin, 引入依赖

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-loadbalancer</artifactId>
    <version>3.0.1</version>
</dependency>

3、NoClassDefFoundError org/springframework/boot/Bootstrapper

3.1 Spring Boot 依赖版本与 Spring Cloud Alibaba依赖版本不一致

在这里插入图片描述

根据版本表,配置springCloud,SpringBoot,CloudAlibaba

在这里插入图片描述

3.2 接着再启动报错:

The dependencies of some of the beans in the application context form a cycle:

| restTemplateController (field public org.springframework.web.client.RestTemplate com.example.cloud.demos.nacosdiscoveryconsumer.RestTemplateController.restTemplate)

在这里插入图片描述

在这个controller中,循环注入。

把这个移到其他类中。

3.3 Caused by: com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING

链接不上nacos服务器。这里有两个方面:

  • nacos服务端 2.0.x版本要开放 8848端口
  • nacos服务端为2.1.2 ,客户端降低版本至 1.4.1就OK了
 <dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>1.4.1</version>
</dependency>

现在在服务列表上就能看见注册信息了。

在这里插入图片描述

4、Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway.

Spring Cloud Gateway的项目中不能用 SpringMVC的依赖

在依赖中排除

<exclusions>
	<exclusion>
    	<groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-start-web</artifactId>
    </exclusion>
</exclusions>

5、Caused by: java.net.UnknownHostException: nacos-service

这个要加入依赖

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

5.1 You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.

启动带了@Loadbalanced 注解,就有这个提示。

  • 引入caffeine依赖
 <dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
    <version>2.9.3</version>
</dependency>

引入了依赖,还有这个提示日志

根据这个提示,找到了这个类 LoadBalancerCacheAutoConfiguration

static final class OnCaffeineCacheMissingCondition extends AnyNestedCondition {

		private OnCaffeineCacheMissingCondition() {
			super(ConfigurationPhase.REGISTER_BEAN);
		}

		@ConditionalOnMissingClass("com.github.benmanes.caffeine.cache.Caffeine")
		static class CaffeineClassMissing {

		}

		@ConditionalOnMissingClass("org.springframework.cache.caffeine.CaffeineCacheManager")
		static class CaffeineCacheManagerClassMissing {

		}

	}

根据这个丢失条件,Caffeine 这个类是caffeine依赖。而 CaffeineCacheManager 则是在 spring-context-support 中,也引入次依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
</dependency>

成功,没有警告日志,且异服务之间调用成功,用的 consumer-service 调用 nacos-service

6、一直提示 “error”: “Service Unavailable”

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
    <version>2.9.3</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

问题解决

这是由于版本不兼容引发的问题,我当前使用的版本

  • alibaba-nacos-discovery 2021.0.5.0

而springcloud alibaba 在2020版之后不支持ribbon,可以使用 loadbalance 代替。

7、请求路径一直报“Not fund”

对 Path路由理解错误

      routes:
        - id: nacos-service_route
          uri: lb://nacos-service
          predicates:
            - Path=/api/**

这个请求地址为:localhost:8081/api/echo/xxx

这个其实是生效了的,gateway已经转发到了 nacos-service服务。

只是对于路径 nacos-service/api/echo/xxx 没有找到,它替换的只是注册的服务而已,具体的路径并没有替换。


网站公告

今日签到

点亮在社区的每一天
去签到