执行链路图
- 除去已经介绍的相关Adapter模块,sentinel还有其他Adapter来适配不同的框架
- 本文通过(网关->上游服务-> 下游服务)概述执行链路
- 上游服务包括: [webmvc拦截器] [ http请求 ][dubbo请求]
- 下游服务包括: dubbo消费者
执行部分
- 一个context肯定对应一个线程
- 一个线程肯定有一个EntranceNode
- 不是所有的Adapter都会创建Context
- 有些Adapter会通过ContextUtil.enter执行Context创建,但其可能不是入口拦截点,所以实际不会创建
- ContextUtil.enter只在当前线程没有context,才会真正执行创建流程
- context内部的EntranceNode是根据资源名创建,不同的context可能共享
- 不同的context可能共用一个EntranceNode
- Node 会构建成树结构
- EntranceNode会有多个DefaultNode子节点,每一个资源对应的统计ProcessSolt ,负责处理DefaultNode统计信息
- Node按照资源维度构建
- Context对应线程上下文
- Node对应资源
- 一个线程必然有一个EntranceNode入口资源
- 不同的线程可以共享EntranceNode,因为他们的入口资源完全可以一样
- 多个Adapter执行 Context创建,只要线程已经存在Context[EntranceNode].则不会实际创建