请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Springboot 请求整合与限流

问题描述:

现在要创建一个服务(比如叫 FilterService)来实现敏感词过滤,该服务第一版的设计也就一个方法,入参也是一个 String 类型的文本变量 text。敏感词过滤的核心方法,会借助阿里的 API 来实现。

现在要求该服务 FilterService 能实现“请求整合”与“限流”这两个功能。

“请求整合”是考虑到每次请求阿里的 API 时传入的字符太少而不划算,所以想把多个请求该服务(FilterService)的 HTTP 请求做一个合并,当这些请求的入参字符数达到 1 万个字符时,才决定去调阿里的 API,以达到降低调用次数并省钱的目的。

“限流”是指如果某一个第三方服务访问 FilterService 而超过了一定的次数(比如 5 次),就会被直接 return,即拒绝为他提供敏感词过滤。

尝试过的解决方式:

尝试过使用 CountDownLatch,但是感觉无法根据字符数 1 万来做判断。

提问:

想问一下,SpringBoot 里有没有什么机制可以从宏观上操作 HTTP 请求?并且拿到这一系列请求的入参,从而判断入参字符的总数是否达到某一个阈值(1 万个字符)。

另外,当这些 HTTP 请求被我“抓住”后,我最多只能等待三秒就必须放行,不然第三方服务的单次请求会耗时过长。

正在回答

1回答

您好的,你的请求用Filter或者Spring MVC 拦截器 应该就能解决。

思路大致:

拦截住请求,然后获取用户请求信息,并判断是否满足条件

0 回复 有任何疑惑可以回复我~
  • 提问者 TT_Course_Forever #1
    好的,在同一拦截器里可以同时拦截多个 HTTP 请求吗?因为我要把多个请求的入参合并起来,然后判断字符数量是否超过 1 万。
    回复 有任何疑惑可以回复我~ 2021-08-30 22:21:26
  • 大目 回复 提问者 TT_Course_Forever #2
    可以啊,拦截器也好,过滤器也好,都可以直接操作httpservletrequest
    你可以判断路径,判断请求方法,判断body随便玩哈
    回复 有任何疑惑可以回复我~ 2021-08-30 22:33:46
  • 提问者 TT_Course_Forever #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-08-30 22:34:58
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号