免费网站网络推广,做网站能挣钱么,短视频推广的优势,网站建设行业新闻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) 先引入依赖
只给需要的模块引入 dependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-gateway-spring-boot-starter/artifactIdversion4.3.0/version/dependency 进行配置 knife4j:gateway:# ① 第一个配置开启gateway聚合组件enabled: true# ② 第二行配置设置聚合模式采用discover服务发现的模式strategy: discoverdiscover:# ③ 第三行配置开启discover模式enabled: true# ④ 第四行配置聚合子服务全部为Swagger2规范的文档version: swagger2 我都写代码了 还让我写那么多繁杂的配置 是对程序员的不尊重 这样就能聚合文档 文档里面有接口文档工具
可以很方便的调试 分布式session登录
注意的是一定要在总体项目的pom.xml文件加入redis的依赖
!-- redis --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId
/dependency
dependencygroupIdorg.springframework.session/groupIdartifactIdspring-session-data-redis/artifactId
/dependency 访问地址 /doc.html 可查看接口文档 Session 是一种用于在用户与应用程序之间保持状态的机制。它允许在用户访问不同页面时存储和管理用户信息如登录状态、购物车内容等。Session 通常在服务器端存储并通过唯一的会话 ID 来识别用户。
Session 的管理通常包括以下几个方面 创建与初始化当用户首次访问应用时服务器为其创建一个新的 Session并生成一个唯一的 Session ID。 存储数据开发者可以在 Session 中存储各种数据如用户信息、应用状态等这些数据在用户的多个请求中保持可用。 过期管理Session 会设定一个过期时间超过这个时间后Session 将失效存储的数据也会被清除。这可以帮助节省资源和提升安全性。 安全性为了保护 Session 数据常用的方法包括加密 Session ID、使用 HTTPS 等。 结束与销毁用户登出时或 Session 过期时服务器会销毁该 Session以释放资源。 解决 cookie 跨路径问题 server:address: 0.0.0.0port: 8104servlet:context-path: /api/judge# cookie 30 天过期session:cookie:max-age: 2592000path: /api