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

在一个请求执行过程中,多次调用同一个接口,大家都是怎么处理的?

  •  
  •   WillingXyz · 2021-05-06 13:37:25 +08:00 · 1652 次点击
    这是一个创建于 1057 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 A 调 B 调 C 调 D,每次调用只传递 orderId,然后 BCD 内部需要根据 orderId 获取其他信息,这会导致多次重复调用。
    (之所以只传 orderId 是为了保持接口的简洁和通用)
    大家都是怎么处理这种情况的?
    9 条回复    2021-05-07 11:35:47 +08:00
    wolfie
        1
    wolfie  
       2021-05-06 13:49:36 +08:00
    缓存 或 重载。
    iyaozhen
        2
    iyaozhen  
       2021-05-06 14:17:58 +08:00
    好像微服务下免不了吧。local cache 下,然后把查 orderId 的服务性能搞好点

    其实也可能是设计问题,理论上不用一直要 orderId 获取信息,实在不行传个 order 对象
    uselessVisitor
        3
    uselessVisitor  
       2021-05-06 14:31:06 +08:00
    BCD 也会提供给外部调用吗?不提供改成传 Order 可能好一些,提供的话可以缓存一层?
    vindac
        4
    vindac  
       2021-05-06 15:05:29 +08:00
    ThreadLocal?
    ForkNMB
        5
    ForkNMB  
       2021-05-06 16:18:29 +08:00
    缓存啊 用 @Cacheable 给接口包一层代理 缓存数据放 redis 什么的
    jones2000
        6
    jones2000  
       2021-05-06 16:35:42 +08:00
    把 A,B,C,D 实现都放在 1 个 API 不就可以了。 给一个参数表示调用路径 如传"A->B->C"。
    catror
        7
    catror  
       2021-05-06 16:35:59 +08:00
    下游被重复调用的接口加缓存
    limbo0
        8
    limbo0  
       2021-05-06 17:00:31 +08:00
    1. 不影响性能不用在意, 这样接口太多了
    2. 影响性能可以考虑 cache, 或者重写
    clf
        9
    clf  
       2021-05-07 11:35:47 +08:00
    重复不可避免,把重复的部分做好缓存。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1005 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:26 · PVG 03:26 · LAX 12:26 · JFK 15:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.