如何搭建Gateway服务

  1. Gateway的简单介绍

    1. Spring Cloud Gateway是Spring Cloud的一个项目,该项目是基于Spring,Spring Boot和Project Reactor等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
    2. Gateway网关可以是所有微服务的统一入口,具有请求路由、权限控制、限流的功能特性
      1. 权限控制:网关作为微服务入口,需要校验用户是否有请求资格,如果没有则进行拦截
      2. 路由和负载均衡:一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当然路由的目标服务有多个时,还需要做负载均衡
      3. 限流:当请求流量过高时,在网关中按照下游的微服务能够接受的速度来放行请求,避免服务压力过大
    3. 在Spring Cloud中网关的实现有gateway、zuul,但Zuul是基于Servlet的实现,属于阻塞式编程,而Spring Cloud Gateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能
  2. 那么现在我们就开始简单的搭建gateway服务

    1. 首先创建gateway的maven项目,并在maven的pom文件中添加依赖
      1.

      XML 复制代码
              <!-- Nacos依赖 -->
              <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-gateway</artifactId>
              </dependency>
    2. 编写gateway的spring boot的启动类
      1.

      java 复制代码
      package com.app.user;
      
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      
      /**
       * spring boot启动类
       *
       * @author Administrator
       */
      @SpringBootApplication
      public class GatewayApplication {
          public static void main(String[] args) {
              SpringApplication.run(GatewayApplication.class, args);
          }
      }
    3. 创建application.yml文件,并编写基础的配置信息以及路由规则
      1.

      bash 复制代码
      server:
        port: 12080
      spring:
        application:
          #应用的名称
          name: gateway-service
        cloud:
          nacos:
            # Nacos Server 启动监听的ip地址和端口
            server-addr: 192.168.xxx.xxx:8848
            discovery:
              # nacos开启鉴权之后的用户名
              username: nacos
              # nacos开启鉴权之后的用户登录密码
              password: nacos
          gateway:
            # 网关的路由配置
            routes:
              # 路由id,自定义,只要唯一即可
              - id: nacos-feign-user-service
                # 路由的目标地址,lb就是负载均衡,后面跟服务名称
                uri: lb://nacos-feign-user-service
                # 路由断言,也就是判断请求是否符合路由规则的条件
                predicates:
                  # 这个是按照路径匹配,只要以/users/开头就符合要求
                  - Path=/users/**
  3. 启动gateway-service服务,访问http://127.0.0.1:12080/users/2时,符合/users/\*\*规则,然后请求转发到uri:http://nacos-feign-user-service/users/2

相关推荐
暗夜猎手-大魔王18 小时前
转载--AI Agent 架构设计:Gateway 架构设计(OpenClaw、Claude Code、Hermes Agent 对比)
gateway
SarL EMEN20 小时前
Gateway Timeout504 网关超时的完美解决方法
gateway
2601_949194262 天前
Gateway Timeout504 网关超时的完美解决方法
gateway
码点滴3 天前
私有 Gateway 接入企业 IM:从消息路由到多租户隔离——Hermes Agent 工程实战
人工智能·架构·gateway·prompt·智能体·hermes
代码写到35岁3 天前
Gateway+OpenFeign 踩坑总结
gateway
invicinble3 天前
对于gateway信息量沉淀
gateway
郝开4 天前
Spring Cloud Gateway 3.5.14 使用手册
java·数据库·spring boot·gateway
Ribou5 天前
Kubernetes v1.35.2 基于 Cilium Gateway API 的服务访问架构
架构·kubernetes·gateway
huipeng9266 天前
GateWay使用详解
java·spring boot·spring cloud·微服务·gateway
随风,奔跑9 天前
Spring Cloud Alibaba(四)---Spring Cloud Gateway
后端·spring·gateway