前言
Spring Cloud Gateway 通过集成 Nacos 服务发现,可以动态获取注册到 Nacos 的微服务实例信息,并根据服务名(Service Name)自动生成路由规则或手动配置路由规则,实现请求的动态路由和负载均衡。
一个最简单的网关就是实现所有微服务的代理即可,但是生产环境通常需要服务鉴权限制访问等,这里先简单示例一个没有鉴权,可以访问所有微服务接口的网关
创建项目
创建一个springboot项目
注意:避免引入 spring-boot-starter-web
,因 Gateway 基于 WebFlux 非阻塞模型
添加依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.13</version><relativePath/> <!-- lookup parent from repository --></parent><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId><version>4.0.0</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2022.0.0.0-RC2</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2022.0.0.0-RC2</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId><version>4.0.5</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>4.0.5</version></dependency>
修改配置
application.yml
server:port: 8080spring:application:name: api-gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848 # 服务注册地址namespace: local # 命名空间(默认 public,我这里改为了local)group: DEFAULT_GROUP # 分组gateway:discovery:locator:enabled: true # 自动根据服务名生成路由(重要!)lower-case-service-id: true
启动和调用
成功访问到微服务的接口调用成功
手工配置路由
spring:application:name: api-gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848 # ??????namespace: local # ??????? public?group: DEFAULT_GROUP # ??gateway:discovery:locator:enabled: true # ????????????????lower-case-service-id: trueroutes:- id: hello_route # 路由唯一标识uri: http://localhost:8081 # 目标服务地址predicates:- Path=/hello/** # 路径匹配规则
访问配置的路由
总结
这里只是个简单的调用,主要目的是走通微服务调用的流程,后续会不断完善权限配置等