SpringCloud组件详解-Gateway

66 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 14 天,点击查看详情

在文章SpringCoudAlibaba相关学习记录中总结了微服务项目中常用组件与相关概念,网关的基本介绍,特点,路由,断言,过滤及工作流程大部分简要介绍已经该文章中介绍过,本文开始将讲述微服务中组件的具体功能,作用,整合方法及相关知识;

pc (2).png

在系统中,网关作为流量访问项目的第一入口,可以协调大量服务调用,简化客户端工作,降低服务耦合,还可以进行负载均衡,访问控制,流控熔断降级等非业务功能实现,但是在微服务去中心化架构中,又成为了一个新的中心点,所以在程序设计上应该考虑这个中心点如果发生意外也尽量不影响服务运行,所以网关应该又缓存数据,或者默认数据,并且支持异步或者同步非阻塞以达到服务调用时互不影响;

在项目中引入网关

当我们创建微服务时,会启动多个项目,如果还向单体项目那样使用,直接通过访问某个模块的接口地址去访问;

图片.png

图片.png 当我们引入gateway时

//引入依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

//配置文件
server:
  port: 9527
spring:
  application:
    name: cloud-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true #开启从注册中心动态创建路由的功能,利用微服务名进行路由
      routes:
        - id: payment_routh #payment_route    #路由的ID,没有固定规则但要求唯一,建议配合服务名
#          uri: http://localhost:8001          #匹配后提供服务的路由地址
          uri: lb://cloud-payment-service #匹配后提供服务的路由地址
          predicates:
            - Cookie=username,zzyy #cookie
            - Header=X-Request-Id, \d+  #head请求头
#            - After=2021-02-22T15:51:37.485+08:00[Asia/Shanghai] #在该时间之后 更换After 为 Between 在两个时间之间 Bftore 在时间之前
#            - Path=/payment/get/**         # 断言,路径相匹配的进行路由

        - id: payment_routh2 #payment_route    #路由的ID,没有固定规则但要求唯一,建议配合服务名
#          uri: http://localhost:8001          #匹配后提供服务的路由地址
          uri: lb://cloud-payment-service #匹配后提供服务的路由地址
          predicates:
            - Path=/payment/getPort         # 断言,路径相匹配的进行路由