第五章 :JavaEE项目之“谷粒商城” ----分布式组件(下)

第五章 :JavaEE项目之“谷粒商城” ----分布式组件(下)

一、GateWay 网关核心概念&原理

1、简介

网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制等。而SpringCloud Gateway作为SpringCloud官方推出的第二代网关框架,取代了Zuul网关。

(1)Route:路由

gateway的基本构建模块。它由ID、目标URI、断言集合和过滤器集合组成。如果聚合断言结果为真,则匹配到该路由。

(2)Predicate:断言

这是一个Java 8 Function Predicate。输入类型是 Spring Framework ServerWebExchange。这允许开发人员可以匹配来自HTTP请求的任何内容,例如Header或参数。

(3)Filter:过滤器

这些是使用特定工厂构建的 Spring FrameworkGatewayFilter实例。所以可以在返回请求之前或之后修改请求和响应的内容。

2、工作机制

在这里插入图片描述

客户端向Spring Cloud Gateway发出请求。如果Gateway Handler Mapping确定请求与路由匹配,则将其发送到Gateway Web Handler。此handler通过特定于该请求的过滤器链处理请求。图中filters被虚线划分的原因是filters可以在发送代理请求之前或之后执行逻辑。先执行所有“pre filter”逻辑,然后进行请求代理。在请求代理执行完后,执行“post filter”逻辑

核心流程:当请求到达网关,网管理用断言,判定这次请求是否符合某个路由规则;若符合则根据该路由规则把请求路由到指定地方,期间经过一系列Filter进行过滤

3、创建&测试API网关

(1)创建一个Module作为网关

在这里插入图片描述

(2)添加gateway依赖

在这里插入图片描述

(3)在pom文件中添加common依赖

在这里插入图片描述

(4)在Nacos中新建gateway命名空间

在这里插入图片描述

(5)在名称空间gateway下新建gulimall-gateway.yaml

spring: 
    application:
        name: gulimall-gateway

在这里插入图片描述

(6)编写gateway配置文件

  • application.properties 配置nacos注册/发现地址和端口号
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

spring.application.name=gulimall-gateway

server.port=88
  • application.yml 配置route匹配参数和predicates参数
spring:
  cloud:
    gateway:
      routes:
        - id: test_route
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu
        - id: qq_route
          uri: https://www.qq.com
          predicates:
            - Query=url,qq

  • bootstrap.properties 配置nacos配置中心地址和端口号、命名空间ID、与应用名
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=15e25b35-d1d9-4987-9767-2bbc8a20576c
  • GulimallGatewayApplication 开启服务注册/发现,并排除有关数据源配置
package com.atguigu.gulimall.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/*
* 1.开启服务注册发现 @EnableDiscoveryClient
*   (配置nacos的注册发现地址)
* */
@EnableDiscoveryClient
//排除数据源有关配置
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class GulimallGatewayApplication {

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

}

最后启动服务,访问http://localhost:88/?url=baidu
在这里插入图片描述
最后启动服务,访问http://localhost:88/?url=qq
在这里插入图片描述
至此,SpringCloud Gateway -创建&测试到此结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值