V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rizon
V2EX  ›  程序员

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

  •  
  •   rizon ·
    othorizon · 2019-10-24 13:00:48 +08:00 · 2909 次点击
    这是一个创建于 1858 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    你这种情况,被拒绝的原因不是熔断,而是 feign。大量请求过来的时候,你的接口在请求另一个服务的时候也会启用大量的 feign 客户端,但 feign 客户端的总量是由限制的,你超过了就要被拒绝。调大线程池可接受的任务数,或者降低熔断的阈值(更加快速的熔断),应该就行了。
    brucep
        4
    brucep  
       2019-10-24 19:35:16 +08:00
    熔断只是避免服务雪崩,并不能保证高并发下可用。
    建议看下 Hystrix 的文档: https://github.com/Netflix/Hystrix/wiki
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2939 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:43 · PVG 20:43 · LAX 04:43 · JFK 07:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.