alibaba-cloud-sentinel
2021-12-21 18:24:01 10 举报
阿里云Sentinel(流量控制)是一款基于云原生的分布式系统的流量控制组件,旨在帮助开发者实现对服务、API等的访问控制和限流保护。通过实时监控和分析应用系统的访问数据,Sentinel能够智能识别异常流量并自动触发限流策略,从而保障服务的高可用性和稳定性。同时,Sentinel还提供了丰富的可视化界面和配置选项,方便用户根据实际需求灵活调整限流策略。无论是应对业务高峰期的流量激增,还是防止恶意攻击导致的系统瘫痪,阿里云Sentinel都能有效提供保障,助力企业构建稳定可靠的云上应用。
作者其他创作
大纲/内容
如果没有配置回调函数
AbstractSentinelInterceptor#preHandle处理请求前
SentinelAutoConfiguration
SphU#entry记录统计信息并对给定资源执行规则检查
handleDefaultFallback调用默认的回调函数进行处理
registerBean注册到 spring 容器中
否
SentinelDataSourceHandler动态数据源配置
postProcessAfterInitialization创建完 bean 后调用
invokeResourceWithSentinel切所有 @SentinelResource 方法
SentinelInvocationHandler替换 feign 默认的 InvocationHandler
SentinelResource#exceptionsToTrace默认处理所有异常
registerBean向 spring 容器中注册SentinelProtectInterceptor
afterSingletonsInstantiated从配置文件中获取配置信息
SmartInitializingSingleton会在所有非延迟加载单例 bean 加载完成后调用
handleFallback调用回调函数
BlockException
抛出异常
SentinelFeign.Builder#build
SentinelFeignAutoConfiguration对 feign 进行 aop 处理
MergedBeanDefinitionPostProcessor会在创建 bean 之前调用,可以修改 bean 定义
是
BlockClassRegistry.updateBlockHandlerForBlockClassRegistry.updateFallbackForBlockClassRegistry.updateUrlCleanerFor保存全局缓存
SentinelResourceAspect
清理上下文,处理异常,结束 entry
init.InitFunc#init处理一下初始化操作,主要有和控制台通信,心跳
addInterceptors
afterCompletion处理请求后,渲染视图前执行
AbstractDataSourceProperties#postRegister想规则管理器注册
SentinelTargeterAspect#getFeignClientFactoryBean获取FeignClientFactoryBean中的回调函数
SentinelResource#exceptionsToIgnore
feignSentinelBuilder添加一个默认的 Feign.Builder
SentinelBeanPostProcessor处理@SentinelRestTemplate
把拦截器添加到RestTemplate中去
Throwable不是 sentinel 抛出的异常
postProcessMergedBeanDefinition创建 bean 之前校验配置并缓存配置信息
直接抛出异常
SphU.entry记录统计信息并对给定资源执行规则检查
handleBlockException处理异常
pjp.proceed();执行目标方法
是否忽略该异常
init在配置类解析时调用
SentinelWebInterceptor添加拦截器
是否处理该异常
BlockException捕获所有 sentinel 抛出的控制异常
SphU.entry执行方法处理异常关闭 entry
entry.exit执行退出
SentinelWebAutoConfiguration适配 spring-mvc
InitExecutor#doInit通过SpiLoader调用所有InitFunc
0 条评论
下一页