Spring Cloud Gateway + Nacos + LoadBalancer实现企业级网关
2023-12-13 21:39:27
1. Spring Cloud Gateway 整合Nacos、LoadBalancer 实现企业级网关
前置工作:
- 创建 SpringBoot 多模块项目
- 创建网关(gateway-service)、用户(user-service)模块
- 用户模块添加 Nacos discovery 支持以及 Spring Web,并配置 Nacos 连接信息
准备用户模块的 controller :
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired // 获取动态端口
private ServletWebServerApplicationContext context;
@RequestMapping("/getname")
public String getName() {
return context.getWebServer().getPort() +
"--UserService:name=java-"+
new Random().nextInt(100);
}
}
【实现步骤】
1. 添加依赖
- Gateway、Nacos、LoadBalancer
2. 设置路由
- 配置 Gateway 路由规则:(id、uri、predicates)
- 设置 Nacos 注册中心地址
1.1 添加依赖
此处的依赖添加在 gateway-service 子模块中:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 高版本需要添加客户端负载均衡 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
</dependencies>
如果依赖加载报错,可以先检查一下父模块
- 是否统一版本
- <dependencyManagement> 中是否有以下三个依赖
<!-- 统一版本 -->
<spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version>
<spring-cloud.version>2022.0.0</spring-cloud.version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
1.2 设置路由
在 gateway-service 中的配置文件中,去设置路由规则以及 Nacos 注册中心的地址,
spring:
cloud:
nacos: # 配置注册中心
discovery:
server-addr: localhost:8848
username: nacos
password: nacos
gateway: # 配置网关
routes:
- id: userservice
uri: lb://user-service-gateway # loadbalancer
predicates:
- Path=/user/**, /userlog/**
server:
port: 10086
做好以上两步后,可以复制一个user-service,同时启动两个服务,通过网关路由到服务上的时候,看看是否是默认的轮询负载均衡策略:
?
此时启动 gateway-service、两个 user-service,使用网关模块中配置的 10086 端口去访问服务时,就能看到轮询的负载均衡策略了。
?
文章来源:https://blog.csdn.net/xaiobit_hl/article/details/134910510
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!