SpringCloud学习笔记(2)——Ribbon

发布于 2019-03-01


参考SpringCloud官网第16、17章 16. Client Side Load Balancer: Ribbon Ribbon是一个客户端的负载均衡器,它提供对大量的HTTP和TCP客户端的访问控制。Feign也是用的Ribbon,所以在这一章你也可以用@FeignClient Ribbon的一个核心概念是命名的客户端。每个负载均衡器都是这个组件的全体的一部分,它们一起工作来连接到服务器,并且它们全体都有一个给定的名字。 Spring Cloud用RibbonClientConfiguration在ApplicationContext中创建一个新的全体,它包含一个ILoadBalancer、一个RestClient和一个ServerListFilter 16.1 How to Include Ribbon

SpringCloud学习笔记(2)——Ribbon

16.2 Customizing the Ribbon Client Spring Cloud可以让你自己完全控制Ribbon客户端,通过用@RibbonClient来声明额外的配置。例如

SpringCloud学习笔记(2)——Ribbon

在这个例子中,这个客户端由RibbonClientConfiguration和FooConfiguration一起组成。

注意:本例中,FooConfiguration必须用@Configuration注解标注,但是它不应该在主Application Context的组件扫描之中,否则它将被所有的Ribbon客户端共享。如果你用@ComponentScan(或者@SpringBootApplication),那么你应该采取措施来避免它被包含到扫描的范围中。

SpringCloud学习笔记(2)——Ribbon
SpringCloud学习笔记(2)——Ribbon

16.3 Customizing default for all Ribbon Clients 通过@RibbonClients注解可以为所有的Ribbon客户端提供一个默认的配置。例如

SpringCloud学习笔记(2)——Ribbon

16.6 Example: How to Use Ribbon Without Eureka Eureka提供了一种抽象的发现远程服务的便捷的方式,这样你就不必在客户端代码中硬编码服务端的URL,但是如果你不用它,那么Ribbon和Feign也是经得起考验的。假设,你没有使用Eureka,并且你用@FeignClient声明了一个"stores"服务,这个时候Ribbon Client默认生成一个配置的服务列表,当然你也可以提供下面这样的配置:

SpringCloud学习笔记(2)——Ribbon

16.7 Example: Disable Eureka use in Ribbon

SpringCloud学习笔记(2)——Ribbon

说了这么多,那究竟怎么用呢?下面看示例演示 在这个示例中有三个角色:注册中心、服务提供方、服务消费方

SpringCloud学习笔记(2)——Ribbon

服务提供方是eureka-demo-client,消费方是ribbon-demo,下面看下消费方是如何配置的 首先是pom.xml,这个没啥说的

SpringCloud学习笔记(2)——Ribbon

其次是application.yml,也没什么特别的

SpringCloud学习笔记(2)——Ribbon

最后是启动类

SpringCloud学习笔记(2)——Ribbon

还有调用的类

SpringCloud学习笔记(2)——Ribbon

先启动eureka-demo-server,然后再启动另外两个工程

SpringCloud学习笔记(2)——Ribbon

浏览器访问消费方地址

SpringCloud学习笔记(2)——Ribbon
SpringCloud学习笔记(2)——Ribbon

哈哈哈,访问成功!!!

SpringCloud学习笔记(2)——Ribbon

17. Declarative REST Client: Feign Feign是一个声明式的Web服务客户端,它使得访问Web服务变得更容易。为了使用Feign,需要创建接口并且使用注解标注它。使用Feign的时候,Spring Cloud集成Ribbon和Eureka来提供一个具有负载均衡能力的HTTP客户端。 17.1 How to Include Feign

SpringCloud学习笔记(2)——Ribbon
SpringCloud学习笔记(2)——Ribbon

@FeignClient注解的value值是一个任意客户端的名字,这个名字被用于创建Ribbon负载均衡器。你还可以使用url属性来指定一个url。 Ribbon客户端想要发现"stores"这个服务的真实的物理地址。如果你的应用中使用的是Eureka,那么它将通过Eureka服务注册类解析。 17.2 Overriding Feign Defaults

SpringCloud学习笔记(2)——Ribbon
SpringCloud学习笔记(2)——Ribbon

接下来,用Feign演示如何调用 再新建一个工程feign-demo

SpringCloud学习笔记(2)——Ribbon
SpringCloud学习笔记(2)——Ribbon
SpringCloud学习笔记(2)——Ribbon
SpringCloud学习笔记(2)——Ribbon
SpringCloud学习笔记(2)——Ribbon
SpringCloud学习笔记(2)——Ribbon
SpringCloud学习笔记(2)——Ribbon

原文始发于:SpringCloud学习笔记(2)——Ribbon