weixin_40455124
这个作者很懒,什么都没留下…
展开
-
sentinel 生产需要考虑的事情
总结下阿里sentinel 上生产需要考虑的事情:dashboard开源的dashboard只保存到内存中(展示是从客户端获取的规则),并不适合生产,生产需要使用nacos,ctrip appollo 等配置服务器或者自己使用动态配置文件更新来管理因此dashboard在生产只适合查看监控数据及临时性(不需要恢复)的规则控制。配置管理无论使用配置服务器还是文件管理,需要注意sentinel的配置更新是居于rule类型而不是resource,如果需要提供resource 视角的查看需要自己处原创 2021-05-27 08:15:05 · 202 阅读 · 0 评论 -
Spring Web 与sentinel DegradeSlot集成的Exception 处理
默认情况在https://blog.csdn.net/weixin_40455124/article/details/116504449 提到了如果ExceptionHandler按常规处理,使用@ControllerAdvice等模式进行错误转换,那么sentinel 的Entry 将不会catch到异常。AbstractSentinelInterceptor类的核心代码的preHandle也可以看到只catch的BlockException 。@Override public boolea原创 2021-05-08 22:55:08 · 154 阅读 · 0 评论 -
SentinelWebInterceptor 代码分析及使用建议
SentinelWebInterceptor的使用主要包括SentinelWebInterceptor的resource name获取及处理过程spring-cloud-starter-alibaba-sentinel的自动装配SentinelWebInterceptor 分析sentinel-spring-webmvc-adapter是web/webmvc模式下的adapter,核心代码是SentinelWebInterceptor 类,主要代码结构如下图首先注意下配置类:public原创 2021-05-08 02:09:30 · 737 阅读 · 0 评论 -
阿里sentinel 自定义slot及slotChain
自定义slot阿里sentinel 自定义slot 有官方demo,可以参考sentinel-demo\sentinel-demo-slot-chain-spi,需要注意生成一个\resources\META-INF\services\com.alibaba.csp.sentinel.slotchain.ProcessorSlot文件这个ProcessorSlot文件只需要包括自定义的slot1.7.2版本一会注意@Spi(order = -3500) 中的order,这个order值决定slot原创 2021-04-30 03:47:26 · 915 阅读 · 0 评论 -
阿里sentinel BlockException 的默认处理
调用栈及触发模式以sentinel 自带的FlowQpsDemo为例来说明blockException 的默认处理,当FlowRuleChecker抛出异常FlowException时候的堆栈核心部分如下Thread [simulate-traffic-Task] (Suspended (breakpoint at line 53 in FlowRuleChecker)) FlowRuleChecker.checkFlow(Function<String,Collection<Flow原创 2021-04-28 22:53:13 · 2405 阅读 · 0 评论 -
sentinel webflux 配置及代码分析
webflux 需要使用 <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-spring-webflux-adapter</artifactId> <version>${sentinel.version}</version> </dependency>如果是基于sp原创 2021-04-26 08:05:22 · 473 阅读 · 0 评论 -
sentinel HttpCommandCenter启动过程及安全分析
启动分析sentinel HttpCommandCenter 属于lazy 启动,当第一次sentinel entry 请求时候才会发生。触发点函数如下:public class Env { public static final Sph sph = new CtSph(); static { // If init fails, the process will exit. InitExecutor.doInit(); }}触发函数原创 2021-04-20 00:04:31 · 178 阅读 · 0 评论 -
SentinelResource 分析
阿里sentinel的使用一般并不需要自己直接调用try SphU.entry的方式来实现,更多的是通过SentinelResource annotation来实现。SentinelResource 的对应执行是用aspectJ方式,通过invoke模式执行,核心代码入口在public class SentinelResourceAspect 中的public Object invokeResourceWithSentinel(ProceedingJoinPoint pjp) throws Throwa原创 2021-04-19 23:08:04 · 128 阅读 · 0 评论 -
sentinel 1.8.1 Chain产生过程分析
从sentinel 基本概念可以知道所有的检测都是通过Entry触发,使用定义好slot进行判断,slot在chain的次序决定slot执行次序。在Entry触发后,首先是根据resource name来寻找是否有对应的chain,如果没有就去生成。寻找的代码在类SlotChainProvider的方法ProcessorSlot lookProcessChain(ResourceWrapper resourceWrapper) 中没有找到就使用如下方法生产/** * Builder for a原创 2021-04-15 23:26:10 · 114 阅读 · 0 评论 -
在idea及eclipse 下编译阿里sentinel
阿里sentinel 默认只能在命令行使用maven,不能直接使用idea、eclipse、VSCODE等编译,这样原因是.gitignore里面将相关文件统统屏蔽了。.gitignore文件内容如下:# IntelliJ project files.idea/*.imloutgen# Visual Studio Code.history/# Maventarget/pom.xml.tagpom.xml.releaseBackuppom.xml.versionsBackupp原创 2021-04-12 20:59:02 · 355 阅读 · 0 评论 -
Sentinel sleuth 结合测试
当使用阿里sentinel annotation模式取代hystrix 进行熔断处理的时候,所有服务调用的span 记录没有问题,出现feign 相关异常会记录一个单独的span。但如要体现fallback为一个单独span,可以考虑以下几种模式:在处理fall的函数里面增加span,如在defaultFallHandle进行如下处理public String defaultFallba...原创 2019-10-24 22:24:44 · 463 阅读 · 0 评论 -
ali sentinel system rule分析-全局系统自适应保护规则
sentinel system rule很简单,快速记录如下都在package com.alibaba.csp.sentinel.slots.system 下系统层只支持load及cpuusage两种同时支持响应时间、线程数量及qps 限制,具体看SystemRule类...原创 2019-08-09 07:40:52 · 493 阅读 · 0 评论 -
Ali Sentinel flow
阿里Sentinel 中flow rule规则简单记录如下代码主要在com.alibaba.csp.sentinel.slots.block.flow及com.alibaba.csp.sentinel.slots.block.flow.controller下规则变化是通过listener转换为rule实例,具体可以看class FlowRuleManager线程模式只有总量控制-defau...原创 2019-08-06 20:55:10 · 162 阅读 · 0 评论 -
ali sentinel 1.8 (含spring clound starter)的配置方法
sentinel的config简单总结如下:一般配置类为class SentinelConfig,日志类的在LogBase类中采用static 代码块进行初始化日志类配置都是采用 System.getProperty,没有配置文件主配置文件放置日志目录下,日志放置user-home下,这好像是阿里的习惯...原创 2019-08-07 08:17:12 · 236 阅读 · 0 评论 -
ali sentinel应用与dashboard连接的初始化过程
总体来说,是通过static 代码java.util.ServiceLoader 装载实现类,ServiceLoader用途可以参看https://blog.csdn.net/qq_30739519/article/details/51164954优先级判断来实现,具体过程sphU/O类调用 com.alibaba.csp.sentinel.Env,ENV 类通过static co...原创 2019-08-13 22:57:17 · 492 阅读 · 0 评论 -
Ali Sentinel degrade规则
快速总结下sentinel 的降级规则支持三种降级方式:平均响应时间、失败(exception)率,失败(Exception)笔数sentinel degrade本质是熔断,达到条件后在timeWindow指定时间段都不允许pass关键类是DegradeRule及DegradeRuleManager...原创 2019-08-09 21:12:30 · 1037 阅读 · 0 评论 -
ali sentinel annotation分析
如果不使用annotation,需要自己进行一系列判断,如block后的处理,原始函数调用失败的处理等等,可以参看public class SentinelResourceAspect的public Object invokeResourceWithSentinel方法,而sentinel 基于aspectJ实现的annotation可以简化这些操作,简单总结如下blockHandler及fa...原创 2019-08-10 22:57:26 · 144 阅读 · 0 评论 -
Ali sentinel dashboard rule管理-鸡肋
简单记录下基于dashboard的rule管理rule 保存在内存中,可以通过InMemoryRuleRepositoryAdapter 类实现保存,但保存好需要考虑client 新接入(含断开重连)时候的rule更新,可以考虑在class SimpleMachineDiscovery addMachine后主动pushrule都是基于appname+ip+port进行更新及查询,不支持仅仅...原创 2019-08-14 23:35:42 · 264 阅读 · 0 评论 -
sentinel feign 源码分析-基于2021.1版本
sentinal 对feign的支持需要设置feign.sentinel.enabled=true,这个要求可以从代码SentinelFeignAutoConfiguration看到@Configuration@ConditionalOnClass({ SphU.class, Feign.class })public class SentinelFeignAutoConfiguration ...原创 2019-09-15 07:54:45 · 529 阅读 · 0 评论 -
Ali sentinel 代码分析-基础及概念
阿里Sentinel 基本概念主要包括:Chain及solt ,solt主要包括记录数据及执行规则两类Chain可以自定义,有exampleRule被solt调用执行,目前是4类ruleEntry可以认为就是token,获得代表可以执行后续操作Context 用于关联上下文,一般默认即可...原创 2019-07-30 20:38:10 · 331 阅读 · 0 评论