网关Gateway作用介绍和快速入门

目前架构问题分析

这里有很多微服务,每个微服务都需要晚上访问数据库去完成各自的业务,并且需要在nacos进行注册和管理,每一个微服务之间需要相互调用的时候,可以用Feign进行调用,当外部需要访问的时候,就直接发请求到微服务,就会产生问题,任何一个机器都可以访问到微服务,就会不安全

解决方案------网关

  • 身份认证和权限校验
  • 服务路由、负载均衡
  • 请求限流

网关的技术实现

  • gateway
  • zuul

Zuul是 基于Servlet的实现,属于阻塞式编程 。而SpringCloudGateway 则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。

总结

  • 网关的作用:
    • 对用户请求做身份认证、权限校验
    • 将用户请求路由到微服务,并实现负载均衡
    • 对用户请求做限流

搭建网关服务

引入依赖

创建新的module,引入SpringCloudGateway 的依赖和nacos的服务发现依赖

复制代码
        <!--网关依赖-->
        <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>

路由配置

编写路由配置及nacos地址

复制代码
spring:
  application:
    name: gateway # 服务名称
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:
      routes: # 网关路由配置
        - id: user-service # 路由id,自定义,只要唯一即可
          # uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
          uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
            - Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
        - id: order-service
          uri: lb://orderservice
          predicates:
            - Path=/order/**

测试

浏览器访问:http://localhost:10010/user/1

流程图

总结

  • 网关搭建步骤:
    1. 创建项目,引入nacos服务发现和gateway依赖
    2. 配置application.yml,包括服务基本信息、nacos地址、路由
  • 路由配置包括:
    1. 路由id:路由的唯一标示
    2. 路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡
    3. 路由断言(predicates):判断路由的规则,
    4. 路由过滤器(filters):对请求或响应做处理
相关推荐
神奇霸王龙1 小时前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
cfm_29141 小时前
基于Binlog实现不停机数据库平滑迁移技术
运维·数据库·架构
迪康Defender1 小时前
AI 重构终端安全运营:智能分析中枢 AI Insight 模块架构与落地场景深度解析
运维·网络·人工智能·其他·安全·重构·架构
张3蜂3 小时前
ALB、NLB、GWLB、CLB怎么选?
阿里云·云计算
HiDev_3 小时前
【非标自动化】2、认识元器件(固态继电器)
运维·自动化
明达智控技术3 小时前
国产 PLC 落地立库自动化,MC5000边缘智能控制器破局
运维·自动化
小绫网络安全4 小时前
Kali Linux渗透测试入门教程:从零搭建到实战攻防
linux·运维·服务器
西安景驰电子4 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
SaaS_Product4 小时前
在线文件收集工具推荐?几种常见的批量文件收集方法
人工智能·云计算·saas·onedrive
云原生指北6 小时前
Docker Sandboxes 上手:从安装到第一次跑 Agent
运维·docker·容器