学成在线搭建网关工程

2024-01-22 08:20

本文主要是介绍学成在线搭建网关工程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Gateway

网关的作用

目前为止一共有内容管理、系统管理、媒资管理三个微服务,当访问不同的微服务时前端就需要配置不同的请求路径,这样后期修改时非常麻烦不利于系统维护

我们可以在访问微服务前先访问统一网关地址,这样每个请求先统一发送到网关,再由网关将请求转发到对应的微服务

在这里插入图片描述

export async function dictionaryAll(params: any = undefined, body: any = undefined): Promise<ISystemDictionary[]> {// 请求系统管理服务的地址使用的是localhost,当系统上线后这里需要改成公网的域名,如果这种地址非常多修改起来则非常麻烦const { data } = await createAPI('http://localhost:63110/system/dictionary/all', 'get', params, body)// 使用相对路径并且baseUrl应该是网关的的地址而不是某个微服务的地址,通过网关访问具体的微服务const { data } = await createAPI('/system/dictionary/all', 'get', params, body)return data
}

首先每个微服务将自身注册到Nacos注册中心,网关可以从Nacos中获取微服务列表,这样当请求到达网关后网关会根据某种路由规则将请求转发给匹配的微服务
在这里插入图片描述

搭建网关

第一步: 本项目使用Spring Cloud Gateway作为网关,新建一个网关工程xuecheng-plus-gateway

在这里插入图片描述

第二步:指定网关工程的父工程为xuecheng-plus-parent

<!--指定父工程为xuecheng-plus-parent-->
<parent><groupId>com.xuecheng</groupId><artifactId>xuecheng-plus-parent</artifactId><version>0.0.1-SNAPSHOT</version><relativePath>../xuecheng-plus-parent</relativePath>
</parent>
<artifactId>xuecheng-plus-gateway</artifactId>

第三步: 在xuecheng-plus-gateway工程中添加所需要的依赖

<dependencies><!--网关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--服务发现中心--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--服务配置中心--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- 排除Spring Boot依赖的日志包冲突 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!-- Spring Boot 集成log4j2 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency>
</dependencies>

第四步: 在本地配置网关工程的bootstrap.yaml配置文件

spring:application:name: gatewaycloud:nacos:server-addr: 127.0.0.1:8848discovery:namespace: ${spring.profiles.active}group: xuecheng-plus-projectconfig:namespace: ${spring.profiles.active}group: xuecheng-plus-projectfile-extension: yamlrefresh-enabled: trueshared-configs:- data-id: logging-${spring.profiles.active}.yamlgroup: xuecheng-plus-commonrefresh: trueprofiles:active: dev

第五步: 在Nacos配置中心的开发环境(dev)下的xuecheng-plus-project分组中添加远程配置文件gateway-dev.yaml配置网关的路由策略

server:port: 53010 # 网关端口
spring:cloud:gateway:routes: # 网关路由配置- id: content-api # 路由iduri: lb://content-api # 路由的目标地址,lb表示负载均衡,后面是Nacos中注册的服务名称predicates: # 路由断言即判断请求是否符合路由规则的条件- Path=/content/** # 匹配以/content/开头的请求- id: system-apiuri: lb://system-api # 转发到Nacos中system-api服务对应的服务实例predicates:- Path=/system/**- id: media-apiuri: lb://media-api # 转发到Nacos中media-api服务对应的服务实例predicates:- Path=/media/**

第六步: 在http-client-env.json中配置网关的地址

{"dev": {"host": "localhost:53010","content_host": "localhost:53040","system_host": "localhost:53110","media_host": "localhost:53050","cache_host": "localhost:53035",// 网关地址 "gateway_host": "localhost:53010"}
}

第七步: 启动网关工程然后使用httpclient通过访问网关工程将请求转发到内容管理服务的课程查询接口

# 控制台中网关转发到ne课程查询的日志
Handler is uri=http://localhost:63040/content/course/list?pageNo=2&pageSize=1, method=POST}
### 课程查询列表
POST {{gateway_host}}/content/course/list?pageNo=2&pageSize=1
Content-Type: application/json{"auditStatus": "202002","courseName": ""
}# 响应结果
POST http://localhost:53010/content/course/list?pageNo=1&pageSize=2HTTP/1.1 200 OK
transfer-encoding: chunked
Content-Type: application/json
Date: Tue, 14 Feb 2023 10:25:35 GMT
{"items": [{"id": 1,"companyId": 22,"companyName": null,"name": "JAVA8/9/10新特性讲解啊",···}

第八步: 将前端工程中请求的baseUrl设置为网关的地址,通过网关访问具体的微服务

在这里插入图片描述

这篇关于学成在线搭建网关工程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/632395

相关文章

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加