断言Predicate和过滤器(Filter)

1、Predicate断言又称谓词,用于条件判断,只有断言结果都为真,才会真正的执行路由。断言本质是定义路由转发的条件。

2时间判断有三种:

1) AfterRoutePredicateFactory:判断请求日期是否晚于指定日期
2) BeforeRoutePredicateFactory:判断请求日期是否早于指定日期
3) BetweenRoutePredicateFactory:判断请求日期是否在指定时间段内

例:-After=2020-12-31T23:59:59.789+08:00[Asia/Shanghai]---表示在2020.12.31.之后可以进行访问

3、Method:表示请求方式,如果跟写的请求方式不同,那么就会判断false,从而不能访问成功。

 二、过滤器(Filter)

过滤器(filter)就是在请求传递过程中,对请求和响应做一个处理,Gateway的Filter从作用范围可分为两种:GatewayFilter与GlobalFilter。

(1)、GatewayFilter:应用在单个路由或者一个分组的路由上

(2)、GlobalFilter:应用到所有的路由上。

配置的话写在配置文件中。在spring-cloud-gatewa下面。

三、限流设计

1、网关是所有外部请求的公共入口,所以可以在网关进行限流,而且限流方式有很多,我们采用sentinel组件来实现网关的限流。

进行限流设计:

        1、添加依赖:添加spring-cloud-starter-gateway    spring-cloud-starter-alibaba-sentinel  

  spring-cloud-alibaba-sentinel-gateway。

        2、添加sentinel和路由规则。

路由配置

routes:
  - id: route01
    uri: lb://sca-provider
    predicates: ###匹配规则
      - Path=/provider/echo/**

 sentinel配置

sentinel:
  transport:
    dashboard: localhost:8180 #Sentinel 控制台地址
  eager: true  #取消Sentinel控制台懒加载,即项目启动即连接

        3、启动网关项目,检测sentinel控制台的网关菜单。

启动时,添加sentinel的jvm参数,通过此菜单可以让网关服务在sentinel控制台显示不一样的菜单,代码如下:

-Dcsp.sentinel.app.type=1

 

sentinel控制台启动后,界面是

4、在sentinel面板中设置限流策略。

前端排错:使用debugger是设置断点

练习总结:

微服务架构下Ajax请求响应实践。

流程图如下:

 首先是在一个网页里设置一个点击按钮,点击后发送Ajax访问请求,转给网关服务,然后再由网关转给服务类。服务类获取到参数,再转给网关,网关再传给网页,并将数据显示在网页中。

1、创建ui网页工程----先导入依赖spring-boot-stater-web依赖。

2、创建启动类

3、在resource文件夹下的创建一个HTML文件,使用Ajax请求,需要导入js文件。

js文件要在static目录下添加。如图

两种添加方式

cdn:---直接使用网上的js文件--网速好的话。

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

第二种:下载下来放到js文件夹下


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <div>
    <h2>The Index Page</h2>
    <button οnclick="doBuy()">Buy</button>
    <span id="result"></span>
  </div>
  <!--
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  -->
  <script src="/js/axios.min.js"></script>
  <script>
     //前端如何排错(日志,debugger,排除)
     function doBuy(){
         console.log("==doBuy==");
        //1.基于axios框架发送异步ajax请求
         let url="http://localhost:9000/nacos/provider/echo/1"
         let span=document.getElementById("result");
         axios.get(url)

             .then(function (response) {//请求ok,执行then
                 console.log(response.data);
                 //2.将响应结果更新到页面上
                 span.innerHTML = response.data
             })
             .catch(function (error) {
                 debugger //设置断点
                 //console.log(error);
                 if(error.response.status==429){
                     span.innerHTML = error.response.statusText;
                 }
             });

     }
 </script>
</body>
</html>

4、 在sca-gateway的配置文件中添加跨域设置

spring:
  cloud:
    gateway: 
      globalcors: #跨域配置
        cors-configurations:
          '[/**]':
            allowedOrigins: "*"
            allowedMethods: "*"
 

5、启动服务进行测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值