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

2021-05-06 13:37:25 +08:00
 WillingXyz
比如 A 调 B 调 C 调 D,每次调用只传递 orderId,然后 BCD 内部需要根据 orderId 获取其他信息,这会导致多次重复调用。
(之所以只传 orderId 是为了保持接口的简洁和通用)
大家都是怎么处理这种情况的?
1857 次点击
所在节点    程序员
9 条回复
wolfie
2021-05-06 13:49:36 +08:00
缓存 或 重载。
iyaozhen
2021-05-06 14:17:58 +08:00
好像微服务下免不了吧。local cache 下,然后把查 orderId 的服务性能搞好点

其实也可能是设计问题,理论上不用一直要 orderId 获取信息,实在不行传个 order 对象
uselessVisitor
2021-05-06 14:31:06 +08:00
BCD 也会提供给外部调用吗?不提供改成传 Order 可能好一些,提供的话可以缓存一层?
vindac
2021-05-06 15:05:29 +08:00
ThreadLocal?
ForkNMB
2021-05-06 16:18:29 +08:00
缓存啊 用 @Cacheable 给接口包一层代理 缓存数据放 redis 什么的
jones2000
2021-05-06 16:35:42 +08:00
把 A,B,C,D 实现都放在 1 个 API 不就可以了。 给一个参数表示调用路径 如传"A->B->C"。
catror
2021-05-06 16:35:59 +08:00
下游被重复调用的接口加缓存
limbo0
2021-05-06 17:00:31 +08:00
1. 不影响性能不用在意, 这样接口太多了
2. 影响性能可以考虑 cache, 或者重写
clf
2021-05-07 11:35:47 +08:00
重复不可避免,把重复的部分做好缓存。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/775146

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX