Sentinel java.lang.NoClassDefFoundError: com/alibaba/csp/sentinel/spi/ServiceLoaderUtil

fjaof16o  于 2021-11-29  发布在  Java
关注(0)|答案(7)|浏览(1490)

请问如何解决

hyrbngr7

hyrbngr71#

sentinel配置

sentinel:
transport:
dashboard: 172.16.20.3:8718
clientIp: 172.16.20.82
port: 7090
http-method-specify: false
datasource:

名字随意

ds:
nacos:

nacos的访问地址,,根据上面准备工作中启动的示例配置

server-addr: 172.16.20.3:8848

nacos中存储规则的groupId

group-id: ainewssystem

nacos中存储规则的dataId

data-id: ainewssystem-user-rules

用来定义存储的规则类型

rule-type: flow
data-type: json
username: nacos
password: nacos

vsmadaxz

vsmadaxz2#

[
{
"resource": "ainewssystem",
"limitApp": "default",
"grade": 1,
"count": 2,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]

ymdaylpp

ymdaylpp3#

@PostMapping(value = "/add/userRegistration")
public BaseData userRegistration(@requestbody UserRegisterVo user) {

//使用限流规则ainewssystem
    try (Entry entry = SphU.entry("ainewssystem")){
        return aiNewsUserService.userRegistration(user.getUserAccount(),user.getUserName(),user.getUserPassword(),user.getVerificationCode());
    } catch (BlockException e) {
        e.printStackTrace();
        //降级处理
        BaseData baseData = new BaseData();
        baseData.setCode(ResultCode.FAIL.code());
        baseData.setMessage("系统繁忙,请稍后再试");
        baseData.setData(new JSONObject());
        return baseData;
    }

}
w6mmgewl

w6mmgewl4#

sentinel Dashboard的截图

但是日志报错

nszi6y05

nszi6y055#

以上报错需要引用spring-boot-starter-ahas-sentinel-client,但是spring-boot-starter-ahas-sentinel-client 1.9.4版本和sentinel-core 1.8.2版本 两个包定义了相同的两个MetricCallbackInit类,导致出现以下问题
com.alibaba.csp.sentinel.spi.SpiLoaderException: [com.alibaba.csp.sentinel.init.InitFunc]Found repeat alias name for com.alibaba.csp.sentinel.metric.extension.MetricCallbackInit and com.alibaba.csp.sentinel.metric.extension.MetricCallbackInit,SPI configuration file=META-INF/services/com.alibaba.csp.sentinel.init.InitFunc
at com.alibaba.csp.sentinel.spi.SpiLoader.fail(SpiLoader.java:525)
at com.alibaba.csp.sentinel.spi.SpiLoader.load(SpiLoader.java:383)
at com.alibaba.csp.sentinel.spi.SpiLoader.loadInstanceListSorted(SpiLoader.java:169)
at com.alibaba.csp.sentinel.init.InitExecutor.doInit(InitExecutor.java:46)
at com.alibaba.csp.sentinel.Env.(Env.java:36)
at com.alibaba.csp.sentinel.SphU.entry(SphU.java:294)
at com.alibaba.csp.sentinel.adapter.spring.webmvc.AbstractSentinelInterceptor.preHandle(AbstractSentinelInterceptor.java:105)
at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:151)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1035)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
经过查找,找出两个重名的类

zi8p0yeb

zi8p0yeb6#

spring-boot-starter-ahas-sentinel-client 是云上 AHAS Sentinel 的依赖,与开源 Sentinel 依赖不兼容。若使用开源控制台则去除 AHAS 依赖,若使用云上控制台则去除开源相关依赖即可。

yyhrrdl8

yyhrrdl87#

@sczyh30 请问谁能去除spring-boot-starter-ahas-sentinel-client具体怎么做,谁去做呢?

相关问题