2、gateway整合nacos使用

2年前 (2022) 程序员胖胖胖虎阿
221 0 0

一、父聚合项目springcloudalibaba

第一步:创建项目,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>
    <modules>
   		<module>gateway</module>
    </modules>
    <!--springboot的版本管理器-->
    <!--在公司当中,一般都会有自己的父maven-->
    <!--以后公司中开发就可以使用parent去继承公司自定义的父maven-->
<!--    <parent>-->
<!--        <groupId>org.springframework.boot</groupId>-->
<!--        <artifactId>spring-boot-starter-parent</artifactId>-->
<!--        <version>2.3.2.RELEASE</version>-->
<!--        <relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;-->
<!--    </parent>-->
    <!--该项目maven信息-->
    <groupId>com.example</groupId>
    <artifactId>springcloudalibaba</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloudalibaba</name>
    <description>Spring Cloud Alibaba</description>
    <packaging>pom</packaging>

    <!--属性集合-->
    <properties>
        <java.version>1.8</java.version>
        <spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version>
        <spring.cloud.version>Hoxton.SR8</spring.cloud.version>
        <spring.boot.version>2.3.11.RELEASE</spring.boot.version>
    </properties>

    <dependencyManagement>
        <!--放在dependencyManagement里的依赖,子maven一定要显式的声明,
            没有放在dependencyManagement里的依赖,子maven直接继承父maven的没放的依赖
        -->
        <!--spring cloud alibaba的版本管理器,通过dependency方式来完成继承-->
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--springboot的版本管理器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--Spring Cloud的版本管理-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!--依赖集合-->
    <dependencies>
        <!--springboot基本场景启动-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!--springboot测试场景-->
        <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>

二、子模块order

第一步:创建子模块,pom.xml添加依赖

三、子模块stock

四、子模块gateway

第一步:创建子模块,pom.xml添加依赖

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloudalibaba</artifactId>
        <groupId>com.example</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>gateway</artifactId>

    <dependencies>
        <!--gateway依赖,需要有springcloud的依赖管理器,如果没有设置的话,需要指定版本-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        
        <!--nacos服务注册与发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>
    
</project>

第二步:创建gateway启动类

package com.example.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class GatewayApplication {

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

第三步:创建配置文件application.yml

server:
  port: 8070
spring:
  application:
    name: api-gateway
  cloud:
    #gateway的配置
    gateway:
      #路由配置 [路由 就是指定当请求满足什么条件的时候转到哪个微服务]
      routes:
        - id: order_route #路由的唯一标识,路由到order
          uri: lb://order-service #需要转发的地址,lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略
          #断言规则,就是路由转发要满足的条件
          predicates:
            - Path=/order-ser/** #当请求路径满足Path指定的规则时,才进行路由转发
            # 当客户端访问http://localhost:8070/order-ser/order/add 会路由到↓
            #  http://localhost:8081/order-ser/order/add,这个无法访问,需要filters过滤下
          filters: #过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改
            - StripPrefix=1 # 转发之前去掉第一层路由
            # StripPrefix的操作会将上述http://localhost:8081/order-ser/order/add 路由到
            # http://localhost:8081/order/add
      #        - id: stock_route
    #配置nacos
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos

第四步:启动服务,测试

启动nacos,order-service,stock-service,gateway

2、gateway整合nacos使用

2、gateway整合nacos使用

访问:http://localhost:8070/order-ser/order/add

2、gateway整合nacos使用

访问成功

简单配置

server:
  port: 8070
spring:
  application:
    name: api-gateway
  cloud:
    #gateway的配置
    gateway:
      discovery:
        locator:
          enabled: true #是否启动自动识别nacos服务
    #配置nacos
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos

spring.cloud.gateway.discovery.locator.enabled=true,会拿nacos服务名为断言,也会将服务名进行过滤,从而路由到该服务的请求。所以访问:http://localhost:8070/order-service/order/add

2、gateway整合nacos使用

版权声明:程序员胖胖胖虎阿 发表于 2022年10月2日 上午10:16。
转载请注明:2、gateway整合nacos使用 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...