【问题标题】:What happens when Hystrix walks away cause of a timeout, and server responds with any result?当 Hystrix 因超时而离开,服务器响应任何结果时会发生什么?
【发布时间】:2018-12-23 04:42:26
【问题描述】:

例如,我在我的服务客户端上启用 Hystrix,使用另一个服务服务器。我将 Hystrix 超时设置为 5 秒。 5 秒后,如果服务器没有响应,Hystrix 将超时并调用 fallback。如果在 Hystrix 超时并退出该调用后服务器响应会发生什么?

https://github.com/Netflix/Hystrix/wiki/How-it-Works#isolation

【问题讨论】:

    标签: spring-rest spring-cloud-netflix hystrix


    【解决方案1】:

    一旦触发 Hystrix 超时,Hystrix 将向调用的客户端发送Thread.interrupt()。根据您在 Hystrix 命令中实现的内容,这可能会或可能不会对中止调用的客户端产生影响。这个can be configuredexecution.isolation.thread.interruptOnTimeout

    服务器部分通常会继续运行。如果您的呼叫客户端没有中止,它将收到结果。但结果不会传递给 Hystrix 命令的调用者。它将被丢弃。

    【讨论】:

    • 那么当 Hystrix 超时时我应该向服务器发送取消请求(以释放正在使用的底层资源)吗?
    • 这样做是个好主意。但是您这样做的能力可能会受到您使用的协议的限制:例如,如果您使用 http 作为协议,通常无法取消服务器端正在运行的请求。
    • 我有 2 个场景,REST 服务调用和数据库调用。我正在考虑通过 JDBC 查询超时在 DB 调用服务层上执行此操作
    猜你喜欢
    • 2016-01-04
    • 2012-09-11
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多