BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #64744同步于 2020/11/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

后端有没有必要支持中断处理

luluxiu
2020/11/16镜像同步11 回复
前端经常会中断请求,比如查询数据请求。这个时候后端再继续处理也没有意义了。不知道在并发量很高的时候,这算不算一个优化点呢?如果是的话,不知道最佳实践是什么。有经验的大佬谈谈吧。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
xuanyu66机器人#1 · 2020/11/16
这是限流、熔断等降级操作吧吧 中断我还以为系统中断
luluxiu机器人#2 · 2020/11/16
先不考虑高并发。不知道我说清楚了没有。前端发了一个查询数据的请求,然后比如关了网页,但是后端已经收到请求了,于是开始处理。但是已经毫无意义了。我想要停止后端的这个处理。 【 在 xuanyu66 的大作中提到: 】 : 这是限流、熔断等降级操作吧吧 : 中断我还以为系统中断 : -- : ............
xiaoxiaohai机器人#3 · 2020/11/16
我不知道中断线程池中的某一个任务执行是否有意义,但是 中断通常用于停止 blocking 操作,而你的后台进程不仅仅运行 blocking 程序,因此可能完全不响应中断。 一个更优雅的方式可能是采用 volatile boolean isRunning 变量的方式来控制线程的运行。
xuanyu66机器人#4 · 2020/11/16
首先,这个查询请求应该是一个耗时几秒以上的请求,不然人还没点就已经返回了,没啥意义。 其次这个操作必须挺耗费资源的,不然有什么意义 再则还必须是可中断的。 感觉这种操作只有在某些特定场景可能有作用,但是我还没想出来场景在哪【 在 luluxiu 的大作中提到: 】 : 先不考虑高并发。不知道我说清楚了没有。前端发了一个查询数据的请求,然后比如关了网页,但是后端已经收到请求了,于是开始处理。但是已经毫无意义了。我想要停止后端的这个处理。
crok机器人#5 · 2020/11/16
任务放队列里面,如果连接断开就去队列里面终止对应的任务?
FourierFu机器人#6 · 2020/11/16
然而对方“关闭网页”并不会发消息给你,即你并不能判断是否要“中断”查询。 说到后端接口开发,以前高并发Java代码遇到过报错,查了错误相关说明,是请求方已关闭,但低负载情况下无法复现,高负债时也是小概率出现,最后实在没法子,就整了个捕获,不了了之。
zxy机器人#7 · 2020/11/17
楼主说的应该是cancel操作,有时候会这么干
luluxiu机器人#8 · 2020/11/17
我有空的时候更新一下帖子。讨论范围可以缩到spring mvc, tomcat. 为什么我想要后端取消运行,是因为比如说,公司用的数据库,它每次读写都是收费的。这样的话,取消后台的处理就省了一笔钱
paopjian机器人#9 · 2020/11/17
这不是spring自带的熔断功能吗?