您现在的位置是:首页 > 文章详情

Spring Cloud微服务实战(五)-应用通信

日期:2018-06-08点击:457

1 HTTP vs RPC

img_89d0214f37d2623f59ddc93c4fde896d.png

img_7c1143cec9b1b674db8fe93b5d722bc8.png

5-2 RestTemplate的三种使用方式


img_505954a5dbd7fd838d7bf9b27c3ed8e0.png

img_3fc8c8ec5af6c8dd0514869a79894732.png

img_985b843c1d3c9049b4fce6cd277f8940.png

3 负载均衡器:Ribbion

img_0ae78e127b71563645a77fd3b4e82ba8.png

img_e61ad0c5702011a69f26f7df38b4c4ec.png

4 追踪源码自定义负载均衡策略

img_ffe5d73f039aee3fa856ce824558ac97.png
command+option+B进入其实现类

img_3743b45b399faa651da8781cbb379d3a.png
再跟进到 LoadBalancerClient 中

img_87d34e7a6ed044b1ca80f103293d90ae.png

img_2db4bec9e339b1e46b14dd2a6d640bd4.png

img_6c8dfb259f7f470a9ad7afab574e3a85.png
RibbonLoadBalancerClient#choose()

img_12bed7a01fb55f66a49eed4ed1162c7a.png
RibbonLoadBalancerClient#getServer(ILoadBalancer loadBalancer)

img_89257f76883ecf758d8175c0a8527a77.png

img_3fc59be0fc9a77da7bd595236505d1b1.png
ILoadBalancer

img_2e7808adcf8edb8a3eb360641023eb29.png
RibbonLoadBalancerClient#getServer(ILoadBalancer loadBalancer)

img_03412d3c924ca01caca98b1dac333e65.png

img_0aa87b7723fc757167820aa2f32541d3.png
ILoadBalancer#getAllServers(),并进入

启动两个 Product 服务


img_d32eb01359b6f8188d2f8d0db073aac8.png
product#1

img_2c44f3be9826c91cfee569084f808093.png
product#2

再 debug 启动 Order 服务


img_a9f78e443dc3495694fd2ee917831d0e.png

img_bb8526496fdc734a17a1ee2b9fc4ca0a.png
三个服务成功注册
img_430977bc18f9108b10c5a3a1343abf58.png
在此打断点,并 debug 运行

img_3ff5acc924edb069d75df90ce885048e.png

img_ca78984e975d1c1125c99007efe11908.png
获取服务列表
  • 再看看其负载均衡策略
    img_b9ccff8a8ff272c764d069603a753c5d.png

    img_734618031e04992f62690461a54a1d41.png
    可见默认即轮询

    负载均衡请求
    img_fb26b86420d573d4c6ed5be1bebbf353.png
    请求到2

    img_9845ba4fb972d7d61d48029205665d8c.png
    请求到1

    的确是轮询请求
    img_beb4861396c0532b625098a800e7b8ec.png

    img_2bc8d9a0d62d80049857d33599172272.png
    通过启动日志也可看出具体使用的策略

    为了检验是否为轮询,在此打断点
    img_bcc6fa4bcc22cc2640d0c0e4d36ef520.png

    img_1fb8e2e5d791bb4c07ebdc401541d743.png
    符合预期,确实为轮询

    如果希望使用其他负载均衡规则该咋办呢,看官网文档
    img_905d394a86034b39ac2f383de3e99aab.png

    img_b81380c57c112cde065949fb3d813c7f.png
    如希望用随机规则替代默认的轮询规则

    img_395e374adacce07b2187e3ce596934ff.png
    配置全路径名

    img_4519eb427cb092d97a07de09c118e68a.png
    成功替换默认规则

    5-5 Feign的使用
    Feign是一个声明式的Web服务客户端。这使得Web服务客户端的写入更加方便 要使用Feign创建一个界面并对其进行注释。它具有可插入注释支持,包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持,并使用Spring Web中默认使用的HttpMessageConverters。Spring Cloud集成Ribbon和Eureka以在使用Feign时提供负载均衡的http客户端。
img_20d86a31c7c7b90d8a513b8474c76f93.png

如何加入Feign

  1. 要在您的项目中包含Feign,请使用组org.springframework.cloud和工件ID spring-cloud-starter-feign的启动器


    img_85d64e0ed06cf2cbb546d375f4a636d4.png
  2. 在启动类添加注解@EnableFeignClients
    可以在@EnableFeignClients属性defaultConfiguration中以与上述相似的方式指定默认配置。不同之处在于,此配置将适用于所有feigh客户端。


    img_ad9e0ea0ce20e105d7ec811cb618ad12.png

    调用商品服务的目标接口


    img_3636a6f46c68340d31276a573187777d.png
  3. 声明调用的服务接口方法
  • @FeignClient
    name属性为某所需调用的某个服务的接口
    @FeignClient注释中,String值(以上“存储”)是一个任意的客户端名称,用于创建Ribbon负载平衡器,还可以使用url属性(绝对值或只是主机名)指定URL。应用程序上下文中的bean的名称是该接口的完全限定名称。要指定自己的别名值,可以使用@FeignClient注释的qualifier值。
    img_b666d10d3d5a1a9abe740cdc78f940d0.png
    添加@FeignClient注解

5-6 获取商品列表(Feign)
5-7 扣库存(Feign)
5-8 整合接口打通下单流程(Feign)
5-9 项目改造成多模块
5-10 同步or异步
5-11 RabbitMQ的安装
5-12 微服务,Docker和DevOps

原文链接:https://yq.aliyun.com/articles/635958
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章