目录
Spring Cloud 框架是基于JDK1.8搭建的,以下是各个组件版本:
alibaba-spring-cloud:2.2.10-RC1
spring-cloud:Hoxton.SR12
spring-boot:2.3.12.RELEASE
nacos:2.2.0
如果想自定义版本请参考官网版本:版本发布说明-阿里云Spring Cloud Alibaba官网
0. Linux按照jdk8u131
0.1 下载安装包
该链接包含jdk1.8大部分安装包:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
0.2 上传包并解压
tar -xvf jdk-8u131-linux-x64.tar.gz
0.3 配置环境变量
vi /etc/profile
export JAVA_HOME=/root/java/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
0.4 查看版本号
java -version
备注:单独把安装jdk写出来是因为jdk8u131版本花了一个小时,才在oracle官网上找到。
1. Linux服务器上安装Nacos
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
具体介绍参考:Nacos 配置中心简介, Nacos 是什么 | Nacos 官网
1.1 Linux服务器上安装Nacos
下载安装包nacos-server-2.2.0.tar.gz,下载地址:https://github.com/alibaba/nacos/releases
解压:
tar -xvf nacos-server-2.2.0.tar.gz
单机启动nacos:
./startup.sh -m standalone
浏览器访问:http://47.108.255.3:8848/nacos/

1.2 开放端口
若使用阿里云服务器搭建nacos,必须放开这个三个端口的防火墙:8848,9849,9848;否则本地想从nacos上读取配置和注册服务时会怀疑人生。
2. Spring Cloud Gateway
Spring Cloud Gateway主要功能是转发请求,断言和过滤,本次会实现他们的基础功能。
2.1 引入依赖包
<!--gateway-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--lb://users-server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!-- Spring Cloud Alibaba Nacos Discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Spring Cloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.2 添加配置文件
2.2.1 在resources目录下创建bootstrap.yml文件,spring cloud项目启动时会优先加载这个文件,该文件仅配置服务名称和Nacos基本信息,其他配置都时从Nacos服务器上拉取,配置如下:
spring: #基本配置,其余配置都在nacos服务器上,参考nacosconfig目录下的配置
application:
name: gateway-server
cloud:
nacos: #所有配置从nacos中获取
config:
# 配置中心地址
server-addr: 47.108.255.3:8848
namespace: springcloud
group: SPRING_CLOUD
username: nacos
password: nacos
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
extension-configs: #添加此配置是为了修改配置后不用重启服务器
- data-id: ${spring.application.name}-real-time-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
group: SPRING_CLOUD
refresh: true #实时刷新配置
2.2.2 启动类增加注解
@EnableDiscoveryClient:接入nacos
@RefreshScope:动态加载nacos配置,无需重启服务
@SpringBootApplication
@EnableDiscoveryClient // 接入nacos
@RefreshScope // 动态加载nacos配置,无需重启服务
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 系统模块启动成功 ლ(´ڡ`ლ)゙");
}
}
3. Nacos上添加配置
第一步:创建一个命名空间,我创建的是springcloud

第二步:创建两个配置文件

getaway-server-dev.yml:存放不会变动的基础配置;
gateway-server-real-time-dev.yml:存放可能变动的配置;
配置分别如下:
server:
port: 8091 #服务端口
spring:
application:
name: gateway-server
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 47.108.255.3:8848
namespace: springcloud
username: nacos
password: nacos
config:
# 配置中心地址
server-addr: 47.108.255.3:8848
namespace: springcloud
group: SPRING_CLOUD
username: nacos
password: nacos
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
extension-configs:
- data-id: ${spring.application.name}-real-time-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
group: SPRING_CLOUD
refresh: true #实时刷新配置
spring:
cloud:
gateway:
discovery:
locator:
enabled: true # 启用服务发现路由功能
routes:
- id: testgateway1
uri: http://localhost:9400
predicates:
- Path=/gateway/**
filters:
- StripPrefix=1 # 移除路径中的第一个前缀(如 /gateway/gateway → /gateway)先匹配再移除
- id: testgateway2
uri: http://localhost:9400
predicates:
- Path=/redis/**
filters:
- StripPrefix=1 # 移除路径中的第一个前缀(如 /gateway/gateway → /gateway)先匹配再移除
- id: users-server1
uri: lb://users-server #通过服务名转发
predicates:
- Path=/api/users/**
filters:
- StripPrefix=1 # 移除路径中的第一个前缀(如 /gateway/gateway → /gateway)先匹配再移除
4 idea上添加环境变量
idea上指定环境-Dspring.profiles.active=dev;
在linux上部署命令:java -jar gateway-start-1.0.0-SNAPSHOT.jar --spring.profiles.active=dev

5. 验证从nacos读取配置和注册服务
启动日志中可以看到gateway已经注册到nacos上,同样可以看得端口号为8091,这是nacos上配置的,说明已经读取到配置
登录nacos查看服务列表,也已经显示出来

6. 验证gateway的功能
本地启动users项目,如图所示,users也注册到nacos上

6.1 验证负载均衡模式转发
配置:lb://users-server,说明走的是负载均衡,8091是gateway的端口,而/api/users/say/hello1是users的接口,从结果上看是转发成功了。

6.2 验证IP:端口转发模式
第一步:修改配置文件gateway-server-real-time-dev.yml,转换调用模式
第二步:发起请求,同上,请求成功
7. 经验总结
7.1 Spring Cloud的版本要一致
7.2 yml文件编写一定要仔细,有可能一个空格就会导致整个项目无法启动
7.3 服务器端口防火墙一定要开放,如着重标注的nacos三个端口,若不开放防火墙,本地无法加载配置和注册服务
7.4 到各个官网去注册一个账号,说不定什么时候就用上了



1733

被折叠的 条评论
为什么被折叠?



