Spring Cloud 在接口调用上,大致会经过如下几个组件配合:

Feign== 》Hystrix ==》Ribbon ==》Http Client(apache http components 或者 Okhttp) 具体交互流程上,如下图所示:

  1. 接口化请求调用

当调用被@FeignClient注解修饰的接口时,在框架内部,将请求转换成Feign的请求实例feign.Request,交由Feign框架处理。

  1. Feign

转化请求Feign是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,封装了Http调用流程。

  1. Hystrix

熔断处理机制 Feign的调用关系,会被Hystrix代理拦截,对每一个Feign调用请求,Hystrix都会将其包装成HystrixCommand,参与Hystrix的流控和熔断规则。如果请求判断需要熔断,则Hystrix直接熔断,抛出异常或者使用FallbackFactory返回熔断Fallback结果;如果通过,则将调用请求传递给Ribbon组件。

  1. Ribbon

服务地址选择 当请求传递到Ribbon之后,Ribbon会根据自身维护的服务列表,根据服务的服务质量,如平均响应时间,Load等,结合特定的规则,从列表中挑选合适的服务实例,选择好机器之后,然后将机器实例的信息请求传递给Http Client客户端,HttpClient客户端来执行真正的Http接口调用;

  1. HttpClient

Http客户端,真正执行Http调用根据上层Ribbon传递过来的请求,已经指定了服务地址,则HttpClient开始执行真正的Http请求

最新文章

  1. Asp.Net MVC4 + Oracle + EasyUI 学习 第一章
  2. 初学python第一天
  3. 关于phpcms中mysql和mysqli的区别
  4. bzero函数
  5. 关于Liferay所有的能够进行自定义和扩展的东西的总结
  6. Python内置数据类型之List篇
  7. Deep Learning(深度学习)学习笔记整理系列之(五)
  8. 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
  9. auto_ptr解析
  10. POJ2586 Y2K Accounting Bug(贪心)
  11. iOS8中添加的extensions总结(四)——Action扩展
  12. C# - MemoryStream
  13. Web缓存解决方案
  14. Struts文件上传
  15. 【python】基础知识练习题一
  16. 使用 certbot 申请泛域名https证书
  17. Monkey测试结果分析
  18. github拓展,以及ModelForm的使用
  19. 容器(container)
  20. [CEOI2004]锯木厂选址 斜率优化DP

热门文章

  1. lua文件修改为二进制文件
  2. MyBatis-Plus代码生成器的使用
  3. Windows下nginx报错解决:CreateFile() "xxx/logs/nginx.pid" failed
  4. ASP.NET Core 中间件的使用(三):全局异常处理机制
  5. LaTeX bib 引用为 作者 + 年份
  6. AOJ/高等排序习题集
  7. java统一返回标准类型
  8. 反调试——7——CRC检测
  9. Apache ShardingSphere 邀您相约 Open Source Day
  10. Conda 命令