SpringCloud服务
技术选用
- Spring Cloud Alibaba(nacos)
- SpringCloud Gateway
版本选用
- Spring Cloud Alibaba:2.2.6.RELEASE
- SpringCloud:Hoxton.SR2
- SpringBoot:2.3.2.RELEASE
实现功能
- nacos注册中心
- 两个nacos客户端,用于业务需求(server1、server2)
- 通过SpringCloud Gateway转发server1、server2请求
- server1、server2引入基础平台可进行认证授权、系统管理等
nacos注册中心
下载压缩包
在以下网址下载:https://github.com/alibaba/nacos/releases
启动
- 先解压:
- Windows:cmd进入bin目录执行命令:
startup.cmd -m standalone - Linux:进入bin目录执行命令:
startup.sh -m standalone
至此注册中心启动成功,默认端口为8848,http://127.0.0.1:8848/nacos/#/login登录进入管理界面,其用户名密码均为nacos
nacos客户端(server1、server2、gateway)
(1)pom文件引入nacos
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
(2)application.yml配置
server:
port: 9001
spring:
application:
name: server1
cloud:
nacos:
discovery:
# nacos注册中心
server-addr: 127.0.0.1:8848
(3)开启nacos(@EnableDiscoveryClient)
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
(4)Gateway配置转发
server:
port: 9003
spring:
profiles:
active: default
application:
name: spring-cloud-gateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
gateway:
discovery:
locator:
enabled: true
defaultFilters:
- PreserveHostHeader
routes:
# server1
- id: server1
uri: lb://server1
predicates:
- Path=/server1/**
filters:
# - StripPrefix=1
# - TokenRelay=
# server2
- id: server2
uri: lb://server2
predicates:
- Path=/server2/**
遇到的问题
- gateway配置成以下这样访问server1一直重定向到http://localhost:9003/server1/sys/login
- id: SERVER1
uri: lb://server1
predicates:
- Path=/server1/**
换成以下配置问题解决:
- id: SERVER1
uri: lb://server1
predicates:
- Path=/server1/{segment}