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

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

  •  
  •   WillingXyz · May 6, 2021 · 2751 views
    This topic created in 2014 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
    wolfie
    May 6, 2021
    1
    缓存 或 重载。
    iyaozhen
    iyaozhen
    May 6, 2021
    2
    好像微服务下免不了吧。local cache 下,然后把查 orderId 的服务性能搞好点

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