当前位置: 代码网 > 服务器>服务器>微服务 > 入门级微服务项目搭建:六、集成Gateway

入门级微服务项目搭建:六、集成Gateway

2024年08月06日 微服务 我要评论
​Gateway俗称网关,我平常喜欢叫它门卫大爷。平常的单体项目访问接口,都是直接通过暴露出来的路径进行访问。而在微服务中则有所不同,我们不直接访问服务,而是通过Gateway来访问服务,我们的请求先到Gateway中,然后再转到具体服务中去。听起来有点像nginx,所以介于这样的工作形式,我才会将Gateway亲切的称为门卫大爷。​Gateway原理我就不在这里过多的赘述了,直接开始集成Gateway的实战吧。

入门级微服务项目搭建:六、集成gateway

​ gateway俗称网关,我平常喜欢叫它门卫大爷。平常的单体项目访问接口,都是直接通过暴露出来的路径进行访问。而在微服务中则有所不同,我们不直接访问服务,而是通过gateway来访问服务,我们的请求先到gateway中,然后再转到具体服务中去。听起来有点像nginx,所以介于这样的工作形式,我才会将gateway亲切的称为门卫大爷。

​ gateway原理我就不在这里过多的赘述了,直接开始集成gateway的实战吧。

1.新建网关服务

新建项目mall-cloud-gateway,新建过程和之前的一样,最终的结构如下图所示:

在这里插入图片描述

2.修改网关服务的pom文件

pom文件的内容如下图所示:

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
	xsi:schemalocation="http://maven.apache.org/pom/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelversion>4.0.0</modelversion>
	<parent>
		<groupid>com.wcc</groupid>
		<artifactid>mall-cloud</artifactid>
		<version>0.0.1-snapshot</version>
	</parent>

	<groupid>com.wcc</groupid>
	<artifactid>mall-cloud-gateway</artifactid>
	<version>0.0.1-snapshot</version>
	<name>mall-cloud-gateway</name>
	<description>mall-cloud-gateway</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupid>org.springframework.boot</groupid>
			<artifactid>spring-boot-starter</artifactid>
		</dependency>

		<!--nacos注册中心-->
		<dependency>
			<groupid>com.alibaba.cloud</groupid>
			<artifactid>spring-cloud-starter-alibaba-nacos-discovery</artifactid>
		</dependency>

		<!--nacos配置中心-->
		<dependency>
			<groupid>com.alibaba.cloud</groupid>
			<artifactid>spring-cloud-starter-alibaba-nacos-config</artifactid>
		</dependency>

		<!--网关-->
		<dependency>
			<groupid>org.springframework.cloud</groupid>
			<artifactid>spring-cloud-starter-gateway</artifactid>
		</dependency>

		<dependency>
			<groupid>org.springframework.boot</groupid>
			<artifactid>spring-boot-starter-test</artifactid>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupid>org.springframework.boot</groupid>
				<artifactid>spring-boot-maven-plugin</artifactid>
			</plugin>
		</plugins>
	</build>

</project>

3.修改顶级父工程的pom文件

<modules>
    <module>mall-cloud-system</module>
    <module>mall-cloud-common</module>
    <module>mall-cloud-gateway</module>
</modules>

4.修改yml文件

  • 修改application.yml文件

    server:
      port: 9000
    
    spring:
      application:
        name: mall-cloud-gateway
    
  • 新增bootstrap.yml文件

    spring:
      application:
        name: mall-cloud-gateway
    
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848
            namespace: 65c5f8cb-1afd-420a-b725-f24cedc22475
          config:
            server-addr: localhost:8848
            namespace: 65c5f8cb-1afd-420a-b725-f24cedc22475
            file-extension: yml
    

5.nacos新增gateway服务的配置文件

​ 将gateway的路由配置放在nacos中比较方便,在修改了nacos上的路由配置后,程序会实时更新nacos中的路由配置,而不需要重启项目,十分便捷。而gateway的路由配置规则有蛮多的就不一一介绍了,你可以找一篇专门讲解gateway的文章进行学习,本文只简单集成gateway。

在这里插入图片描述

在这里插入图片描述

配置内容如下所示:

spring:
    cloud:
        gateway:
            # 打印请求日志(自定义)
            requestlog: true
            discovery:
                locator:
                    enabled: true
            routes:
                # 认证中心
                - id: system-user
                  uri: lb://system-user
                  predicates:
                      - path=/user/**
                  filters:
                      # 去除第一级路径
                      - stripprefix=1

最终获得如下所示的配置文件:

在这里插入图片描述

6.启动类加上@enablediscoveryclient注解

在这里插入图片描述

7.测试gateway是否生效

  • 将用户服务和网关服务都启动起来

在这里插入图片描述

  • 启动apifox通过gateway访问用户服务

在这里插入图片描述

通过上述结果可知,gateway已经被集成到项目中,并且能够正常生效了。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com