Spring Cloud Gateway核心指南:从路由、断言到全局过滤器
引言在现代微服务架构中,API网关扮演着至关重要的角色,它作为所有服务的统一入口,负责请求路由、安全认证、流量控制和监控等关键任务。Spring Cloud Gateway是Spring官方推出的第二代网关框架,基于Spring 5、Spring Boot 2和Project Reactor构建,采用非阻塞的响应式编程模型,相比于第一代的Zuul,性能更优,功能也更为强大。本文将从核心概念入手,详细介绍Spring Cloud Gateway的路由、断言、过滤器等核心功能,并提供实践配置,帮助你快速掌握并应用于项目中。 为什么需要API网关?在微服务架构中,网关是整个系统的“守门神”,它统一了服务入口,简化了客户端的调用逻辑。其核心功能主要包括: 请求路由 (Request Routing): 根据请求的路径、域名等信息,将请求智能地转发到后端的具体微服务。 权限控制 (Authentication & Authorization): 在请求到达业务服务之前,集中完成用户认证和权限校验,实现安全拦截。 限流熔断 (Rate Limiting & Circuit ...
关于 FeignClient 注解中的 contextId
contextId 的使用一般是调用同一个服务,但是分多个接口 比如调用同一个 member 服务可以通过 contextId 来区分开,否则就会报错 bean 冲突 12345678/** * @author 小五 */@FeignClient(contextId = "MemberAFeign", value = ServiceNameConstants.MEMBER_SERVICE, fallbackFactory = MemberFeignAFallbackFactory.class)public interface MemberAFeign { ...} 12345678/** * @author 小五 */@FeignClient(contextId = "MemberBFeign", value = ServiceNameConstants.MEMBER_SERVICE, fallbackFactory = MemberFeignBFallbackFactory.cla...
关于 FeignClient 参数 fallbackFactory 和 fallback
首先两个参数都可以作为断容器使用,在抛出 exception 时,返回默认的配置数据 其次两个参数不能同时使用 区别:fallbackFactory 可以识别到 cause,也就是说如果需要得到错误原因,可以使用 fallbackFactory,如下 fallbackFactory 的使用FeignClient 123456// remote接口标注fallbackFactory/** * @author 小五 */@FeignClient(contextId = "productFeign", value = ServiceNameConstants.PRODUCT_SERVICE, fallbackFactory = ProductFeignFallbackFactory.class) FeignClient 实现类 12345678910111213@Slf4j@Componentpublic class ProductFeignFallbackImpl implements ProductFeign { @Sette...
OpenFeign 远程调用
Feign 远程调用先来看我们以前利用 RestTemplate 发起远程调用的代码: 存在下面的问题: 代码可读性差,编程体验不统一 参数复杂 URL 难以维护 Feign 是一个声明式的 http 客户端,官方地址:https://github.com/OpenFeign/feign 其作用就是帮助我们优雅的实现 http 请求的发送,解决上面提到的问题。 Feign 替代 RestTemplateFeign 的使用步骤如下: 1)引入依赖我们在 order-service 服务的 pom 文件中引入 feign 的依赖: 1234<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency> 2)添加注解在 order-service 的启动类添加注解开启 Feign 的功能: 3)编写...
关于 Spring Cloud
单体, 微服务, 分布式 1.1 单体架构单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。 单体架构的优缺点如下: 优点: 架构简单 部署成本低 缺点: 耦合度高(维护困难、升级困难) 1.2 分布式架构分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。 分布式架构的优缺点: 优点: 降低服务耦合 有利于服务升级和拓展 缺点: 服务调用关系错综复杂 分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考: 服务拆分的粒度如何界定? 服务之间如何调用? 服务的调用关系如何管理? 人们需要制定一套行之有效的标准来约束分布式架构。 1.3 微服务微服务的架构特征: 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责 自治:团队独立、技术独立、数据独立,独立部署和交付 面向服务:服务提供统一标准的接口,与语言和技术无关 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题 微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的...
学习 Nacos - 注册中心与配置中心
Nacos 是 Spring Cloud Alibaba 的组件,而 Spring Cloud Alibaba 也遵循 Spring Cloud 中定义的服务注册、服务发现规范。因此使用 Nacos 和使用 Eureka 对于微服务来说,并没有太大区别。 主要差异在于: 依赖不同 服务地址不同 注册中心依赖配置pom 依赖: 1234567<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.6.RELEASE</version> <type>pom</type> <scope>import</scope></dependency> 1234<dependency> <groupId>...
