:你只管努力,剩下的交给时间
:小破站
在当今云原生应用的激动人心时代,Spring Cloud作为一种流行的微服务框架,与Nacos配置中心和Gateway网关的整合,为开发者提供了强大而灵活的工具来构建可伸缩的分布式系统。然而,尽管这个技术栈带来了无限的可能性,但在实践中,我们经常会遇到一些令人挑战的问题。
这篇博客将带领你进入一个关于整合Spring Cloud、Nacos和Gateway的探险之旅。我们将分享在这个旅程中遇到的挑战、解决方案以及从中学到的宝贵经验。从服务注册与发现、动态配置到网关路由的管理,我们将深入探讨每个阶段的问题,助你更好地理解和克服这些技术整合的难题。
无论你是初学者还是有经验的开发者,这篇博客都将为你提供有关整合Spring Cloud、Nacos和Gateway的实用见解。通过分享我们在这个过程中的失败和成功,我们希望为你的微服务架构提供更多价值,帮助你更加自信地面对这个激动人心的技术领域。
让我们一起踏上这次探险之旅,发现并解决在整合Spring Cloud、Nacos和Gateway过程中可能遇到的各种问题。希望这篇博客能够成为你在构建分布式系统时的有力向导。
我所使用的版本如下
<spring.boot.version>2.7.8spring.boot.version>
<spring.cloud.version>2021.0.5spring.cloud.version>
<spring.cloud.alibaba.version>2021.0.4.0spring.cloud.alibaba.version>
nacos客户端使用的2.2.3
bootstrap.yml
中即可解决。这个报错详情请点击查看
出现上面的错误是因为你使用了负载均衡,也就是如下配置
uri: lb://system-server
⛑:加入以下依赖即可解决
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-loadbalancerartifactId>
dependency>
具体原因是springcloud2020弃用了Ribbon
这个报错是典型的404报错,也就是找不到路径,你只需要在服务中加入以下代码即可打印出你访问的路径,便于排查
package fun.bo.config;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
@Component
@Order(1) // 设置过滤器的执行顺序,确保在其他过滤器之前执行
public class RequestLoggingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 这里可以进行一些初始化操作,如果有的话
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 获取请求路径
String requestURI = ((javax.servlet.http.HttpServletRequest) request).getRequestURI();
// 打印请求路径
System.out.println("Request Path: " + requestURI);
// 继续处理请求
chain.doFilter(request, response);
}
@Override
public void destroy() {
// 这里可以进行一些清理操作,如果有的话
}
}
以上代码是你通过gateway访问的某一服务中加
后面还会持续更新