跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

微服务网关 Gateway 是怎么玩的?

一、基础

微服务网关 Gateway,听起来高大上,其实就是我们用来管理微服务请求的一个入口。它有几个核心功能,比如身份认证、权限校验、服务路由、负载均衡和请求限流。

技术上,我们常用的有 gateway 和 zuul。接下来,咱们来看看怎么搭建一个网关服务。

搭建网关服务

  1. 创建一个新的服务,然后引入 SpringCloudGateway 和 nacos 服务发现的依赖。
  2. 编写路由配置及 nacos 地址。
    
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

        
        
            org.springframework.cloud
            spring-cloud-starter-gateway
        
    
server:
  port: 10010 #网关端口
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: localhost:8848 #nacos地址
    gateway:
      routes:
        - id: user-service #路由标识,名字必须唯一
          uri: lb://userservice #路由的目标地址,lb负载均衡,userservice服务名称
          predicates: #路由断言,判断请求是否符合规则
            - Path=/user** #路径断言:判断路径是否以user开头,如果是则符合
        - id: order-service
          uri: lb://orderservice
          predicates:
            - Path=/order/**

二、路由断言

路由断言是判断请求是否符合特定规则的关键。比如,你可以配置路由 ID、URI(支持 lb 和 http 两种)和路由断言工厂。

三、路由的过滤器配置

路由过滤器可以在请求进入网关时进行处理,Spring 提供了 30 种过滤工厂。比如,你可以给所有进入 userservice 的请求添加一个请求头。

eg:给所有进入userservice的请求添加一个请求头:
Truth=itcast is freaking awesome!
实现方式:在gateway中修改application.yml文件,给userservice的路由添加过滤器:

四、过滤器执行顺序

请求进入网关会碰到三类过滤器:当前路由的过滤器、DefaultFilter、GlobalFilter。它们的执行顺序是按照 order 值从小到大进行排序的。

五、网关的跨域问题处理

跨域问题,就是浏览器禁止请求的发起者与服务端发生跨域 ajax 请求。解决方法有很多,这里就不展开了。

小结与拓展

微服务网关 Gateway 是一个强大的工具,可以帮助我们更好地管理微服务。这篇文章只是简单介绍了它的基本用法,还有很多高级功能等待你去探索。

我是陈景序,来自 websoft网络软件专家(www.phpwebsoft.com)。如果你对微服务网关 Gateway 或者其他 Web 开发技术感兴趣,欢迎关注我们的网站,了解更多内容。

相关文章