SpringCloudAlibaba篇(五)整合GateWay(微服务网关,gateway+sentinel)2022年最新

上一篇,SpringCloudAlibaba篇(四)整合Dubbo(RPC 分布式服务框架)

文章目录

    • 前言
    • GateWay执行流程
    • 1.创建gateway模块
      • 1.1 pom 依赖
      • 1.2 创建启动类
      • 1.3 创建配置文件
      • 1.4 nacos创建配置文件gateway.yaml
      • 1.5 启动测试
    • 2. gateway整合sentinel
      • 2.1 添加依赖
      • 2.2 配置文件
      • 2.3 启动测试

前言

Spring Cloud 原先整合 Zuul 作为网关组件,Zuul 由 Netflix 公司提供的,现在已经不维护了。后面 Netflix 公司又出来了一个 Zuul2.0 网关,但由于一直没有发布稳定版本,所以 Spring Cloud 等不及了就自己推出一个网关,已经不打算整合 zuul2.0 了。

Spring Cloud Gateway 是 Spring 公司基于 Spring 5.0, Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控和限流。

GateWay执行流程

SpringCloudAlibaba篇(五)整合GateWay(微服务网关,gateway+sentinel)2022年最新_第1张图片

1.创建gateway模块

SpringCloudAlibaba篇(五)整合GateWay(微服务网关,gateway+sentinel)2022年最新_第2张图片

1.1 pom 依赖

    
    <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>SpringCloudAlibaba2022artifactId>
            <groupId>top.fategroupId>
            <version>1.0.0version>
        parent>
        <modelVersion>4.0.0modelVersion>
    
        <artifactId>gatewayartifactId>
        <name>${project.artifactId}name>
        <version>${fate.project.version}version>
        <packaging>jarpackaging>
    
        <properties>
            <maven.compiler.source>8maven.compiler.source>
            <maven.compiler.target>8maven.compiler.target>
        properties>
    
        <dependencies>
            
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
                <exclusions>
                    <exclusion>
                        <groupId>com.alibaba.nacosgroupId>
                        <artifactId>nacos-clientartifactId>
                    exclusion>
                exclusions>
                <version>${spring-cloud-alibaba.version}version>
            dependency>
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
                <exclusions>
                    <exclusion>
                        <groupId>com.alibaba.nacosgroupId>
                        <artifactId>nacos-clientartifactId>
                    exclusion>
                exclusions>
                <version>${spring-cloud-alibaba.version}version>
            dependency>
            <dependency>
                <groupId>com.alibaba.nacosgroupId>
                <artifactId>nacos-clientartifactId>
                <version>${alibaba.nacos.version}version>
            dependency>
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-bootstrapartifactId>
            dependency>
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-gatewayartifactId>
            dependency>
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-loadbalancerartifactId>
            dependency>
        dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.pluginsgroupId>
                    <artifactId>maven-antrun-pluginartifactId>
                    <executions>
                        <execution>
                            <phase>packagephase>
                        execution>
                    executions>
                plugin>
            plugins>
        build>
    
    project>

1.2 创建启动类

SpringCloudAlibaba篇(五)整合GateWay(微服务网关,gateway+sentinel)2022年最新_第3张图片

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

1.3 创建配置文件

在这里插入图片描述

url:
  nacos: localhost:8848
spring:
  application:
    name: gateway #实例名
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        #集群环境隔离
        cluster-name: shanghai
        #命名空间
        namespace: ${spring.profiles.active}
        #持久化实例 ture为临时实例 false为持久化实例  临时实例发生异常直接剔除, 而持久化实例等待恢复
        ephemeral: true
        #注册中心地址
        server-addr: ${url.nacos}
      config:
        namespace: ${spring.profiles.active}
        file-extension: yaml
        #配置中心地址
        server-addr: ${url.nacos}
        extension-configs[0]:
          data-id: gateway.yaml
          group: DEFAULT_GROUP
          refresh: false

1.4 nacos创建配置文件gateway.yaml

SpringCloudAlibaba篇(五)整合GateWay(微服务网关,gateway+sentinel)2022年最新_第4张图片

server:
  port: 30001
spring:
  cloud:
    gateway:
      routes:
        - id: user-service
          uri: lb://user-service
          predicates:
            - Path=/user/**
        - id: order-service
          uri: lb://order-service
          predicates:
            - Path=/order/**

1.5 启动测试

SpringCloudAlibaba篇(五)整合GateWay(微服务网关,gateway+sentinel)2022年最新_第5张图片

上边我已经在配置文件中配置了路由, 我们可以直接通过访问网关拼接断言名去访问 user-service 或者order-service的服务
  • user-service访问成功
    SpringCloudAlibaba篇(五)整合GateWay(微服务网关,gateway+sentinel)2022年最新_第6张图片
  • order-service访问成功
    SpringCloudAlibaba篇(五)整合GateWay(微服务网关,gateway+sentinel)2022年最新_第7张图片

下一篇,SpringCloudAlibaba篇(六)整合Seata(微服务分布式事务nacos+seata)

2. gateway整合sentinel

2.1 添加依赖

  • pom

<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
    <version>${spring-cloud-alibaba.version}version>
dependency>
这里我使用的是2021.0.1.0

详见,包括sentinel服务端的下载安装 SpringCloudAlibaba篇(三)整合Sentinel(限流、流量整形、熔断降级、系统负载保护、热点防护,分布式服务架构的高可用流量防护组件)

2.2 配置文件

SpringCloudAlibaba篇(五)整合GateWay(微服务网关,gateway+sentinel)2022年最新_第8张图片

  • sentinel .yaml
spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080

2.3 启动测试

  • 访问我们的测试接口 http://localhost:30001/order/getUserService
  • 测试成功
    SpringCloudAlibaba篇(五)整合GateWay(微服务网关,gateway+sentinel)2022年最新_第9张图片

你可能感兴趣的:(SpringBoot,java,spring,boot,springcloud,maven,云原生)