首页 > 其他分享 >使用gateway转发请求到nacos上对应的服务

使用gateway转发请求到nacos上对应的服务

时间:2023-11-08 15:33:20浏览次数:31  
标签:spring nacos 转发 cst com gateway cloud

场景

业务需要用到在nacos注册的第三方服务,页面直接调用服务,所以采用gateway转发请求的方式

过程

  • 创建一个空的springboot项目

  • pom文件依赖,主要注意springboot和springcloud版本对应关系

点击查看代码
<?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>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.demo</groupId>
    <artifactId>client-gateway</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR8</spring-cloud.version>
        <maven.deploy.skip>true</maven.deploy.skip>
    </properties>

    <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>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR12</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.7.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>
    <repositories>
        <repository>
            <id>stcsnapshots</id>
            <name>stcsnapshots</name>
            <url>http://10.10.10.149:8081/nexus/content/repositories/snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>stcreleases</id>
            <name>stcreleases</name>
            <url>http://10.10.10.149:8081/nexus/content/repositories/releases/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>cst-snapshots</id>
            <name>cst-snapshots</name>
            <url>http://maven.cst.asiainfo.com/repository/cst-snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>abc-snapshots</id>
            <name>abc-snapshots</name>
            <url>http://maven.cst.asiainfo.com/repository/abc-snapshots/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>cstmaven</id>
            <name>cstmaven</name>
            <url>http://maven.cst.asiainfo.com/repository/cstmaven/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>

        <repository>
            <id>mgpd</id>
            <name>mgpd</name>
            <url>http://maven.cst.asiainfo.com/repository/mgpd-group/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>mavenpublic</id>
            <name>mavenpublic</name>
            <url>http://maven.cst.asiainfo.com/repository/maven-public/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <profiles>
    </profiles>
</project>

  • 配置application文件
点击查看代码
server.port=8080
spring.application.name=nacos-gateway
spring.cloud.nacos.discovery.server-addr=ip:port
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.discovery.namespace=myName
# 开启注册
spring.cloud.nacos.discovery.enabled=true
# gateway开启根据服务中心路由转发
spring.cloud.gateway.discovery.locator.enabled=true

spring.cloud.gateway.routes[0].id=third-api
spring.cloud.gateway.routes[0].uri=lb://third-service-name
spring.cloud.gateway.routes[0].predicates[0]=Path=/third-api/**
# 1的意思是转发的时候会吧path中的serviceName ,也就是第一个去掉
spring.cloud.gateway.routes[0].filters[0]=StripPrefix=1
  • 启动类添加注解
点击查看代码
@SpringBootApplication
@EnableDiscoveryClient
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

启动测试

在nacos上能看到注册的gateway服务
通过http://localhost:8080/third-api/test可以获取第三方服务的测试数据

标签:spring,nacos,转发,cst,com,gateway,cloud
From: https://www.cnblogs.com/idanyang/p/17817513.html

相关文章

  • nacos中group以及namespace的使用注意事项
    服务注册到不同的命名空间下,服务间无法通过OpenFeign指定服务名进行负载通信!!! 命名空间使用注意事项1.同名的命名空间只能创建一个! 2.微服务间如果没有注册到一个命名空间下,无法使用OpenFeign指定服务名负载通信(服务拉取的配置文件不同命名空间不影响) 即服务间如果需要......
  • c++右值引用、移动语义、完美转发
    1. 左值、右值、左值引用以及右值引用左值:一般指的是在内存中有对应的存储单元的值,最常见的就是程序中创建的变量右值:和左值相反,一般指的是没有对应存储单元的值(寄存器中的立即数,中间结果等),例如一个常量,或者表达式计算的临时变量intx=10inty=20intz=x+y//x......
  • 传统IP转发
    PC1访问PC2经过的路由R1:R2:R3:R4:过程图解......
  • springboot nacos使用yaml配置list方式
    方式一配置项:app:demo:list1:xiaohong,xiaominglist2:>xiaohong,xiaominglist1和list2看起来是2种风格,其实都是同一种写法,以逗号分隔java代码:@Data@ComponentpublicclassAppConfig1{@Value("${app.demo.list1}")privateList<Strin......
  • Docker下安装nacos
    1、拉取镜像dockerpullnacos/nacos-server2、挂载目录,用于映射到容器,目录按自己的情况创建dockervolumecreatenacos_testmkdir-p/var/lib/docker/volumes/nacos_test/logs/                     #新建logs目录mkdir-p/var/lib/docker/v......
  • Flask_微服务-Nacos
    微服务微服务通常需要通过REST或gRPC等协议相互通信,由于我们可能同时与多个微服务通信 Nacos-服务注册、发现与配置中心https://github.com/alibaba/nacos传统的单元应用架构开始朝着微服务架构方向演进。演进过程中首要问题就是微服务如何相互发现对方进行调用?我......
  • MacOS使用PF实现iptables的端口转发功能
    目录准备web服务通过pf实现端口转发其他命令参考文章准备web服务使用Flask启动一个简单的web服务fromflaskimportFlaskapp=Flask(__name__)@app.route('/')defhello_world():return'HelloWorld!'if__name__=='__main__':app.run(port=5000)浏览器访......
  • SSH 端口转发:动态转发、本地转发、远程转发
    目录动态转发本地转发远程转发参考文章动态转发$ssh-Dlocal-porttunnel-host-N参数说明-D:动态转发-N:不发送任何命令,只用来建立连接。没有这个参数,会在SSH服务器打开一个Shelllocal-port是本地端口tunnel-host是SSH服务器举例#开启本地端口2121动态转发$ssh-......
  • redhat --修改时区 转发 https://www.cnblogs.com/rongren/p/12600869.html
    LINUXredhat修改时间 在LINUX系统中,时间分为两个部分,一个是系统时间,只针对运行时,重启后就无用,二是主板时间,系统重启后,自动从主板中获取时间。一、查看时间  date命令:查看当前时间二、修改时间 时间修改有两种方法(一)修改系统时间,然后执行命令从系统同步时间 1、......
  • SpringCloudAlibaba引入Gateway统一网关
    一、概述网关是我们服务的守门神,是所有微服务的统一入口,一切请求都要先到网关,再到微服务,它可以帮助我们统一的进行一种操作,处理一些问题。网关的核心功能特性:1.请求路由、负载均衡一切请求都必须先经过gateway网关,但网关不处理业务,而是根据某种规则把请求转发到某个微服务,这个过程......