Feign源码解析系列-最佳实践
2019-04-13 22:35
821 查看
前几篇准备写完feign的源码,这篇直接给出Feign的最佳实践,考虑到目前网上还没有一个比较好的实践解释,对于新使用spring cloud的同学会对微服务之间的依赖产生一些迷惑,也会走一些弯路。这里给出目前本人在公司推荐的最佳实践,供各位参考。
1,服务提供方在Facade层定义好接口信息,包括接口路径,请求方式,入参,出参,返回错误等,并提供jar。
2,服务调用方项目引入提供方Facade层的jar,在自己项目中抄一份接口的定义,再包一层代理提供给自己业务层调用。 抄一份虽然说看起来不是很优雅,但是也有个好处对外部依赖是可以控制的,代码也会清晰。一方面原因,如果你尝试想直接依赖jar来引入Feign client 那么在EnableFeignClients注解的basePackages需要更改,如果依赖不断增多这个值也会不断变动。还有更重要的原因是,我们知道fallback的定义在Feign client接口上定义的,在调用方配置fallback才是更加合理,如果打入jar,那就无法实现fallback的配置了。
3,服务提供方打的facade jar包中不需要提供Fallback能力,由调用方配置实现Fallback,推荐使用FallbackFactory,原因是create方法可以细化异常的判断。
4,在调用方上写的Feign proxy 需要对响应的返回值或异常进行处理后再提供给自己上层业务代码调用。接口的异常返回内容推荐在方法上进行详细的注释,我们约定接口返回的标准参数,比如code可以判定接口返回的实际情况,由上层调用方进行判断转换成自己的业务。
5,最后关于feign的默认配置比如请求超时时间等,最好是在配置中心进行全局配置一份,各个应用自己可以覆盖配置。
相关文章推荐
- Feign源码解析系列-那些注解们
- Scala中隐式转换内幕操作规则揭秘、最佳实践及其在Spark中的应用源码解析之Scala学习笔记-55
- 第42课: Spark Broadcast内幕解密:Broadcast运行机制彻底解密、Broadcast源码解析、Broadcast最佳实践
- Scala 深入浅出实战经典 第65讲:Scala中隐式转换内幕揭秘、最佳实践及其在Spark中的应用源码解析
- Scala深入浅出进阶经典 第65讲:Scala中隐式转换内幕操作规则揭秘、最佳实践及其在Spark中的应用源码解析
- [Spark內核] 第42课:Spark Broadcast内幕解密:Broadcast运行机制彻底解密、Broadcast源码解析、Broadcast最佳实践
- 65.Scala中隐式转换内幕操作规则揭秘、最佳实践及其在Spark中的应用源码解析
- String系列——StringBuilder & StringBuffer关键源码解析
- Hadoop1.2.1源码解析系列:JT与TT之间的心跳通信机制——JT篇
- jQuery-1.9.1源码分析系列(三) Sizzle选择器引擎——词法解析
- [最佳实践]基于Struts2+Spring+iBatis的web应用最佳实践系列之一(自动配置篇)
- Oracle LOCK内部机制及最佳实践系列(四)深入分析mode 2-6 的TM锁相互间的互斥关系
- tomcat源码解析系列--源码搭建
- Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
- Dubbo 源码解析系列一 ExtensionLoader
- LINQ快速开发设计最佳实践系列
- Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例
- 事务管理最佳实践全面解析
- 事务管理最佳实践全面解析(转)http://blog.csdn.net/shendl/archive/2006/11/27/1415958.aspx
- 给jdk写注释系列之jdk1.6容器(1):ArrayList源码解析