执行链路图

  • 除去已经介绍的相关Adapter模块,sentinel还有其他Adapter来适配不同的框架
  • 本文通过(网关->上游服务-> 下游服务)概述执行链路
  • 上游服务包括: [webmvc拦截器] [ http请求 ][dubbo请求]
  • 下游服务包括: dubbo消费者

执行部分

  • 一个context肯定对应一个线程
  • 一个线程肯定有一个EntranceNode
  • 不是所有的Adapter都会创建Context
  • 有些Adapter会通过ContextUtil.enter执行Context创建,但其可能不是入口拦截点,所以实际不会创建
  • ContextUtil.enter只在当前线程没有context,才会真正执行创建流程
  • context内部的EntranceNode是根据资源名创建,不同的context可能共享
  • 不同的context可能共用一个EntranceNode
  • sentinel源码分析第七篇一sentinel-adapter模块一总结_sentinel


数据部分
  • Node 会构建成树结构
  • EntranceNode会有多个DefaultNode子节点,每一个资源对应的统计ProcessSolt ,负责处理DefaultNode统计信息
  • Node按照资源维度构建
  • sentinel源码分析第七篇一sentinel-adapter模块一总结_拦截器_02


总结
  • Context对应线程上下文
  • Node对应资源
  • 一个线程必然有一个EntranceNode入口资源
  • 不同的线程可以共享EntranceNode,因为他们的入口资源完全可以一样
  • 多个Adapter执行 Context创建,只要线程已经存在Context[EntranceNode].则不会实际创建