Ribbon:Spring Cloud负载均衡与服务调用组件
Ribbon:Spring Cloud负载均衡与服务调用组件
问题总结
- 负载均衡?
- Ribbon实现服务调用?
- Ribbon实现负载均衡?
- 切换负载均衡策略?
- 定制负载均衡策略?
问题答案
负载均衡
负载均衡(Load Balance),将用户的请求平分到多个服务器上运行,以扩展服务器带宽、增强数据处理能力、增加吞吐量、提高网络的可用性和灵活性的目的。
- 服务端负载均衡

服务端负载均衡:在客户端和服务端之间建立一个负载均衡服务器(硬件设备:F5,软件:Nginx)。负载均衡服务器维护了一份可用服务端清单,然后通过心跳机制来删除故障的服务端节点,以保证清单中的所有服务节点都是可以正常访问。
客户端发送请求,全部交给负载均衡服务器(轮询、随机),选择一个服务端进行转发。、
特点:
(1)需要建立一个独立的负载均衡服务器。
(2)负载均衡在客户端发送请求后进行,客户端不知道那个服务器提供服务。
(3)可用服务端清单存储于负载均衡服务器中。
- 客户端负载均衡

- 客户端负载均衡是将负载均衡逻辑以代码的形式封装到客户端上。客户端从服务注册中心获取服务端列表,并通过(轮询、随机)将请求分配给多个服务提供者。
- 服务端负载均衡VS客户端负载均衡
不同点 服务端负载均衡 客户端负载均衡 是否需要建立负载均衡服务器 是 否 是否需要服务注册中心 否 是 可用服务清单存储位置 负载均衡服务器上(nginx) 服务注册中心 负载均衡的时机 发送请求,再进行负载均衡 先负载均衡,再发送请求 客户端是否了解服务提供方消息 否 是
- Ribbon实现服务调用
- Ribbon可以与RestTemplate配合使用,以实现微服务之间的调用。
- RestTemplate是一个用于消费第三方的请求框架,实现了对HTTP请求的封装。例如HEAD、GET、POST、PUT、DELETE等类型的HTTP请求,分别对应RestTemplate中的headForHeaders()、getForObject()、postForObject()、put()、delete()方法。
- Ribbon实现负载均衡
Spring Cloud Ribbon提供了一个IRule接口,用于定义负载均衡策略。
| 序号 | 实现类 | 负载均衡策略 |
|---|---|---|
| 1 | RoundRobinRule | 排序轮询 |
| 2 | RandomRule | 随机选取 |
| 3 | RetryRule | 先轮询,如果获取到的服务实例为null或已经失效,则再指定时间内不断地进行轮询重试,超过指定时间没有获取到则返回null |
| 4 | WeighedResponseTimeRule | RoundRobinRule的一个子类,对父类进行了扩展。根据平均响应时间,计算所以服务实例的权重,响应时间和服务实例的权重、选中概率成反比。刚启动,统计信息不足,使用轮询 |
| 5 | BestAvailableRule | 先过滤掉故障或者失效的服务实例,选择并发量最小的服务实例 |
| 6 | AvailabilityFilteringRule | 同BestAvailableRule |
| 7 | ZoneAvoidanceRule | 默认,根据服务所在区域的性能和服务的可用性,来选择服务实例(轮询) |
- 切换负载均衡策略
- 再客户端的配置类中,将IRule的其他实现类注入到容器中即可。
- 定制负载均衡策略
- 类似于4
Ribbon:Spring Cloud负载均衡与服务调用组件的更多相关文章
- Spring Cloud Feign 声明式服务调用
目录 一.Feign是什么? 二.Feign的快速搭建 三.Feign的几种姿态 参数绑定 继承特性 四.其他配置 Ribbon 配置 Hystrix 配置 一.Feign是什么? 通过对前面Sp ...
- Spring Cloud 负载均衡初体验
目录 服务搭建 1.注册中心--Eureka Server 2.服务提供方--Service Provider 3.服务消费方--Service Consumer 服务消费 Feign 与断路器 Hy ...
- Spring Cloud负载均衡:使用zuul作服务器端负载均衡
1.目的: 本文简述Spring Cloud负载均衡之服务器负载均衡模式,使用组件为zuul. zuul作为Spring Cloud中的网关组件,负责路由转发.身份验证.请求过滤等等功能,那么我们可以 ...
- Spring Cloud Feign声明式服务调用(转载)+遇到的问题
转载:原文 总结: 1.pom添加依赖 2.application中填写正确的eureka配置 3.启动项中增加注解 @EnableFeignClients 4.填写正确的调用接口 通过原文使用Fei ...
- Spring Cloud Alibaba(8)---Feign服务调用
Feign服务调用 有关Spring Cloud Alibaba之前写过五篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring Clo ...
- Spring Cloud负载均衡:使用Feign作客户端负载均衡
有了一篇服务端负载均衡后,再来一篇客户端负载均衡,客户端负载均衡很简单,无需在zuul中做多余配置(本示例不引入zuul),只需要在客户端进行Feign引入和配置即可. 准备工作很简单,实现客户端负载 ...
- spring Cloud负载均衡Ribbon
Ribbon饥饿加载 默认情况下Ribbon是懒加载的.当服务起动好之后,第一次请求是非常慢的,第二次之后就快很多. 解决方式:开启饥饿加载 ribbon: eager-load: enabled: ...
- 笔记:Spring Cloud Feign 声明式服务调用
在实际开发中,对于服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以我们通常会针对各个微服务自行封装一些客户端类来包装这些依赖服务的调用,Spring Cloud Feign 在此基础上做了进 ...
- Spring Cloud Feign 优雅的服务调用
Fegin 是由NetFlix开发的声明式.模板化HTTP客户端,可用于SpringCloud 的服务调用.提供了一套更优雅.便捷的HTTP调用API,并且SpringCloud整合了Fegin.Eu ...
- Spring Cloud 2-Feign 声明式服务调用(三)
Spring Cloud Feign 1. pom.xml 2. application.yml 3. Application.java 4. Client.java 简化RestTemplate调 ...
随机推荐
- PowerDotNet平台化软件架构设计与实现系列(16):财务平台
不同行业基本都会有自己独特的业务,甚至同行的不同企业之间的业务逻辑也会相差千里,只有最大程度抽象出通用性.标准性和普适性的系统才能够成为平台系统,平台系统开发的成本和难度可想而知. 个人深度参与或独立 ...
- pandas -- DataFrame的级联以及合并操作
博客地址:https://www.cnblogs.com/zylyehuo/ 开发环境 anaconda 集成环境:集成好了数据分析和机器学习中所需要的全部环境 安装目录不可以有中文和特殊符号 jup ...
- PAI-DSW常见问题
PAI-DSW常见问题 更新时间:2023年6月5日 18:40:00 本文为您介绍PAI-DSW的相关问题. 什么是PAI-DSW? PAI-DSW实例如何挂载和使用自己的NAS文件系统? 如何在P ...
- qq群匿名聊怎么用
qq群匿名聊怎么用 1 2 3 4 5 分步阅读 匿名的意思就是不认识.群匿名聊当然是把群里的马甲一下变成不认识的人,再在一起聊天.是不是觉得有点吃饱了没事干,但是当下该功能还是比较实用的,群匿名聊可 ...
- PostgreSQL主备库搭建
pg主备库的搭建,首先需在2个节点安装pg软件,然后依次在2个节点配置主备. 本文采用os为CentOS7.6,pg版本使用14.2,以下为详细部署步骤. 本文两个节点的ip地址如下: [root@n ...
- 基于.Net 的 AvaloniUI 多媒体播放器方案汇总
基于.Net 的 AvaloniUI 多媒体播放器方案汇总 摘要 随着国产化的推进,相信.Net的桌面端的小伙伴的可能已经有感受到了. 为了让.Net的桌面框架能够跨桌面平台,首选的就是Avalona ...
- mac os 升级到13后,系统免密失败
# sudo vim /etc/ssh/ssh_config # 添加以下内容 PubkeyAcceptedKeyTypes +ssh-rsa
- 研读Java代码必须掌握的Eclipse快捷键
1. Ctrl+左键 和F3 这个是大多数人经常用到的,用来查看变量.方法.类的定义 跳到光标所在标识符的定义代码.当按执行流程阅读时,F3实现了大部分导航动作. 2 Ctrl+Shift+G 在工作 ...
- 单个Nginx发布多个react静态页面
在有些网络环境中,端口是一种比较稀缺的资源,而我们又恰好有多个前端项目需要发布,我们可以采取将多个项目映射到同一个端口上面的方案加以解决. 本教程前端项目主要以react为主,部署在linux服务器上 ...
- Redis系列之常见数据类型应用场景
目录 String 简单介绍 常见命令 应用场景 Hash 简单介绍 常见命令 应用场景 List 简单介绍 常见命令 应用场景 Set 简单介绍 常见命令 应用场景 Sorted Set(Zset) ...