• 请不要在回答技术问题时复制粘贴 AI 生成的内容
h123123h
V2EX  ›  程序员

想问一下关于 dubbo 超时机制的问题

  •  
  •   h123123h · Apr 25, 2020 · 3307 views
    This topic created in 2384 days ago, the information mentioned may be changed or developed.

    dubbo 中的超时机制是针对消费者的,如果消费者调用提供者超时,那么消费者会得到一个超时的异常,看资料说超时并不会中断生产者的服务,服务端会继续执行代码。如果是这样子,岂不是服务调用成功了,但是消费者返回一个异常?要怎么处理这个问题呢?

    9 replies  •  2020-04-25 19:07:14 +08:00
    h123123h
    h123123h
    OP
    Apr 25, 2020 via iPhone
    1
    最后修改一下,意思就是如果消费者调用超时了会报错,但是不影响提供者继续执行代码。这样会不会造成接口失败,但提供者的逻辑执行成功了的情况,怎么解决?
    lunarzzz
    lunarzzz
    Apr 25, 2020 via iPhone
    2
    没想到特别好的办法,耗时长的接口可以采用异步调用,幂等接口可以重试,提供者也可以存储相应的状态并提供另一个接口用于消费者进行判断
    venpong
    venpong
    Apr 25, 2020
    3
    @lunarzzz 你异步调用的话,在异步的接口里面也会抛异常吧?只不过是主线程接收不到异常,但是我在想 dubbo 接口为啥会超时呢?这个应该根据具体业务来解决吧,如果是查询大量数据,从优化 sql 的角度入手?或者增加超时时长?
    freebird1994
    freebird1994
    Apr 25, 2020
    4
    生产者也可以配置过期时间
    h123123h
    h123123h
    OP
    Apr 25, 2020 via iPhone
    5
    @freebird1994 生产者的时间配置是针对消费者的,并不是针对生产者的
    h123123h
    h123123h
    OP
    Apr 25, 2020 via iPhone
    6
    @venpong 查询超时不影响业务,主要是新增修改这些。消费者超时失败了,但是生产者服务确成功了
    waytodelay
    waytodelay
    Apr 25, 2020
    7
    只能抛出异常提示,系统繁忙,请刷新后重试
    waytodelay
    waytodelay
    Apr 25, 2020
    8
    如果是 新增这种需要做幂等
    h123123h
    h123123h
    OP
    Apr 25, 2020 via iPhone
    9
    @waytodelay 也就是说消费者只能抛出异常提醒,然后生产者超时的那个被调用的方法逻辑如果更新成功了,只能后面补偿?感觉这个设计有缺陷呀
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1468 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:03 · PVG 06:03 · LAX 14:03 · JFK 17:03
    ♥ Do have faith in what you're doing.