【Java面试系列】GateWay异步非阻塞模型
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异步非阻塞模型相关推荐
- nginx异步非阻塞理解
nginx异步非阻塞理解? 看了一下午如何理解异步非阻塞,不是用生活举例的就是只是说某一点的,其实真的还是很不明白,最后只能通过nginx的异步非阻塞模型来稍微理解理解了,我也不拿什么生活的举例了因为 ...
- node异步非阻塞的杂谈
引言 node作为服务器的优势就在于适合处理高并发的请求,对于web网站后台这种I/O密集型的后台尤其有优势,其核心就在于node是一个异步非阻塞模型.关于异步,同步,阻塞,非阻塞这些概念,本文不做讨 ...
- 面试必会系列 - 5.1 网络BIO、NIO、epoll,同步/异步模型、阻塞/非阻塞模型,你能分清吗?
本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...
- Java异步非阻塞编程的几种方式
简介: Java异步非阻塞编程的几种方式 一. 从一个同步的Http调用说起 一个很简单的业务逻辑,其他后端服务提供了一个接口,我们需要通过接口调用,获取到响应的数据. 逆地理接口:通过经纬度获取这个 ...
- 同步阻塞、同步非阻塞、异步阻塞、异步非阻塞与 I/O 多路复用、Java NIO 之间的联系
同步阻塞.同步非阻塞.异步阻塞.异步非阻塞与 I/O 多路复用.Java NIO 之间的联系 先验知识 此处的异步指的是什么 同步.异步.阻塞.非阻塞 同步阻塞.同步非阻塞.异步阻塞.异步非阻塞 一个 ...
- java 异步_聊聊java高并发系统之异步非阻塞
作者:孙伟,目前负责京东商品详情页统一服务系统,写过java,写过ngx_lua,还写过storm等,喜欢学习研究新事物. 在做电商系统时,流量入口如首页.活动页.商品详情页等系统承载了网站的大部分流 ...
- 从Java Future 到 Guava ListenableFuture实现异步非阻塞调用
前言 随着移动互联网的蓬勃发展,手机App层出不穷,其业务也随之变得错综复杂.针对于开发人员来说,可能之前的一个业务只需要调取一次第三方接口以获取数据,而如今随着需求的增加,该业务需调取多个不同的第三 ...
- 面试问题什么是异步非阻塞
一.同步与异步 同步/异步, 它们是消息的通知机制 1. 概念解释 A. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例 ...
- 高级 Java 面试必问的三大 IO 模型,你 get 了吗?
问题 14 不管你平时是否接触大量的 IO 网络编程,IO 模型都是高级 Java 工程师面试非常高频的一道题.你了解 Java 的 IO 模型吗?多路复用技术是什么? 我的答案 在了解 Java I ...
最新文章
- sqlite3数据的使用(xcode 7,ios9)
- php编程用空格,shell 编程中空格的使用方法
- Android:如何实现更换主题
- 【最全干货下载】| DTCC 2020:阿里云数据库9大要点精彩回顾
- linux 内核模块太大,Linux内核模块文件大小
- 为什么EClipse不显示错误
- MFC 使用控制台打印程序信息
- 什么是cs架构和bs架构
- (超详细)搜索软件Everything的安装与使用
- Docker理论与实践(四)
- 马云重构阿里:或分拆成30家公司 整合3家上市【来源:《财经》】
- java正则表达式 问号_正则表达式问号的四种用法详解
- 搜狗输入法,输英语单词自动提示
- MySQL医疗信息管理系统数据库(源码)
- 苹果开发者账号注册错误:关联的Apple ID国家/地区并不匹配
- ASP.NET WEBAPI 跨域请求 405错误
- python---之cython的使用
- 上饶师范学院数学与计算机科学学院,第4章-上饶师范学院数学与计算机科学学院.doc...
- TFLearn初探之Activation与Dropout
- 2018.07.30 bzoj4355: Play with sequence(线段树)