• SpringCloud


    总结

    Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求

    Feign包含了Ribbon,其中请求的URL中的IP地址,就是Ribbon的负载均衡来寻找的

    --------------------------------

    Spring Cloud核心组件:Feign

    现在订单服务确实知道库存服务、积分服务、仓库服务在哪里了,同时也监听着哪些端口号了。但是新问题又来了:难道订单服务要自己写一大堆代码,跟其他服务建立网络连接,然后构造一个复杂的请求,接着发送请求过去,最后对返回的响应结果再写一大堆代码来处理吗?

    这是上述流程翻译的代码片段,咱们一起来看看,体会一下这种绝望而无助的感受!!!

    友情提示,前方高能:

     

    看完上面那一大段代码,有没有感到后背发凉、一身冷汗?实际上你进行服务间调用时,如果每次都手写代码,代码量比上面那段要多至少几倍,所以这个事压根儿就不是地球人能干的。

    既然如此,那怎么办呢?别急,Feign早已为我们提供好了优雅的解决方案。来看看如果用Feign的话,你的订单服务调用库存服务的代码会变成啥样?

    @FeignClient

     

    看完上面的代码什么感觉?是不是感觉整个世界都干净了,又找到了活下去的勇气!没有底层的建立连接、构造请求、解析响应的代码,直接就是用注解定义一个 FeignClient接口,然后调用那个接口就可以了。人家Feign Client会在底层根据你的注解,跟你指定的服务建立连接、构造请求、发起靕求、获取响应、解析响应,等等。这一系列脏活累活,人家Feign全给你干了。

    那么问题来了,Feign是如何做到这么神奇的呢?很简单,Feign的一个关键机制就是使用了动态代理。咱们一起来看看下面的图,结合图来分析:

    • 首先,如果你对某个接口定义了@FeignClient注解,Feign就会针对这个接口创建一个动态代理
    • 接着你要是调用那个接口,本质就是会调用 Feign创建的动态代理,这是核心中的核心
    • Feign的动态代理会根据你在接口上的@RequestMapping等注解,来动态构造出你要请求的服务的地址
    • 最后针对这个地址,发起请求、解析响应


    作者:石杉的架构笔记
    链接:https://juejin.cn/post/6844903705553174541
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    PHP下载/采集远程图片到本地
    【问底】徐汉彬:PHP7和HHVM的性能之争
    IntelliJ IDEA 14.x 创建工作空间与多个Java Web项目
    IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
    启动MongoDB时,提示:error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
    IntelliJ IDEA 14.x 的 project 和 module 是啥关系?
    Intellij IDEA 14.x 菜单项中Compile、Make和Build的区别
    Github上的PHP资源汇总大全
    Intellij IDEA 14.x 中的Facets和Artifacts的区别
    Spring技术内幕:Spring AOP的实现原理(二)
  • 原文地址:https://www.cnblogs.com/frankcui/p/14351427.html
Copyright © 2020-2023  润新知