微服务中,FeignClient 到底是该调用方来写还是服务提供方来写?

2020-03-14 10:04:32 +08:00
 InkAndBanner

微服务项目中 A 项目要调用 B 项目 , A 项目中通过 FeignClient 来调用 B 中的 Controller,从而实现调用他的 service 不是很正常的事情吗,也可以让 B 服务无感知 , 但是今天主程就非让我写在服务提供方(也就是被调方的项目中), 我就觉得离谱 ,我跟他说了我的想法,他用大家都是这么写的把我敷衍了.....

3209 次点击
所在节点    问与答
12 条回复
kannbala
2020-03-14 10:06:17 +08:00
主程说的是对的
InkAndBanner
2020-03-14 10:12:48 +08:00
@kannbala 但是按理说我调用你的服务 我应该让你无感知才对啊 应该我来写吧
kannbala
2020-03-14 10:20:58 +08:00
正确的姿势是服务提供方提供 Facade 接口,调用方引入 Facade 依赖进行调用
jeffh
2020-03-14 10:47:41 +08:00
内部系统调用,服务端是应该提供调用的 api 包,楼上说的没错,主程说的也没错
renha0
2020-03-14 10:52:01 +08:00
4 楼说的没毛病。再服务池中把各个服务的 api 通过 feignClient 暴露出来,互相调用时都无感知。
cnbattle
2020-03-14 11:25:35 +08:00
服务方啊,写一遍所有调用方都可以直接用了,你想让所有调用方全写一遍吗😳
InkAndBanner
2020-03-14 11:46:15 +08:00
又长知识了哈哈哈
sunziren
2020-03-14 12:25:29 +08:00
@cnbattle 奥,这个理由我满意。
endlessJ219
2020-03-14 15:45:01 +08:00
采用 Facade+引入依赖的方式,感觉不利于最小化微服务间的依赖啊
ak78
2020-03-14 15:56:57 +08:00
服务提供方单独提供 FeignClient 的 api 包,调用方引用 FeignClient 对应的 jar 包直接使用
yisheyuanzhang
2020-12-29 11:54:15 +08:00
请教一下楼主最终确定的什么方案, 最近也在纠结这个问题。 看到网上开源项目中两种方式有有(服务方提供 api 模块 or 消费方直接写 feign+fallback )
yisheyuanzhang
2020-12-29 12:05:03 +08:00
《微服务设计》中,是说服务消费方要自己定义熔断的处理逻辑。 但是感觉这样写的人比较少
![图片]( https://s3.ax1x.com/2020/12/29/rH3I0J.png)

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

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

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

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

© 2021 V2EX