采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
第一次访问restul样式的url,是可以替换的 紧接着第二次刷新就不行了,没有进入UrlCleaner的实现类 下面是我打的日志截图和ahas这边控制台看到的簇点链路
您好,理论上每次都会进入的哈。
相关源码:
com.alibaba.csp.sentinel.adapter.servlet.CommonFilter#doFilter
核心代码:UrlCleaner urlCleaner = WebCallbackManager.getUrlCleaner();
org.springframework.cloud.alibaba.sentinel.custom.SentinelAutoConfiguration#init
核心代码:urlBlockHandlerOptional.ifPresent(WebCallbackManager::setUrlBlockHandler);
可以打断点排查一下哈。
ahas sentinel 接入,官网显示的 spring-boot-starter-ahas-sentinel-client 用的是1.3.5,我今天测试就用了这个版本,把它换成 1.3.2 版本就好了。我debug看到错误原因是AhasAdapterExtInitFunc类把UrlCleaner重新设值了 WebCallbackManager.setUrlCleaner(new PropertyUrlCleaner());重新设值发生在第一次请求快结束的时候,不知道为什么会执行这个,真正原因还是没有找出来
我看了下,Ahas 1.3.5确实用的PropertyUrlCleaner。AhasAdapterExtInitFunc是Sentinel的SPI机制。 这块感觉体验不好,并且Ahas也没有任何文档…… 只能根据com.alibaba.csp.ahas.sentinel.adapter.servlet.UrlCleanerPropertyLocalConfig里面的代码,去配置clean规则了…… 我个人认为这种设计是不太好的: 1. 提供了默认的UrlCleaner可以,但应该以自己创建的为主; 2. 至少应该具备文档,一个内置的UrlCleaner默认嵌入在一个商业化的JAR包里,还不写任何文档…… 3. 目前设计,要用Ahas自带的Cleaner,还得额外创建一个ahas-sentinel-url-clean.properties;或者用csp.sentinel.url.clean.config.path指定目录。 这感觉都很扯啊…… 我给官方提Issue了,详见:https://github.com/alibaba/Sentinel/issues/999
666
登录后可查看更多问答,登录/注册
面向未来微服务:熟练掌握Spring Cloud Alibaba
533 4
2.0k 1
2.6k 2
1.6k 3
3.6k 13