实战Alibaba Sentinel:深度解析微服务高并发流量治理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3.3 调用树与ROOT节点

Sentinel的Constants常量类用于声明全局静态常量。Constants类有一个ROOT静态字段,类型为EntranceNode,被用作资源调用树的根节点。

调用树根节点(ROOT)在Constants类中的声明如下。

在调用链上,当ContextUtil类的enter方法首次被调用时,如果不存在与enter方法传入的入口名称相同的EntranceNode实例,就会创建一个EntranceNode实例。调用链上的Context实例的entranceNode字段引用的就是该EntranceNode实例,而ROOT的子节点(childList)存储的是整个应用中的所有EntranceNode实例。

根节点、调用链入口节点与资源的DefaultNode节点组成的调用树如图2.8所示。

图2.8 调用树

入口相同的调用链不一定就是同一条调用链,如图2.8所示,资源GET:/v1/demo1所在的调用链与资源GET:/v1/demo2所在的调用链的入口都是sentinel_spring_web_context,但这两条调用链是两条不同的调用链。

调用树上的非资源节点类型都是EntranceNode,调用树上的资源节点类型都是DefaultNode。