6-4回答

来源:6-4 【总结与作业】关于微服务调用的介绍及作业

mapper

2019-02-16

1.使用 Feign 的时候,要重复定义请求与响应对象,你会怎样修改,让它们只定义一次呢 ?(需要注意,定义在通用模块中显然是不合适的)

答: 这个地方我不太明白,感觉最好的办法就是定义在通用模块中了,难不成在每个需要使用重复请求和相应对象的模块的pom文件中都引入相应的provider ?或者将请求和相应对象写在文件中,使用的地方读文件的方式定义,这样感觉又更离谱…

2.使用 Feign 的时候抛出了异常,你觉得需要做兜底的回退吗 ?为什么 ?

答:这样地方感觉需要吧,如果某个接口是 A ->B -> C -> D,这种层次的调用关系,只要某个服务产生了异常应该都需要回滚吧。

两个问题都不太明白,,请求老师解答 : )

写回答

1回答

张勤一

2019-02-17

同学你好:

    第一个问题:

    ad-common 这样的通用模块定义 “特定的” 代码并不合适,因为这些代码只是在特定的微服务调用时才会用到,而不是所有的代码都需要用到。

    更合适的做法是再定义一个叫做 sdk 的项目,这里面只定义微服务调用用到的请求对象和响应对象,而不涉及具体的实现类。


    第二个问题:

    关于兜底回退是需要考虑实现成本的。OpenFeign 的方式调用微服务,并设置了 Hystrix 熔断,这时,Hystrix 会把调用过程包装在自己的线程池中,且会在内存中记录调用信息(所以,才能够通过 Hystrix Dashboard 看到调用信息)。所以,这比直接调用要慢很多。通常,我们不会定义兜底回退,因为当你的程序已经抛出异常了,你能做的事情很有限,不如直接检测到异常,修复问题更加直接、合理。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持! 

4
2
张勤一
回复
qq_灬Mamba磊_0
服务之间的调用栈不能太深,且微服务之间不应该做多处保存。
2019-03-14
共2条回复

Spring Cloud微服务架构 设计实现广告系统

广告营销系统,未来大中型企业的标配

2136 学习 · 927 问题

查看课程

相似问题

10-6作业回答

回答 1

4-5作业回答

回答 1

3-1回答

回答 1

8-12作业回答

回答 1