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

mapper
2019-02-16
1.使用 Feign 的时候,要重复定义请求与响应对象,你会怎样修改,让它们只定义一次呢 ?(需要注意,定义在通用模块中显然是不合适的)
答: 这个地方我不太明白,感觉最好的办法就是定义在通用模块中了,难不成在每个需要使用重复请求和相应对象的模块的pom文件中都引入相应的provider ?或者将请求和相应对象写在文件中,使用的地方读文件的方式定义,这样感觉又更离谱…
2.使用 Feign 的时候抛出了异常,你觉得需要做兜底的回退吗 ?为什么 ?
答:这样地方感觉需要吧,如果某个接口是 A ->B -> C -> D,这种层次的调用关系,只要某个服务产生了异常应该都需要回滚吧。
两个问题都不太明白,,请求老师解答 : )
1回答
-
同学你好:
第一个问题:
ad-common 这样的通用模块定义 “特定的” 代码并不合适,因为这些代码只是在特定的微服务调用时才会用到,而不是所有的代码都需要用到。
更合适的做法是再定义一个叫做 sdk 的项目,这里面只定义微服务调用用到的请求对象和响应对象,而不涉及具体的实现类。
第二个问题:
关于兜底回退是需要考虑实现成本的。OpenFeign 的方式调用微服务,并设置了 Hystrix 熔断,这时,Hystrix 会把调用过程包装在自己的线程池中,且会在内存中记录调用信息(所以,才能够通过 Hystrix Dashboard 看到调用信息)。所以,这比直接调用要慢很多。通常,我们不会定义兜底回退,因为当你的程序已经抛出异常了,你能做的事情很有限,不如直接检测到异常,修复问题更加直接、合理。
欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!
422019-03-14
相似问题