SpringCloud Gateway全链路实现

本文介绍了Spring Cloud Gateway在全链路监控中的作用和原理,详细讲解了Spring Webflux、Mono与Flux的概念。同时,分析了Spring Cloud Gateway的请求处理流程,包括过滤器链的执行和Netty相关过滤器的功能。最后强调了网关监控的重要性,以提供全面的应用请求流转视图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

背景

随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。而诸多的服务可能分布在了几千台服务器,横跨多个不同的数据中心。为了快速定位和解决故障,应用性能进行分析,全链路监控组件就在这样的问题背景下产生了。最出名的是谷歌公开的论文提到的Google Dapper。想要在这个上下文中理解分布式系统的行为,就需要监控那些横跨了不同的应用、不同的服务器之间的关联动作。

小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。我有一些面试题、架构、设计类资料可以说是程序员面试必备!所有资料都整理到网盘了,需要的话欢迎下载!私信我回复【000】即可免费获取

 

1.1 全链路原理

通过业务调用过程中添加并传递调用链ID,实现应用间生成链路数据,最终串联成一条完整的调用链。

其中整个调用过程中每个请求都要透传TxId、SpanId和pSpanId。

1.2 Spring Cloud Gateway

作为Spring Cloud官方推出的第二代网关框架,Spring cloud gateway是基于Spring 5.0、Spring Boot2.0和Reactor等技术开发的网关,采用了NIO模型进行通信。

1.2.1 Spring Webflux

Spring Boot 2.0 包括一个新的 spring-webflux 模块,名称中的 Flux 来源于 Reactor 中的类 Flux。该模块包含对响应式 HTTP 和 WebSocket 客户端的支持,以及对 REST、HTML 和 WebSocket 交互等程序的支持。

一般来说,Spring MVC 用于同步处理;Spring Webflux 用于异步处理。

1.2.2 Mono & Flux

Mono表示的是包含 0 或者 1 个元素的异步序列,即要么成功发布元素,要么错误

Flux 表示的是包含 0 到 N 个元素的异步序列 ,即要么成功发布 0 到 N 个元素,要么错误

Flux和Mono之间可以相互转换,比如对一个 Flux 序列进行计数操作,得到的结果是一个 Mono对象,或者把两个 Mono 序列合并在一起,得到的是一个 Flux 对象。

2 Spring Cloud Gateway不做监控

Spring Cloud Gateway作为入口网关,主要负责服务的路由转发。如果网关没有进行监控,则全链路会缺失网关节点,直接展示为用户访问后续应用;不能有效定位用户请求慢是网关问题还是后续节点。

3 Spring Cloud Gateway进行监控

由于Spring Cloud Gateway采用了Reactor框架非阻塞式调用,任务之间会跨线程执行,导致HTTP头信息所需的调用链ID不好传递。

· Gateway接收线程

· Gateway返回线程

· 路由转发线程

3.1 Spring Cloud Gateway流程

现对Spring Cloud Gateway的流程进行梳理,本篇由于只涉及到跨线程服务调度,不讨论路由过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倾听铃的声

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值