优购物官方网站下载,免费php空间国内,成都定制网站建设,做导购网站需要多大的服务器文章目录 媒资管理模块 - 媒资项目搭建一、需求分析1.1 介绍1.2 数据模型1.3 分析网关 二、 搭建Nacos2.1 服务发现中心2.2.1 Maven2.2.2 配置Nacos 2.2 配置中心2.2.1 介绍2.2.2 Maven 坐标2.2.3 配置 content-api 工程2.2.4 配置 content-service 工程2.2.5 配置 system-api … 文章目录 媒资管理模块 - 媒资项目搭建一、需求分析1.1 介绍1.2 数据模型1.3 分析网关 二、 搭建Nacos2.1 服务发现中心2.2.1 Maven2.2.2 配置Nacos 2.2 配置中心2.2.1 介绍2.2.2 Maven 坐标2.2.3 配置 content-api 工程2.2.4 配置 content-service 工程2.2.5 配置 system-api 工程2.2.6 配置 system-service 工程 2.3 配置中心 - 公用配置2.4 配置中心 - 配置加载优先级2.5 配置中心 - 灵活切换环境2.6 配置中心 - 导入配置 三、 搭建 Gateway 网关3.1 创建xuecheng-plus-gateway网关工程3.2 Maven坐标3.3 bootstrap.yaml配置文件3.4 Nacos配置网关路由策略3.5 测试网关 媒资管理模块 - 媒资项目搭建
一、需求分析
1.1 介绍
媒资管理系统是每个在线教育平台所必须具备的
每个教学机构都可以在媒资系统管理自己的教学资源包括:视频、教案等文件目前媒资管理的主要管理对象是视频、图片、文档等包括:媒资文件的查询、文件上传、视频处理等.
媒资查询:教学机构查询自己所拥有的媒资信息
文件上传:包括上传图片、上传文档、上传视频
比如说内容管理中课程编辑和新增时需要添加课程封面图片 视频处理:视频上传成功系统自动对视频进行编码处理
假如我们上传了一个avi格式的视频这个视频在浏览器上是无法播放的需要进行转码比如说转成Mp4格式
文件删除:教学机构删除自己上传的媒资文件 1.2 数据模型 mdia_files媒资文件表存储文件信息包括图片、视频、文档等并不是文件本身真正的文件存储在我们的分布式系统中。
media_process: 待处理视频表。
media_process_history: 视频处理历史表记录已经处理成功的视频信息。 视频处理完成之后要绑定课程计划
媒资文件与课程计划绑定关系表如下
课程计划表teachplan
课程计划与媒资关系teachplan_media主要是操作这张表将媒资与课程计划进行绑定 1.3 分析网关
目前我们有三个服务如下所示
内容管理服务管理课程信息
系统管理服务目前引入了数据字典不会有业务的东西是一些系统本身的内容比如日志、系统备份、数据字典
媒资管理服务管理课程相关视频、文档等文件 但是像上图那样前端直接请求后端的服务会有一定的弊端
在前端对每个请求地址都配置绝对路径非常不利于系统维护假如后端的端口或者IP改变后前端的每个请求地址都需要改变这是非常不方便的 下图所示便是绝对路径假如我们放到服务器上后localhost显然是不合适的那就设置成一个局域网的ip了 基于这个问题可以采用网关来解决这个麻烦 之前我也学过网关 SpringCloud - Gateway统一网关 网关的作用其实就是路由我们请求到网关网关会把请求分配到相应的后端服务上 之前前端是和多个后端服务进行通信但是现在不需要了只需要请求网关就好了 总的来说前端和网关对接网关和后端的多个服务对接 此时前端的路径变成下图所示只需要指定每个接口的相对路径
在前端代码的一个固定的地方在接口地址前统一加网关的地址每个请求统一到网关由网关将请求转发到具体的微服务 为什么所有的请求先到网关呢
有了网关就可以对请求进行路由路由到具体的微服务减少外界对接微服务的成本。
路由可以根据请求路径进行路由、根据host地址进行路由等 当微服务有多个实例时可以通过负载均衡算法进行路由
另外网关还可以实现权限控制、限流等功能 网关是怎么知道微服务的IP地址呢
我们可以将服务的信息记录在Nacos上面网关可以进行读取 二、 搭建Nacos 之前做的Nacos笔记 Nacos知识大全 Spring Cloud 一套规范
Spring Cloud alibaba: 这一套实现中就有nacos服务注册中心配置中心 namespace和group的概念在上面的文章中有 namespace用于区分环境、比如开发环境、测试环境、生产环境。
group用于区分项目比如xuecheng-plus项目、xuecheng2.0项目
访问http://192.168.101.65:8848/nacos/
账号密码nacos/nacos 2.1 服务发现中心 也就是服务注册中心 下面是创建的命名空间namespace 注册完成命名空间namespace之后我们要把微服务注册到nacos并且每个服务都是一个group
2.2.1 Maven
xuecheng-plus-parent 这是所有工程的父工程 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope
/dependency上报服务信息
在内容管理模块的接口工程、系统管理模块的接口工程中添加如下依赖
如果是上报服务信息就是用下面这个坐标 哪个模块需要上报服务就写在哪里假如说service模块需要上报服务那service模块的pom就需要引入下面的坐标 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency2.2.2 配置Nacos
既然我们的服务需要向Nacos报服务信息那怎么将信息报告到Nacos呢
我们也需要配置一下Nacos的地址说明我们要向哪上报服务信息
在系统管理的接口工程的配置文件中配置如下信息
spring:application:name: system-apicloud:nacos:server-addr: 192.168.101.65:8848discovery:namespace: devgroup: xuecheng-plus-project在内容管理的接口工程的配置文件中配置如下信息
spring:application:name: content-apicloud:nacos:server-addr: 192.168.101.65:8848discovery:namespace: devgroup: xuecheng-plus-project当启动项目后查看Nacos 并且点击“详情”还可以查看IP和端口 2.2 配置中心
2.2.1 介绍
实现配置中心的最终目标将项目中的配置信息放入到Nacos上不重启项目就可以修改服务的各种配置信息
对微服务中公有的配置信息和特有的配置信息进行分别配置
将项目中的配置文件分类 每个项目特有的配置 是指该配置只在有些项目中需要配置或者该配置在每个项目中配置的值不同 比如spring.application.name每个项目都需要配置但值不一样以及有些项目需要连接数据库而有些项目不需要有些项目需要配置消息队列而有些项目不需要 下面的配置每个服务可能是不同的 server:servlet:context-path: /systemport: 63110
#微服务配置
spring:application:name: system-api 项目所公用的配置 是指在若干项目中配置内容相同的配置。 比如redis的配置很多项目用的同一套redis服务所以配置也一样 # 日志文件配置路径
logging:config: classpath:log4j2-dev.xml# swagger 文档配置
swagger:title: 学成在线系统管理description: 系统管理接口base-package: com.xuecheng.systemenabled: trueversion: 1.0.0Nacos是如何定位一个具体的配置文件的
namespace、group、dataid 通过namespace、group找到具体的环境和具体的项目 通过dataid找到具体的配置文件 dataid有三部分组成content-api-dev.yaml配置文件 由content-api-dev. (yaml)三部分组成 第一部分它是在application.yaml中配置的应用名即spring.application.name的值 第二部分它是环境名通过spring.profiles.active指定 第三部分它是配置文件的后缀目前nacos支持properties、yaml等格式类型本项目选择yaml格式类型 如果我们要配置content-api工程的配置文件: 在开发环境中配置content-api-dev.yaml 在测试环境中配置content-api-test.yaml 在生产环境中配置content-api-prod.yaml 我们启动项目中传入spring.profiles.active的参数决定引用哪个环境的配置文件例如传入spring.profiles.activedev表示使用dev环境的配置文件即content-service-dev.yaml
#微服务配置
spring:application:name: content-api # 1.服务名cloud:nacos:server-addr: 192.168.101.65:8848discovery:namespace: devgroup: xuecheng-plus-projectprofiles:active: dev # 2.配置环境名2.2.2 Maven 坐标
!--服务注册--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId
/dependency2.2.3 配置 content-api 工程 将Maven坐标导入到content-api工程中的pom文件里 在Nacos中我们可以点击右侧的“”来添加一个配置 配置如下图所示 目前content-api项目bootstrap.yml文件的配置如下
我们发现dataid的三要素并没有被提取出来还是在文件中放着 被注释掉的就是目前被提取出来的内容 #server:
# servlet:
# context-path: /content
# port: 63040
#微服务配置
spring:application:name: content-api #1.服务名 cloud:nacos:server-addr: 192.168.101.65:8848discovery: #服务发现注册配置namespace: devgroup: xuecheng-plus-projectconfig: #服务注册配置namespace: dev # 命名空间group: xuecheng-plus-project # 组file-extension: yaml # 3.文件扩展名refresh-enabled: true # 当将 refresh 设置为 true 时应用程序会定期从Nacos服务器获取配置并刷新已加载的配置profiles:active: dev # 2.环境名
# datasource:
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezoneUTCuserUnicodetrueuseSSLfalse
# username: root
# password: mysql
# 日志文件配置路径
logging:config: classpath:log4j2-dev.xmlswagger:title: 学成在线内容管理系统description: 内容系统管理系统对课程相关信息进行管理base-package: com.xuecheng.contentenabled: trueversion: 1.0.0此时就可以启动content-api项目一切正常
其中这个项目所需要的Nacos坐标
!--服务注册--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId
/dependency
!--服务发现--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency2.2.4 配置 content-service 工程
其实在content-api工程bootstrap.yaml配置文件中不需要配置数据库的信息因为content-api工程并不会访问数据库 之前在content-api工程配置文件配置数据库的信息是因为content-api工程会引用content-service工程进而操作的数据库 真正访问数据库的工程是content-api所以其实也可以将数据库的配置信息配置在content-service
所以下面将修改content-service工程与content-api工程的配置文件 修改content-api工程的配置文件 删除Nacos中数据库连接的配置 在content-api工程配置文件中引用(扩展)content-service工程的配置文件 为什么是扩展的配置文件 除了特有的配置、公用配置还有扩展的配置 content-api工程运行的时候需要引入content-service工程但是content-api功能从Nacos拿到的仅仅是自己特有的 所以需要将content-service工程在Nacos的配置文件引过来也就是扩展一下 下面的配置新增了extension-configs项也就是指定扩展配置文件
#server:
# servlet:
# context-path: /content
# port: 63040
#微服务配置
spring:application:name: content-api # 项目名cloud:nacos:server-addr: 192.168.101.65:8848 #Nacos地址discovery: #服务发现服务注册namespace: dev #命名空间group: xuecheng-plus-project #组别config: # 配置中心namespace: dev #命名空间group: xuecheng-plus-projectfile-extension: yaml #文件后缀refresh-enabled: trueextension-configs: # 扩展配置信息的引用#${spring.profiles.active} 这个写法就会找到此文件中spring.profiles.active对应的值- data-id: content-service-${spring.profiles.active}.yamlgroup: xuecheng-plus-projectrefresh: trueprofiles:active: dev
# datasource:
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezoneUTCuserUnicodetrueuseSSLfalse
# username: root
# password: mysql
# 日志文件配置路径
logging:config: classpath:log4j2-dev.xmlswagger:title: 学成在线内容管理系统description: 内容系统管理系统对课程相关信息进行管理base-package: com.xuecheng.contentenabled: trueversion: 1.0.0修改content-service工程的配置文件 此工程不需要将服务进行上报所以只需要一个服务注册的坐标即可
!--服务注册--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId
/dependency此时bootstrap.yaml中的配置注释掉的datasource信息将会配置在Nacos中
#微服务配置
spring:application:name: content-service # 服务名profiles:active: dev # 运行环境 cloud:nacos:server-addr: 192.168.101.65:8848 #Nacos地址config: #服务配置相关信息namespace: dev # 命名空间group: xuecheng-plus-project #组file-extension: yaml #文件后缀refresh-enabled: true
# datasource:
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezoneUTCuserUnicodetrueuseSSLfalse
# username: root
# password: mysql# 日志文件配置路径
logging:config: classpath:log4j2-dev.xml
swagger:title: 学成在线内容管理系统description: 内容系统管理系统对课程相关信息进行管理base-package: com.xuecheng.contentenabled: trueversion: 1.0.0Nacos中配置信息 然后可以在测试类中测试一下是正常的 content-service项目中需要的nacos坐标
!--服务注册--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId
/dependency都配置完成后重启content-api项目看是否启动成功如果成功了说明配置也是成功的
2.2.5 配置 system-api 工程
bootstrap.yaml配置文件
#server:
# servlet:
# context-path: /system
# port: 63110
#微服务配置
spring:application:name: system-apicloud:nacos:server-addr: 192.168.101.65:8848discovery:namespace: devgroup: xuecheng-plus-projectconfig: # 配置中心 namespace: dev #命名空间group: xuecheng-plus-projectfile-extension: yaml #文件后缀refresh-enabled: true # 当将 refresh 设置为 true 时应用程序会定期从Nacos服务器获取配置并刷新已加载的配置extension-configs: # 扩展配置信息的引用#${spring.profiles.active} 这个写法就会找到此文件中spring.profiles.active对应的值- data-id: system-service-${spring.profiles.active}.yamlgroup: xuecheng-plus-projectrefresh: trueshared-configs: #公用配置- data-id: swagger-${spring.profiles.active}.yamlgroup: xuecheng-plus-commonrefresh: true- data-id: logging-${spring.profiles.active}.yamlgroup: xuecheng-plus-commonrefresh: trueprofiles:active: dev
# datasource:
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://192.168.101.65:3306/xcplus_system?serverTimezoneUTCuserUnicodetrueuseSSLfalse
# username: root
# password: mysql
# 日志文件配置路径
#logging:
# config: classpath:log4j2-dev.xml
#
## swagger 文档配置
#swagger:
# title: 学成在线系统管理
# description: 系统管理接口
# base-package: com.xuecheng.system
# enabled: true
# version: 1.0.0Nacos中配置
server:servlet:context-path: /systemport: 63110Maven坐标
!--服务注册--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId
/dependency
!--服务发现--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency2.2.6 配置 system-service 工程
bootstrap.yaml配置文件
#微服务配置
spring:application:name: system-service # 服务名profiles:active: dev # 运行环境 cloud:nacos:server-addr: 192.168.101.65:8848 #Nacos地址config: #服务配置相关信息namespace: dev # 命名空间group: xuecheng-plus-project #组file-extension: yaml #文件后缀refresh-enabled: true
# datasource:
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://192.168.101.65:3306/xcplus_content?serverTimezoneUTCuserUnicodetrueuseSSLfalse
# username: root
# password: mysqlNacos配置
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.101.65:3306/xcplus_system?serverTimezoneUTCuserUnicodetrueuseSSLfalseusername: rootpassword: mysqlMaven坐标
!--服务注册--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId
/dependency2.3 配置中心 - 公用配置
nacos提供了shared-configs可以引入公用配置
每个工程的bootstrap.yaml文件中都会有下面内容随意我们可以配置一个公用配置
logging:config: classpath:log4j2-dev.xmlswagger:title: 学成在线内容管理系统description: 内容系统管理系统对课程相关信息进行管理base-package: com.xuecheng.contentenabled: trueversion: 1.0.0单独在xuecheng-plus-common分组下创建xuecheng-plus的公用配置进入nacos的开发环境添加swagger-dev.yaml公用配置 相同的方式添加logging-dev.yaml公用配置 **在content-api工程bootstrap.yaml配置文件中引入swagger-dev.yaml、loggin-dev.yaml公用配置文件 **
#微服务配置
spring:application:name: content-api # 项目名cloud:nacos:server-addr: 192.168.101.65:8848 #Nacos地址discovery: #服务发现服务注册namespace: dev #命名空间group: xuecheng-plus-project #组别config: # 配置中心namespace: dev #命名空间group: xuecheng-plus-projectfile-extension: yaml #文件后缀refresh-enabled: trueextension-configs: # 扩展配置信息的引用#${spring.profiles.active} 这个写法就会找到此文件中spring.profiles.active对应的值- data-id: content-service-${spring.profiles.active}.yamlgroup: xuecheng-plus-projectrefresh: trueshared-configs: #公用配置- data-id: swagger-${spring.profiles.active}.yamlgroup: xuecheng-plus-commonrefresh: true- data-id: logging-${spring.profiles.active}.yamlgroup: xuecheng-plus-commonrefresh: trueprofiles:active: dev重新启动content-api工程打开swagger页面说明没有什么问题 2.4 配置中心 - 配置加载优先级 这个地方其实可以看看下面这个文章Springboot配置文件-多环境开发控制 SpringBoot读取配置文件的顺序 引入配置文件的形式有 以项目应用名方式引入 微服务它所对应的自己特有的配置 也就是通过过项目名、环境名、文件后缀信息三要素从Nacos过去的配置 spring:application:name: content-api # 项目名profiles:active: dev #环境以扩展配置文件方式引入 extension-configs: # 扩展配置信息的引用#${spring.profiles.active} 这个写法就会找到此文件中spring.profiles.active对应的值- data-id: content-service-${spring.profiles.active}.yamlgroup: xuecheng-plus-projectrefresh: true以共享配置文件 方式引入 shared-configs: #公用配置- data-id: swagger-${spring.profiles.active}.yamlgroup: xuecheng-plus-commonrefresh: true- data-id: logging-${spring.profiles.active}.yamlgroup: xuecheng-plus-commonrefresh: true本地配置文件 #微服务配置
spring:application:name: content-api # 项目名cloud:nacos:server-addr: 192.168.101.65:8848 #Nacos地址discovery: #服务发现服务注册namespace: dev #命名空间group: xuecheng-plus-project #组别config: # 配置中心namespace: dev #命名空间group: xuecheng-plus-projectfile-extension: yaml #文件后缀refresh-enabled: true # 当将 refresh 设置为 true 时应用程序会定期从Nacos服务器获取配置并刷新已加载的配置extension-configs: # 扩展配置信息的引用#${spring.profiles.active} 这个写法就会找到此文件中spring.profiles.active对应的值- data-id: content-service-${spring.profiles.active}.yamlgroup: xuecheng-plus-projectrefresh: trueshared-configs: #公用配置- data-id: swagger-${spring.profiles.active}.yamlgroup: xuecheng-plus-commonrefresh: true- data-id: logging-${spring.profiles.active}.yamlgroup: xuecheng-plus-commonrefresh: trueprofiles:active: dev前面三个是在Nacos最后一个在本地 假如上面方式引入的配置冲突了怎么办以谁的为准
看下面的优先级
默认情况各配置文件的优先级
项目应用名配置文件 扩展配置文件 共享配置文件 本地配置文件
问题同个项目怎么启动多个
但是项目应用名配置文件优先级最高那我们一个工程怎么运行两个呀比如说content-api工程在Nacos中配置的运行端口是63040那我们在本地将端口改成63041是运行不了的那我们实际项目部署的时候怎么办呢
那肯定会有人想项目部署最终都会执行 java -jar命令我们只需要加一个临时参数就好了 这种方法也是不行的这种也是相当于在本地配置
那怎么解决这个问题呢 #配置本地优先
spring:cloud:config:override-none: true在Nacos中配置一下就可以了配置成本地配置最优先即可 假如我们端口号Nacos 63010、bootstrap.yaml 12321、application.yaml 8065 文件中各有配置并且已经在Nacos中配置了本地优先策略那启动项目后会运行哪个端口号呢 假如去掉Nacos中配置的本地优先策略后再启动项目端口号呢
以Nacos中为准 bootstrap.yml/bootstrap.properties这些文件在应用程序的早期就被加载主要用于系统级的配置如加密属性的解密、配置服务的设置等。bootstrap文件的加载时机在application文件之前因此可以说它的优先级更高。优先级高优先加载但是会被后加载的内容覆盖 application.yml/application.properties这些是Spring Boot应用程序的主要配置文件用于配置应用程序特定的各种属性。它们在bootstrap配置之后加载。所以application内容会覆盖bootstrap但是实际上的优先级是bootstrapapplication 在加载时加载的顺序是ymlyamlproperities所以在加载配置文件时如果有在配置文件名相同时以properities结尾的配置文件会生效因为以properities结尾的文件是最后被加载的覆盖了之前的相同配置 总结默认加载的优先级 bootstrap application yml yaml properities
假如在Nacos中配置本地文件优先时配置生效顺序 如果配置重复的话会以左侧为主文件的配置为主 application.properities application.yaml application.yml bootstrap.properities bootstrap.yaml bootstrap.yml
2.5 配置中心 - 灵活切换环境
可以直接才配置文件中进行修改 或者是配置临时参数 2.6 配置中心 - 导入配置
点击所选的”导入配置“ 假如说导入配置时出现重复的配置怎么办
根据实际情况选择即可之后点击“上传文件”即可 选择合适的文件zip包即可不需要自己解压 三、 搭建 Gateway 网关
搭建Spring Cloud Gateway创建网关工程 SpringCloud - Gateway统一网关 之前搭建了Nacos现在可以搭建一下Gateway网关 3.1 创建xuecheng-plus-gateway网关工程
创建xuecheng-plus-gateway网关工程 3.2 Maven坐标
parentgroupIdcom.xuecheng/groupIdartifactIdxuecheng-plus-parent/artifactIdversion0.0.1-SNAPSHOT/versionrelativePath../xuecheng-plus-parent/relativePath
/parent
artifactIdxuecheng-plus-gateway/artifactIddependencies!--网关--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency!--服务发现中心--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!--服务配置中心--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency!-- 排除 Spring Boot 依赖的日志包冲突 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdexclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/exclusion/exclusions/dependency!-- Spring Boot 集成 log4j2 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactId/dependency/dependencies3.3 bootstrap.yaml配置文件
#微服务配置
spring:application:name: gatewaycloud:#下面的配置是从Nacos拉取配置文件并且要将服务上报到nacosnacos:server-addr: 192.168.101.65:8848discovery: #服务发现服务配置namespace: devgroup: xuecheng-plus-projectconfig: #服务配置namespace: devgroup: xuecheng-plus-projectfile-extension: yamlrefresh-enabled: trueshared-configs:- data-id: logging-${spring.profiles.active}.yamlgroup: xuecheng-plus-commonrefresh: trueprofiles:active: dev3.4 Nacos配置网关路由策略
server:port: 63010 # 网关端口
spring:cloud:gateway:
# filter:
# strip-prefix:
# enabled: trueroutes: # 网关路由配置- id: content-api # 路由id自定义只要唯一即可# uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址uri: lb://content-api # 路由的目标地址 lb就是负载均衡后面跟服务名称predicates: # 路由断言也就是判断请求是否符合路由规则的条件- Path/content/** # 这个是按照路径匹配只要以/content/开头就符合要求
# filters:
# - StripPrefix1- id: system-api# uri: http://127.0.0.1:8081uri: lb://system-apipredicates:- Path/system/**
# filters:
# - StripPrefix1- id: media-api# uri: http://127.0.0.1:8081uri: lb://media-apipredicates:- Path/media/**
# filters:
# - StripPrefix1
3.5 测试网关
启动xuecheng-plus-gateway工程后在Nacos发现有服务 但是并不是我们启动项目之后Nacos立即拿到服务的会有30s的空窗期
假如说我们请求一个服务返回的响应状态码是503的话很可能是我们请求的项目并没有启动我们只需要启动对应的项目就好了
网关工程搭建完成即可将前端工程中的接口地址改为网关的地址 启动前端工程查看是否有数据如果有说明之前所有的配置是没有任何问题的 相当正常忐忑的心放下了