GateWay工作流程

核心流程图如下:

核心概念

客户端向 SpringCloud GateWay 发出请求,如果 GateWay Handler Mapping 确定请求与路由匹配,则将其发送到 GateWay Web Handler 处理程序,此处理请求通过特定的 Filter 链运行请求,执行所有pre过滤的逻辑,然后进行代理请求,然后运行post过滤器逻辑。

过滤器的作用

  • Filter在pre类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等;
  • Filter在post类型的过滤器可以做响应处理,日志输出、流量监控等;

三个核心

  • Route(路由)
    路由是构建网关的基础模块,它由ID、URI以及一系列的断言和过滤器组成,如果断言为真,则匹配路由。
  • Predicate(断言)
    可以匹配Http请求中所有内容(请求头、请求参数等),请求与断言匹配则进行路由。
  • Filter(过滤)
    是指Spring框架中GateWayFilter的实例,使用过滤器,使用过滤器,在路由前或者路由后对请求进行修改。

三个核心连起来就是:当用户发出请求到达GateWay,GateWay会通过一些匹配条件,定位到真正的服务节点,并在这个转发过程前后,进行一些细化的控制。其中断言就是我们匹配的条件,而Filter可以理解为一个拦截器,再加上URI就可以实现一个具体的路由了。

总结

GateWay的核心流程就是:路由转发 + 执行过滤器链。

【Java面试系列】GateWay异步非阻塞模型相关推荐

  1. nginx异步非阻塞理解

    nginx异步非阻塞理解? 看了一下午如何理解异步非阻塞,不是用生活举例的就是只是说某一点的,其实真的还是很不明白,最后只能通过nginx的异步非阻塞模型来稍微理解理解了,我也不拿什么生活的举例了因为 ...

  2. node异步非阻塞的杂谈

    引言 node作为服务器的优势就在于适合处理高并发的请求,对于web网站后台这种I/O密集型的后台尤其有优势,其核心就在于node是一个异步非阻塞模型.关于异步,同步,阻塞,非阻塞这些概念,本文不做讨 ...

  3. 面试必会系列 - 5.1 网络BIO、NIO、epoll,同步/异步模型、阻塞/非阻塞模型,你能分清吗?

    本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...

  4. Java异步非阻塞编程的几种方式

    简介: Java异步非阻塞编程的几种方式 一. 从一个同步的Http调用说起 一个很简单的业务逻辑,其他后端服务提供了一个接口,我们需要通过接口调用,获取到响应的数据. 逆地理接口:通过经纬度获取这个 ...

  5. 同步阻塞、同步非阻塞、异步阻塞、异步非阻塞与 I/O 多路复用、Java NIO 之间的联系

    同步阻塞.同步非阻塞.异步阻塞.异步非阻塞与 I/O 多路复用.Java NIO 之间的联系 先验知识 此处的异步指的是什么 同步.异步.阻塞.非阻塞 同步阻塞.同步非阻塞.异步阻塞.异步非阻塞 一个 ...

  6. java 异步_聊聊java高并发系统之异步非阻塞

    作者:孙伟,目前负责京东商品详情页统一服务系统,写过java,写过ngx_lua,还写过storm等,喜欢学习研究新事物. 在做电商系统时,流量入口如首页.活动页.商品详情页等系统承载了网站的大部分流 ...

  7. 从Java Future 到 Guava ListenableFuture实现异步非阻塞调用

    前言 随着移动互联网的蓬勃发展,手机App层出不穷,其业务也随之变得错综复杂.针对于开发人员来说,可能之前的一个业务只需要调取一次第三方接口以获取数据,而如今随着需求的增加,该业务需调取多个不同的第三 ...

  8. 面试问题什么是异步非阻塞

    一.同步与异步 同步/异步, 它们是消息的通知机制 1. 概念解释 A. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例 ...

  9. 高级 Java 面试必问的三大 IO 模型,你 get 了吗?

    问题 14 不管你平时是否接触大量的 IO 网络编程,IO 模型都是高级 Java 工程师面试非常高频的一道题.你了解 Java 的 IO 模型吗?多路复用技术是什么? 我的答案 在了解 Java I ...

最新文章

  1. sqlite3数据的使用(xcode 7,ios9)
  2. php编程用空格,shell 编程中空格的使用方法
  3. Android:如何实现更换主题
  4. 【最全干货下载】| DTCC 2020:阿里云数据库9大要点精彩回顾
  5. linux 内核模块太大,Linux内核模块文件大小
  6. 为什么EClipse不显示错误
  7. MFC 使用控制台打印程序信息
  8. 什么是cs架构和bs架构
  9. (超详细)搜索软件Everything的安装与使用
  10. Docker理论与实践(四)
  11. 马云重构阿里:或分拆成30家公司 整合3家上市【来源:《财经》】
  12. java正则表达式 问号_正则表达式问号的四种用法详解
  13. 搜狗输入法,输英语单词自动提示
  14. MySQL医疗信息管理系统数据库(源码)
  15. 苹果开发者账号注册错误:关联的Apple ID国家/地区并不匹配
  16. ASP.NET WEBAPI 跨域请求 405错误
  17. python---之cython的使用
  18. 上饶师范学院数学与计算机科学学院,第4章-上饶师范学院数学与计算机科学学院.doc...
  19. TFLearn初探之Activation与Dropout
  20. 2018.07.30 bzoj4355: Play with sequence(线段树)

热门文章

  1. 深圳大学AMD 线程撕裂者调整建议
  2. 浅绛彩瓷的行情与收藏
  3. PCB 布线技术~PCB结构:Traces,电源平面
  4. wise reminder java_Wise Reminder
  5. java mkfifo_如何在Android中创建命名管道(mkfifo)?
  6. ROS利用Python脚本实现多点自主导航
  7. CF1130A Be Positive题解
  8. 在线预览 Word、Excel、PowerPoint 文档
  9. Away3D ATFTexture
  10. 烧烤店自动结账(初级版)