spring cloud 阶段学习总结(二)
这篇文档接 spring cloud 阶段学习总结(一),记录微服务框架学习,通过 spring gateway 实现路由功能。目前nacos 服务列表中只有 spri-clou-gateway 一个服务;要实现微服务路由,需要新增两个注册服务
一、新增clou-auth 和 clou-module-sys 服务
1. clou-auth pom 文件 修改 ,新增 <dependencies> 配置节点
<dependencies>
<!-- SpringCloud Ailibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Ailibaba Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Spring boot web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
</dependencies>
2. clou-auth 模块 文件目录:
- bootstrap.yml 文件内容:
server:
port: 29081
spring:
application:
name: spri-clou-auth
profiles:
active: dev
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: db59eae3-ddba-4c8e-9c71-1b709aff5efe
config:
server-addr: 127.0.0.1:8848
namespace: db59eae3-ddba-4c8e-9c71-1b709aff5efe
name: ${spring.application.name}
group: DEFAULT_GROUP
file-extension: yaml
shared-configs:
- data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
group: DEFAULT_GROUP
refresh: true # 是否自动刷新配置,默认为 false
- AuthApplication 文件内容:
@SpringBootApplication
@EnableDiscoveryClient
public class AuthApplication {
public static void main(String[] args) {
SpringApplication.run(AuthApplication.class);
}
}
- IndexController 文件内容:
@RestController
public class IndexController {
@Value("${system.name}")
private String moduleName;
@GetMapping("/moduleName")
public String name()
{
return moduleName;
}
}
3. nacos 新增 spri-clou-auth-dev.yaml 配置文件
4.nacos 配置文件列表:
启动模块:
nacos 服务列表:
模块接口自测: 访问 http://localhost:29081/moduleName
5. 同样方法增加 clou-module-sys 模块信息
clou-module-sys 项目文件目录
- pom 文件内容修改: 新增 <dependencies> 节点
<dependencies>
<!-- spring cloud gateway -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- spring ali cloud nacos 服务发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- spring cloud ali 配置重新 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- spring boot actuator 监控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
</dependencies>
- SystemAppliaction 文件内容:
@SpringBootApplication
@EnableDiscoveryClient
public class SystemAppliaction {
public static void main(String[] args) {
SpringApplication.run(SystemAppliaction.class);
}
}
- IndexController 文件内容:
@RestController
public class IndexController {
@Value("${system.name}")
private String moduleName;
@GetMapping("moduleName")
public String name()
{
return moduleName;
}
}
nacos 新增配置文件 spri-clou-module-sys-dev.yaml,文件内容
启动服务:
服务自测:
至此,总共又三个服务注册成功,并都通过自测,成功访问 配置文件信息成功;接下来测试服务路由;目前 通过访问 端口 29081/moduleName 和 29082/moduleName 都能成功获取 服务配置中心配置文件的内容。
二、spring gateway 实现服务路由
在 clou-gateway 模块搭建过程中,已添加路由依赖。下面修改nacos 配置中心 配置文件 spri-clou-gateway-dev.yaml 添加路由规则,实现服务的路由
<!-- spring cloud gateway -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
说明: 上边依赖信息 已在之前pom 文件配置添加。
1. 编辑配置文件 spri-clou-gateway-dev.yaml
2. spri-clou-gateway-dev.yaml 配置文件内容
system:
name: 网关配置文件
spring:
cloud:
gateway:
discovery:
locator:
lowerCaseServiceId: true
enabled: true
routes:
# 认证中心
- id: spri-clou-auth
uri: lb://spri-clou-auth
predicates:
- Path=/auth/**
filters:
- StripPrefix=1
- id: spri-clou-module-sys
uri: lb://spri-clou-module-sys
predicates:
- Path=/sys/**
filters:
- StripPrefix=1
说明:
- 注意文件内容缩进,yaml 严格控制缩进
- predicates下配置的 – Path=/auth/** 是所有请求网关访问路径中已/auth/ 将路由到 spri-clou-auth 服务处理
- filters 下配置的 – StripPrefix=1 是 转发至目标服务的路径将去掉第一级的路径 ,即 访问路径为 ** /auth/moduleName 转发到 spri-clou-auth 后 访问路径为 **/moduleName
启动服务,服务自测:
分别访问 路径: http://localhost:29080/auth/moduleName 和 http://localhost:29080/sys/moduleName ,注意 端口 29080 为 clou-gateway 模块配置路径
至此,通过spring gateway 服务路由以实现 。。
后续添加服务通过 openfeign 实现服务间的调用