OJ在线评测系统 微服务高级 Gateway网关接口路由和聚合文档 引入knife4j库集中查看管理并且调试网关项目

news/2024/10/11 21:02:34/

Gateway微服务网关接口路由

各个服务之间已经能相互调用了

为什么需要网关

因为我们的不同服务是放在不同的端口上面的

如果前端调用服务 需要不同的端口 8101 8102 8103 8104

我们最好提供一个唯一的 给前端去调用的路径

我们学习技术的时候必须要去思考

1.为什么要用?

2.是什么?

所有的服务端口不同 增大了前端调用成本 同时我们的所有服务是分散的 你可能需要进行集中管理操作

比如说 集中解决跨域 鉴权 接口文档 服务的路由 接口安全性 流量染色

Gateway 想自定义一些功能

需要对这个技术有比较深的理解

接口路由

统一的接收前端请求

然后转发请求到对应的服务

Gateway 是应用层网关 想要自定义一些功能 需要对这个技术有较深的理解

Nginx 是接入层网关 比如说每个请求的日志 通常没有业务逻辑

如何找到路由

可以编写一套路由配置 通过API地址前缀来找到服务

spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:routes:- id: yuoj-backend-user-serviceuri: lb://yuoj-backend-user-servicepredicates:- Path=/api/user/**- id: yuoj-backend-question-serviceuri: lb://yuoj-backend-question-servicepredicates:- Path=/api/question/**- id: yuoj-backend-judge-serviceuri: lb://yuoj-backend-judge-servicepredicates:- Path=/api/judge/**application:name: yuoj-backend-gatewaymain:web-application-type: reactive
server:port: 8101
knife4j:gateway:# ① 第一个配置,开启gateway聚合组件enabled: true# ② 第二行配置,设置聚合模式采用discover服务发现的模式strategy: discoverdiscover:# ③ 第三行配置,开启discover模式enabled: true# ④ 第四行配置,聚合子服务全部为Swagger2规范的文档version: swagger2

解释一下 配置

#         ------------------------------------
#         服务id 地址所对应的服务- id: yuoj-backend-user-service
#         地址 请求到哪个地址uri: lb://yuoj-backend-user-service
#         规则 哪些服务请求到地址predicates:- Path=/api/user/**
#         ------------------------------------

兼容问题

解决找不到数据库的问题

Gateway微服务网关聚合文档

如果想调试网关项目

可以使用接口文档工具 比如说postman

以一个全局的视角集中查看和管理所有的接口文档

可以用 knife4j 这个库

先要给所有的服务引入依赖 同时开启接口文档的配置

给网关配置集中管理文档

快速开始 | Knife4j (xiaominfo.com)

先引入依赖

只给需要的模块引入

		<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-gateway-spring-boot-starter</artifactId><version>4.3.0</version></dependency>

进行配置

knife4j:gateway:# ① 第一个配置,开启gateway聚合组件enabled: true# ② 第二行配置,设置聚合模式采用discover服务发现的模式strategy: discoverdiscover:# ③ 第三行配置,开启discover模式enabled: true# ④ 第四行配置,聚合子服务全部为Swagger2规范的文档version: swagger2

我都写代码了 还让我写那么多繁杂的配置 是对程序员的不尊重

这样就能聚合文档 文档里面有接口文档工具

可以很方便的调试

分布式session登录

注意的是一定要在总体项目的pom.xml文件加入redis的依赖

<!-- redis -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId>
</dependency>

访问地址 /doc.html 可查看接口文档

Session 是一种用于在用户与应用程序之间保持状态的机制。它允许在用户访问不同页面时存储和管理用户信息,如登录状态、购物车内容等。Session 通常在服务器端存储,并通过唯一的会话 ID 来识别用户。

Session 的管理通常包括以下几个方面:

  1. 创建与初始化:当用户首次访问应用时,服务器为其创建一个新的 Session,并生成一个唯一的 Session ID。

  2. 存储数据:开发者可以在 Session 中存储各种数据,如用户信息、应用状态等,这些数据在用户的多个请求中保持可用。

  3. 过期管理:Session 会设定一个过期时间,超过这个时间后,Session 将失效,存储的数据也会被清除。这可以帮助节省资源和提升安全性。

  4. 安全性:为了保护 Session 数据,常用的方法包括加密 Session ID、使用 HTTPS 等。

  5. 结束与销毁:用户登出时或 Session 过期时,服务器会销毁该 Session,以释放资源。

