开发者社区 > 云原生 > 中间件 > 正文

为什么这个SentinelResource 中 EntryType 设置为 IN 后,出现这个情况?

"为什么我这个@SentinelResource 中 EntryType 设置为 IN 后,dashboard 那边显示有进行流控,但实际上每次请求都没有被拦截,而是全部都请求到了我被保护的接口对应的方法?
10388150d8f0edc06f090d0c76ff7ca4.jpg
逻辑上这个是被请求的接口,应该设置为 EntryType.IN。但设置后并不能达到流控的效果。
8396a176a7145a491f2e3f2d215ad582.png
设置为 EntryType.OUT后会触发流控规则后会被实际拦截。"

展开
收起
十一0204 2023-11-21 17:44:56 222 0
2 条回答
写回答
取消 提交回答
  • 这个问题可能是由于你的流控配置不正确导致的。在@SentinelResource注解中,EntryType参数用于指定资源的类型,它决定了流控规则的适用范围。当EntryType设置为IN时,流控规则只对进入该资源的方法的请求生效;而当EntryType设置为OUT时,流控规则对从该资源的方法返回的请求生效。

    在你的截图中,你似乎希望对流控规则进行测试,以确保它在实际应用中能够正常工作。在这种情况下,你应该将EntryType设置为OUT,以便测试流控规则在实际返回请求时的效果。如果你希望对流控规则进行压力测试,你可以使用Sentinel Dashboard中的模拟器功能来模拟多个并发请求。

    另外,请注意,流控规则需要一些时间才能生效。当你刚刚添加或修改了流控规则后,可能需要等待一段时间才能看到它的效果。

    2023-11-29 14:18:06
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这可能是由于以下几个原因造成的:

    1. SentinelResource注解没有正确配置:请检查您的@SentinelResource注解是否正确配置了对应的资源名和类型。资源名必须匹配所保护的方法或类,并且EntryType必须设置为IN。
    2. Sentinel的API调用未正确初始化:请确保在您的应用中已经正确设置了Sentinel API的访问路径和配置项,以确保 Sentinel 能够正确地保护您的接口。
    3. 流量控制规则未启用:请检查Sentinel控制台中的流量控制规则是否启用了。如果没有启用,请确保在您的资源上启用了相应的规则。
    4. 其他问题:可能是其他因素导致的,比如JVM内存不足、网络问题或其他未知因素。建议您先排除上述可能性,再进行排查。
    2023-11-21 22:07:05
    赞同 展开评论 打赏
问答地址:

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载