SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)

源码地址在这套教程的第一个里

我们打开order80的主类上的注释

SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第1张图片

Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一个Spring Cloud构建的微服务和基础设施中。因为微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的,包括后续我们将要介绍的Feign,它也是基于Ribbon实现的工具。所以,对Spring Cloud Ribbon的理解和使用,对于我们使用Spring Cloud来构建微服务非常重要。

实现负载均衡的算法。

负载规则替换,注意,不能与主启动类在同一个包下!

SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第2张图片

由于负载算法是随机访问,所以我们可以在启动8001,8002的服务多请求几次看下效果

openfeign远程调用,当有很多实例,我们也不能直接指定id去调用服务,因为服务太多了,而且有的服务可能已经在eureka里死掉了,所以不能写死。

OpenFeign是什么?,使用官话解释一下

Feign是一个声明式的Web Service客户端。它的出现使开发Web Service客户端变得很简单。使用Feign只需要创建一个接口加上对应的注解,比如:FeignClient注解。Feign有可插拔的注解,包括Feign注解和JAX-RS注解。Feign也支持编码器和解码器,Spring Cloud Open Feign对Feign进行增强支持Spring MVC注解,可以像Spring Web一样使用HttpMessageConverters等。

Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。

功能可插拔的注解支持,包括Feign注解和JAX-RS注解。支持可插拔的HTTP编码器和解码器(Gson,Jackson,Sax,JAXB,JAX-RS,SOAP)。支持Hystrix和它的Fallback。支持Ribbon的负载均衡。支持HTTP请求和响应的压缩。灵活的配置:基于 name 粒度进行配置支持多种客户端:JDK URLConnection、apache httpclient、okhttp,ribbon)支持日志支持错误重试url支持占位符可以不依赖注册中心独立运行

首先我们会用到以下几个服务
SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第3张图片

第一步

SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第4张图片

第二步
SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第5张图片

第三步

SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第6张图片
第四步

SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第7张图片

第五步

SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第8张图片
启动这五个服务
SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第9张图片

演示效果

SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第10张图片
SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第11张图片
SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第12张图片
演示一下,调用openfeign超时

配置2s超时

SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第13张图片

8001,8002 的接口增加睡眠时间,模拟业务非常耗时
SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第14张图片
请求一下:localhost:80/consumer/payment/feign/timeout

SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第15张图片
SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第16张图片

我们把超时时间配置成5s在重启一下order80

SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第17张图片
SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)_第18张图片
下一篇讲Hystrix

你可能感兴趣的:(spring,cloud,ribbon,负载均衡)