Spring Cloud调用接口过程
2024-08-29 00:21:15
Spring Cloud 在接口调用上,大致会经过如下几个组件配合:
Feign
== 》Hystrix
==》Ribbon
==》Http Client(apache http components 或者 Okhttp)
具体交互流程上,如下图所示:
- 接口化请求调用
当调用被@FeignClient
注解修饰的接口时,在框架内部,将请求转换成Feign的请求实例feign.Request
,交由Feign框架处理。
- Feign
转化请求Feign是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,封装了Http调用流程。
- Hystrix
熔断处理机制 Feign的调用关系,会被Hystrix代理拦截,对每一个Feign调用请求,Hystrix都会将其包装成HystrixCommand
,参与Hystrix的流控和熔断规则。如果请求判断需要熔断,则Hystrix直接熔断,抛出异常或者使用FallbackFactory
返回熔断Fallback
结果;如果通过,则将调用请求传递给Ribbon
组件。
- Ribbon
服务地址选择 当请求传递到Ribbon
之后,Ribbon
会根据自身维护的服务列表,根据服务的服务质量,如平均响应时间,Load等,结合特定的规则,从列表中挑选合适的服务实例,选择好机器之后,然后将机器实例的信息请求传递给Http Client
客户端,HttpClient
客户端来执行真正的Http接口调用;
- HttpClient
Http客户端,真正执行Http调用根据上层Ribbon
传递过来的请求,已经指定了服务地址,则HttpClient开始执行真正的Http请求
最新文章
- Asp.Net MVC4 + Oracle + EasyUI 学习 第一章
- 初学python第一天
- 关于phpcms中mysql和mysqli的区别
- bzero函数
- 关于Liferay所有的能够进行自定义和扩展的东西的总结
- Python内置数据类型之List篇
- Deep Learning(深度学习)学习笔记整理系列之(五)
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
- auto_ptr解析
- POJ2586 Y2K Accounting Bug(贪心)
- iOS8中添加的extensions总结(四)——Action扩展
- C# - MemoryStream
- Web缓存解决方案
- Struts文件上传
- 【python】基础知识练习题一
- 使用 certbot 申请泛域名https证书
- Monkey测试结果分析
- github拓展,以及ModelForm的使用
- 容器(container)
- [CEOI2004]锯木厂选址 斜率优化DP