spring 使用 feign 和熔断后 怎么解决高并发请求的问题?

2019-10-24 13:00:48 +08:00
 rizon

前端请求的接口,接口内部会 http 请求另一个服务,这个使用了 feign,并且增加了熔断配置, 但是用了之后发现的不明白的很多,求助 v 友大佬帮忙解答下:

现在最关心的一个问题就是并发问题,当有大量请求打过来后,熔断的线程池就不够用了,这时候就会报错被拒绝。 这种问题可以解决吗?还是说一旦使用了熔断那么接口并发量就是固定的了?完全受制于熔断的线程池配置了。

感觉这样很尴尬啊,因为这个我又换回了传统的 restTemplate 了,但是他这个接口不太稳定,所以我其实挺想用熔断的,唉。。。

想来想去,这种场景就是不该使用熔断就是了,,熔断更适合服务只见调用时,方便做负载吧?

2826 次点击
所在节点    程序员
4 条回复
ZSeptember
2019-10-24 14:02:09 +08:00
这就是熔断使用的场景啊。
接口受不了高并发,就快速失败。
怎么解决,就是让接口提供方提高服务可用性罗。
stanjia
2019-10-24 17:09:58 +08:00
你服务器总的连接数有限,你调用别人不快速失败, 一直在等,多了以后你的机器就挂了。 而且别人还以为是你的服务有问题。
这种时候就该马上断,然后出提示说别人的服务目前不可用。
passerbytiny
2019-10-24 17:42:19 +08:00
熔断的本质是:当我调用别人的时候处理的慢,我立马用备用内容响应调用我的人。熔断只是在服务不可用的时候能给个备用处理,并不能提高并发量——有可能备用处理还会临时封锁 IP 来强制降低并发量。

你这种情况,被拒绝的原因不是熔断,而是 feign。大量请求过来的时候,你的接口在请求另一个服务的时候也会启用大量的 feign 客户端,但 feign 客户端的总量是由限制的,你超过了就要被拒绝。调大线程池可接受的任务数,或者降低熔断的阈值(更加快速的熔断),应该就行了。
brucep
2019-10-24 19:35:16 +08:00
熔断只是避免服务雪崩,并不能保证高并发下可用。
建议看下 Hystrix 的文档: https://github.com/Netflix/Hystrix/wiki

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/612483

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX