V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
WillingXyz
V2EX  ›  程序员

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

  •  
  •   WillingXyz · May 6, 2021 · 2342 views
    This topic created in 1817 days ago, the information mentioned may be changed or developed.
    比如 A 调 B 调 C 调 D,每次调用只传递 orderId,然后 BCD 内部需要根据 orderId 获取其他信息,这会导致多次重复调用。
    (之所以只传 orderId 是为了保持接口的简洁和通用)
    大家都是怎么处理这种情况的?
    9 replies    2021-05-07 11:35:47 +08:00
    wolfie
        1
    wolfie  
       May 6, 2021
    缓存 或 重载。
    iyaozhen
        2
    iyaozhen  
       May 6, 2021
    好像微服务下免不了吧。local cache 下,然后把查 orderId 的服务性能搞好点

    其实也可能是设计问题,理论上不用一直要 orderId 获取信息,实在不行传个 order 对象
    zm8m93Q1e5otOC69
        3
    zm8m93Q1e5otOC69  
       May 6, 2021
    BCD 也会提供给外部调用吗?不提供改成传 Order 可能好一些,提供的话可以缓存一层?
    vindac
        4
    vindac  
       May 6, 2021
    ThreadLocal?
    ForkNMB
        5
    ForkNMB  
       May 6, 2021
    缓存啊 用 @Cacheable 给接口包一层代理 缓存数据放 redis 什么的
    jones2000
        6
    jones2000  
       May 6, 2021
    把 A,B,C,D 实现都放在 1 个 API 不就可以了。 给一个参数表示调用路径 如传"A->B->C"。
    catror
        7
    catror  
       May 6, 2021
    下游被重复调用的接口加缓存
    limbo0
        8
    limbo0  
       May 6, 2021
    1. 不影响性能不用在意, 这样接口太多了
    2. 影响性能可以考虑 cache, 或者重写
    clf
        9
    clf  
       May 7, 2021
    重复不可避免,把重复的部分做好缓存。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3649 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 04:54 · PVG 12:54 · LAX 21:54 · JFK 00:54
    ♥ Do have faith in what you're doing.