
公司安全给了一个基础服务前端 api 接口都要走一边安全服务(串行的),需要控制在 100 毫秒内如果安全服务没有响应完就直接跳过它。 本来我的解决方案是每次调用前开始计时去监听这个计时器再调用安全服务如果超过 100 毫秒就跳出。但是这样对 cpu 开销太大各位有什么好点的解决方案吗
1 spLite Aug 30, 2018 如果调用安全服务是前端发起的,跟 java 没直接关系? js 设置 http 请求超时时间 100ms。如果前端调后台,后台执行业务前(拦截器中?)调用安全服务,同理也可以设置超时时间 |
2 wdlth Aug 30, 2018 这类似于服务熔断吧 |
3 biaoliruyi OP @spLite 后端和安全交互 |
4 metrxqin Aug 30, 2018 语无伦次,程序员的语文水平这么差吗?平时需求得急死吧? |
5 biaoliruyi OP @wdlth 性质有点像 触发超时 |
6 biaoliruyi OP @metrxqin 你在这阴阳怪气什么? |
7 Rush9999 Aug 30, 2018 AwaitTermination |
8 biaoliruyi OP @Rush9999 谢谢 |
9 sagaxu Aug 30, 2018 via Android 计时器是不太占用 cpu 的 |
10 micean Aug 30, 2018 “跳出的 CUP 开销大”如果是指的抛出异常的话,请看 exception 的 4 参构造函数,不搞 track 的话,开销很小的 |
11 DeadLion Aug 30, 2018 为什么一定要串行 按照你这说法完全可以并行吧 业务正常走,安全校验也走着 并发包下面有可用的工具类啊 countdownlaunch 之类的 |
12 CODEWEA Aug 30, 2018 via iPhone 请求设置超时 |
13 ginux Aug 30, 2018 futuretask 了解下 |
14 vjnjc Aug 30, 2018 via Android 是 javaee 调用 HTTP API 么,请求时的 client 可以设 timeout 啊 |
15 yanyuechuixue Aug 30, 2018 via Android @livid #4 |
16 nullen Aug 30, 2018 触发超时就行了。 |
17 skyleft Aug 30, 2018 future.get(timeout=xxx) |
18 zhchyu999 Aug 30, 2018 根据以往经验,http 接口,并行并不一定有串行快 |
19 biaoliruyi OP 谢谢大伙,我实现测试下 之后把解决方案发出来 |
20 D3EP Aug 30, 2018 via iPhone 你这也太…… |
21 sampeng Aug 30, 2018 需要控制在 100 毫秒内如果安全服务没有响应完就直接跳过它.. 请问。。。这个安全服务还有毛线用。。。 |
22 sampeng Aug 30, 2018 刚是皮了一下。。。 Hystrix 了解一下。其实你就是要一个快速失败的能力 |