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

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

  •  
  •   h123123h · 2020-04-25 00:56:22 +08:00 · 2050 次点击
    这是一个创建于 1456 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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