Fegin
2024-07-20 18:34:37 0 举报
AI智能生成
Fegin是一个Java HTTP客户端库,用于简化与HTTP服务的通信过程。它使用强大的RESTful API,并为用户提供了一种简洁而优雅的方式来配置和发送HTTP请求。Fegin还支持可插拔的代码执行器,如Hystrix,以实现断路器模式和线程池隔离等容错特性,确保服务的高可用性和稳定性。此外,它还可以与Spring生态系统紧密集成,简化了项目开发和维护过程。
作者其他创作
大纲/内容
基本参数的配置
Feign的参数配置
feign和ribbon超时和重试的参数配置
ribbon:
ConnectTimeout: 1000
ReadTimeout: 1000
OkToRetryOnAllOperations: true
MaxAutoRetries: 1
MaxAutoRetriesNextServer: 3
ribbon:
ConnectTimeout: 1000
ReadTimeout: 1000
OkToRetryOnAllOperations: true
MaxAutoRetries: 1
MaxAutoRetriesNextServer: 3
整体架构图
FeignClient的构建
入口启动配置
@EnableFeignClients
解析@FeignClint并注入到Spring容器中
概要图
解析注入到spring关键类
FeignClientFactoryBean
FeignClientFactoryBean
整体流程图1
整体流程图2
Feign.Builder
默认是原生的这个Feign.Builder,feign.hystrix.enabled = true 那么为HystrixFeign.Builder
FeignContext
每个服务都对应一个独立的spring容器
FeignClient如何和ribbon结合
疑问
@FeignClient上,未配置url属性(未指定自己服务器的URL)
会自动跟ribbon关联起来,采用ribbon来进行负载均衡,如:http://ServiceA
会自动跟ribbon关联起来,采用ribbon来进行负载均衡,如:http://ServiceA
访问的是这个ServiceA服务的某一类接口,会自动拼成:http://ServiceA/user
源码图
FeignClient是如何绑定到动态代理
源码图
FeginClient的请求机制
整体流程图
MethodHandler创建和解析
LoadBalancerFeignClient的工作流程
源码图
子主题
与ribbon以及eureka的相互整合
RibbonClientConfiguraiton
初始化这个ZoneAwareLoadBalancer
在spring boot启动,RibbonClientConfiguraiton初始化这个ZoneAwareLoadBalancer
获取到那个服务对应的一个独立的spring容器,从这个容器里面去获取对应的独立的ZoneAwareLoadBalancer
人家自己里面就有DomainExtractingServerList,DomainExtractingServerList这个东西自己会去eureka的注册表里去抓取服务对应的注册表
0 条评论
下一页