本文是sentinel原理源码分析系列第三篇,分析sentinel启动和初始化
启动/初始化
sentinel初始化分两块,静态初始和适配器(包括aop)
静态初始
1. Root EntranceNode
如果我们用一栋楼类比资源调用,root EntranceNode好比一栋楼的大门,资源调用链路node是大楼里的一个个单元,EntranceNode在大楼大门设置了计数器,统计所有资源调用链出入。
上图是Constants的初始化,ROOT用于查询,作为固定存在的节点,聚合子节点,即调用链路的node
另外,还有个EntranceNode,独立的节点,用于SystemSlot,支持系统全局的保护
2. ContextUtils
Context是当次调用上下文,这里新增EntranceNode代表调用入口,设置为root的子节点
3. 组件初始化
组件初始化在Evn的静态块执行,使用spi机制,载入InitFun实例,调用init方法初始化,包括transport(CommandCenterInitFunc), metrics, 改造dashboard的分布式组件使用该机制初始化
4. 适配器
sentinel提供大量的适配器,覆盖常用的技术组件,适配器发起sentinel启动,本章以aop为示例分析启动过程
SentinelResourceAspect拦截标注@SentinelResource的资源,置入sentinel的拦截逻辑代码
收集标注属性,entry进入调用资源,调用资源参看++5.4++ ++调用资源++
NEXT Context&Entry