alibaba-cloud-sentinel-2023
2024-03-28 11:04:13 2 举报
Alibaba Cloud Sentinel 2023 主要流程
作者其他创作
大纲/内容
InheritableBaseSubscriber#onSubscribe
如果没有配置回调函数
没有上下文开关关了CtSph#lookProcessChain没有调用链
SentinelSCGAutoConfiguration
handleDefaultFallback调用默认的回调函数进行处理
SentinelBeanPostProcessor#postProcessAfterInitialization创建完 bean 后调用,
SentinelInvocationHandler替换 feign 默认的 InvocationHandler
SentinelResource#exceptionsToTrace默认处理所有异常
主要是注入了几个配置类
SentinelGatewayFilter#filter
ProcessorSlot#entry
向 spring 容器中注册SentinelProtectInterceptor
SphU#asyncEntry
handleFallback调用回调函数
BlockException
抛出异常
SentinelFeignAutoConfiguration对 feign 进行 aop 处理
SentinelResourceAspect
清理上下文,处理异常,结束 entry
addInterceptors
AbstractDataSourceProperties#postRegister向规则管理器注册
适配 Gateway
SentinelTargeterAspect#getFeignClientFactoryBean获取FeignClientFactoryBean中的回调函数
SentinelBeanPostProcessor处理@SentinelRestTemplate
把拦截器添加到RestTemplate中去,并放到调用链的第一个
SentinelBeanPostProcessor#postProcessMergedBeanDefinition创建 bean 之前校验配置并缓存配置信息
SentinelGatewayFilter
直接抛出异常
handleBlockException处理异常
pjp.proceed();执行目标方法
SentinelReactorSubscriber不过是 mono 还是 flux 都会subscribe这
GatewayFilterChain#filter先把后面的操作包起来
是否忽略该异常
是否处理该异常
SentinelReactorTransformer#apply
BlockException捕获所有 sentinel 抛出的控制异常
SphU.entry执行方法处理异常关闭 entry
entry.exit执行退出
SentinelWebAutoConfiguration适配 spring-mvc
默认会对Route进行处理,如果配置了就会生成 WebExchangeApiMatcher在配置文件变更时,会进行刷新
适配 feign
InitExecutor#doInit通过SpiLoader调用所有InitFunc
AbstractSentinelInterceptor#preHandle处理请求前
CtSph#asyncEntryWithPriorityInternal
SentinelAutoConfiguration
SphU#entry记录统计信息并对给定资源执行规则检查
SentinelReactorSubscriber#entryWhenSubscribed
entinelReactorTransformer#SentinelReactorTransformer
SentinelDataSourceHandler#registerBean注册到 spring 容器中
处理@SentinelResource
否
SentinelDataSourceHandler动态数据源配置
invokeResourceWithSentinel切所有 @SentinelResource 方法
SentinelDataSourceHandler#afterSingletonsInstantiated从配置文件中获取配置信息
SentinelGatewayFilter#pickMatchingApiDefinitions
SentinelFeign.Builder#build
BlockClassRegistry.updateBlockHandlerForBlockClassRegistry.updateFallbackForBlockClassRegistry.updateUrlCleanerFor保存全局缓存
init.InitFunc#init处理一下初始化操作,主要有和控制台通信,心跳
afterCompletion处理请求后,渲染视图前执行
SentinelResource#exceptionsToIgnore
feignSentinelBuilder添加一个默认的 Feign.Builder
SentinelReactorSubscriber#hookOnSubscribe
Throwable不是 sentinel 抛出的异常
SphU.entry记录统计信息并对给定资源执行规则检查
CtSph#asyncEntryWithNoChain相当于就跳过了
init在配置类解析时调用
SentinelWebInterceptor添加拦截器
0 条评论
下一页