Feign源码解析 04:超时与重试机制
本文讲解相关技术要点和实践经验。
Feign源码解析 03:请求处理机制
本文讲解相关技术要点和实践经验。
接口方法与MethodHandler映射map的生成机制
在开始之前,先说一下FeignClient接口的上的SpringMVC注解是如何被解析的,回顾到之前生成动态代理的时候,有个nameToHandler的map,有一句非常关键的代码。
1 | Map<String, MethodHandler> nameToHandler = targetToHandlersByName.apply(target); |
这里面就完成了SpringMVCContract对方法的解析
1 | // ReflectiveFeign.java |
Feign源码解析 02:动态代理创建
本文讲解相关技术要点和实践经验。
Feign源码解析 01:整体架构与入口
本文系统讲解Feign01-流程大体分析和源码分析入口相关技术,提供实践指导和最佳实践方案。
Feign的组件简介
Feign负责简化接口调用,发起Http请求,Feign也包含了几个核心组件
- 编码器和解码器:Encoder和Decoder。
Encoder:如果调用接口的时候,传递的参数是个对象,feign需要将这个对象进行encode解码,json序列化,把一个对象转成json格式。
Decoder:json反序列化,收到json以后,将json转换成本地的一个Java对象。 - Logger:用于打印接口请求相关的调用日志
- Contract:feign注解和spring web mvc 支持的@PathVariable,@RequesstMapping,@RequestParam等注解结合起来使用了。feign本来是没法支持spring web mvc的注解的,但是有了contract(契约组件)支持后,这个组件负责解释其他的注解,让feign可以跟其他注解结合起来使用。
- Feign.Builder:Feign客户端的一个实例构造器,基于构建器模式的,Ribbon也有。
- FeignClient:最核心的入口,和RibbonLoadBalancerClient类似,包含以上这些核心的组件,基于这些组件去协作调用。
Ribbon源码解析:负载均衡与请求处理
本文讲解相关技术要点和实践经验。
Eureka源码解析 05:集群初始化与同步
本文讲解相关技术要点和实践经验。
Eureka源码解析 04:心跳与自我保护机制
本文讲解相关技术要点和实践经验。
Eureka源码解析 03:服务列表同步
本文讲解相关技术要点和实践经验。
Eureka源码解析 02:服务注册流程
本文讲解相关技术要点和实践经验。
eureka client启动流程
上一篇文章,我们分析了eureka server的启动流程,这一篇来分析一下eureka client的启动流程。我们先要找到启动入口在哪里。在eureka-examples里,有一个ExampleEurekaClient的测试类。要执行这个类,首先需要复制一段代码,设置一些基础属性,这是从eureka-server的单元测试里复制过来的:
1 | /** |