解决 cookie 跨路径问题

server:address: 0.0.0.0port: 8104servlet:context-path: /api/judge# cookie 30 天过期session:cookie:max-age: 2592000path: /api

http://www.ppmy.cn/news/1537625.html

相关文章

冲呀!重阳节(潸然泪下)——早读(逆天打工人爬取热门微信文章解读)

冲呀 引言Python 代码第一篇 洞见 没有父母的重阳节&#xff08;潸然泪下&#xff09;第二篇 切割结尾 &#xff08;牛市的危害呀&#xff09; 引言 恐怖至极 现在杀猪盘真多 我接到一个建设银行的短信 然后觉得最近是不错的借贷时机&#xff08;dddd&#xff09; 然后对方就…

Android广播

文章目录 1.收发应用广播1.标准广播2.有序广播3.广播的静态注册 2.监听系统广播1.接受分钟到达广播2.接受网络变更广播3.定时管理器AlarmManager 3.捕捉屏幕的变更事件1.竖屏和横屏切换2.回到桌面与切换到任务列表 1.收发应用广播 1.标准广播 广播的收发过程分为三个步骤&…

【大学学习-大学之路-回顾-电子计算机相关专业-学习方案-自我学习-大二学生(2)】

【大学学习-大学之路-回顾-电子&计算机相关专业-学习方案-自我学习-大二学生&#xff08;2&#xff09;】 1、前言2、总体说明1-保证课程原因1&#xff1a;原因2&#xff1a; 2-打比赛3-自我适应 - 享受大学生活 3、 保证课程1、英语课程2、专业课程3、其他课程 4、 打比赛…

日语学习零基础生活日语口语柯桥外语学校|股票用日语怎么说?

在日语中&#xff0c;“股票”可以说&#xff1a; • 株&#xff08;かぶ&#xff09; 这是最常用的表达方式&#xff0c;直接表示“股票”。 例如&#xff1a; 株を買う - 买股票 株を売る - 卖股票 • 株式&#xff08;かぶしき&#xff09; 这个词也是“股票”的意…

拓扑排序基础及应用案例

文章目录 基础内容应用案例&#xff1a;软件构建系统的依赖管理背景描述解决方案具体步骤示例代码 基础内容 拓扑排序&#xff08;Topological Sort&#xff09;是一种针对有向无环图&#xff08;Directed Acyclic Graphs, DAG&#xff09;的排序方法。它的目的是找出一种图中…

shell 脚本批量更新本地git仓库

文章目录 一、问题概述二、解决方法三、运行效果1. windows2. centos 一、问题概述 你是否遇到这样的场景&#xff1a; 本地git仓库克隆了线上的多个项目&#xff0c;需要更新时&#xff0c;无法象svn一样&#xff0c;选中多个项目一起更新。 只能苦逼的一个个选中&#xff0c…

访问公司gitlab出现 502 Bad Gateway 错误,已经解决

文章目录 1、通过 WindTerm 连接 Ubuntu2、检查 GitLab 服务状态3、查看 Unicorn 日志4、检查 Unicorn 的 stderr 日志5、检查 PID6、停止当前运行的 Unicorn 服务7、确认 Unicorn 已停止8、删除陈旧的 .pid 文件9、重新启动 GitLab 服务10、检查状态11、查看 Unicorn 日志 我公…

2024系统分析师---试题二:论软件测试中缺陷管理及其应用

述常见的缺陷种类和级别&#xff0c;论述缺陷管理的基本流程 常见的缺陷种类和级别&#xff1a; 缺陷种类&#xff1a; 功能缺陷&#xff1a;软件未能按照需求规格说明书实现预定功能。性能缺陷&#xff1a;软件在响应时间、吞吐量、资源利用率等方面不满足性能要求。界面缺陷…