这篇文档接  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

 

 说明:

  1. 注意文件内容缩进,yaml 严格控制缩进  
  2. predicates下配置的  – Path=/auth/**  是所有请求网关访问路径中已/auth/ 将路由到 spri-clou-auth 服务处理
  3. 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 实现服务间的调用

 

版权声明:本文为LittlePaper原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/LittlePaper/p/14300874.html