参考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

16.2 Customizing the Ribbon Client

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

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

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

16.3 Customizing default for all Ribbon Clients

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

说了这么多,那究竟怎么用呢?下面看示例演示

在这个示例中有三个角色:注册中心、服务提供方、服务消费方

服务提供方是eureka-demo-client,消费方是ribbon-demo,下面看下消费方是如何配置的

首先是pom.xml,这个没啥说的

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

最后是启动类

还有调用的类

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

浏览器访问消费方地址

哈哈哈,访问成功!!!

17. Declarative REST Client: Feign

Feign是一个声明式的Web服务客户端,它使得访问Web服务变得更容易。使用Feign的时候,Spring Cloud集成Ribbon和Eureka来提供一个具有负载均衡能力的HTTP客户端。

17.1 How to Include Feign

@FeignClient注解的value值是一个任意客户端的名字,这个名字被用于创建Ribbon负载均衡器。你还可以使用url属性来指定一个url。

Ribbon客户端想要发现"stores"这个服务的真实的物理地址。如果你的应用中使用的是Eureka,那么它将通过Eureka服务注册类解析。

17.2 Overriding Feign Defaults

接下来,用Feign演示如何调用

再新建一个工程feign-demo

SpringCloud学习笔记(2)——Ribbon的更多相关文章

  1. SpringCloud学习笔记(2):使用Ribbon负载均衡

    简介 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡工具,在注册中心对Ribbon客户端进行注册后,Ribbon可以基于某种负载均衡算法,如轮询(默认 ...

  2. SpringCloud学习笔记(3):使用Feign实现声明式服务调用

    简介 Feign是一个声明式的Web Service客户端,它简化了Web服务客户端的编写操作,相对于Ribbon+RestTemplate的方式,开发者只需通过简单的接口和注解来调用HTTP API ...

  3. SpringCloud学习笔记(4):Hystrix容错机制

    简介 在微服务架构中,微服务之间的依赖关系错综复杂,难免的某些服务会出现故障,导致服务调用方出现远程调度的线程阻塞.在高负载的场景下,如果不做任何处理,可能会引起级联故障,导致服务调用方的资源耗尽甚至 ...

  4. SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据

    简介 上篇文章中讲了使用Hystrix实现容错,除此之外,Hystrix还提供了近乎实时的监控.本文将介绍如何进行服务监控以及使用Hystrix Dashboard来让监控数据图形化. 项目介绍 sc ...

  5. SpringCloud学习笔记(6):使用Zuul构建服务网关

    简介 Zuul是Netflix提供的一个开源的API网关服务器,SpringCloud对Zuul进行了整合和增强.服务网关Zuul聚合了所有微服务接口,并统一对外暴露,外部客户端只需与服务网关交互即可 ...

  6. SpringCloud学习笔记:服务支撑组件

    SpringCloud学习笔记:服务支撑组件 服务支撑组件 在微服务的演进过程中,为了最大化利用微服务的优势,保障系统的高可用性,需要通过一些服务支撑组件来协助服务间有效的协作.各个服务支撑组件的原理 ...

  7. SpringCloud学习笔记(7):使用Spring Cloud Config配置中心

    简介 Spring Cloud Config为分布式系统中的外部化配置提供了服务器端和客户端支持,服务器端统一管理所有配置文件,客户端在启动时从服务端获取配置信息.服务器端有多种配置方式,如将配置文件 ...

  8. SpringCloud学习笔记:负载均衡Ribbon(3)

    1. RestTemplate简介 RestTemplate是Spring Resource中一个访问第三方RESTful API接口的网络请求框架. RestTemplate是用来消费REST服务的 ...

  9. SpringCloud学习笔记(四、SpringCloud Netflix Ribbon)

    目录: Ribbon简介 Ribbon的应用 RestTemplate简介 Ribbon负载均衡源码分析 Ribbon简介: 1.负载均衡是什么 负载均衡,根据其字面意思来说就是让集群服务具有共同完成 ...

随机推荐

  1. Linux入门(17)——Ubuntu16.04显示内存CPU网速等(System Monitor)

    终端查看内存状况有两个命令 top htop 如果系统没有安装htop的话,那就安装一下. 然而这样比较麻烦,System Monitor是个不错的选择,System Monitor可以显示网速,内存 ...

  2. 217. Contains Duplicate (leetcode)

    Given an array of integers, find if the array contains any duplicates. Your function should return t ...

  3. React UI 组件库uiw v1.2.8 发布

    uiw 高品质的UI工具包,基于React 16+的组件库.

  4. [Bayesian] “我是bayesian我怕谁”系列 - Naive Bayes+prior

    先明确一些潜规则: 机器学习是个collection or set of models,一切实践性强的模型都会被归纳到这个领域,没有严格的定义,’有用‘可能就是唯一的共性. 机器学习大概分为三个领域: ...

  5. python常用模块上篇

    python常见模块 分两篇分别介绍下述模块 time模块 random模块 hashlib模块 os模块 sys模块 logging模块 序列号模块 configparser模块 re模块 time ...

  6. Django web框架篇:基础

    对于web开发者来说,socket是基础.因为Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 对于真实开发中的python web程序来说,一般会分为两 ...

  7. c++学习笔记---02---从一个小程序说起

    从一个小程序说起 这一讲的主要目的是帮助大家在C语言的背景知识上与C++建立联系. 问题探索 问题:对一个整型数组求和. 要求:定义一个存储着 n 个元素的数组,要求用C语言完成这个任务. 赶紧的:大 ...

  8. js 时间字符串转化为时间

    对于时间字符串格式为:"2017-03-03 12:23:55"; IE:显示无效的日期 new Date("2017-03-3 12:23:55") //[d ...

  9. shapes 不规则边界

    CSS基本形状都是矩形,CSS shapes允许开发者用定制的路径来包裹内容,例如圆形,椭圆,多边形等.   形状可以自定义也可以从图片中推断   从图片推断,例如可以让文字按照图片形状来浮动到一边: ...

  10. <template> 标签

    <template> 元素,用于描述一个标准的以 DOM 为基础的方案来实现客户端模板.该模板允许你定义一段可以被转为 HTML 的标记,在页面加载时不生效,但可以在后续进行动态实例化.( ...