Ribbon的基本使用
Ribbon
一、概述
Ribbon是Netflix公司提供的一个基于HTTP和TCP的客户端负载均衡工具。
Eureka中自带Ribbon了!
Ribbon主要有两个功能:
简化远程调用
负载均衡
客户端负载均衡:
- 负载均衡算法在服务端
- 由负载均衡器维护服务地址列表
服务端负载均衡:
- 负载均衡算法在客户端
- 客户端维护服务地址列表
二、入门案例:
简化远程调用:
步骤:
使用 Ribbon 简化restTemplate调用
1. 在声明restTemplate的Bean时候,添加一个注解:@LoadBalanced
2. 在使用restTemplate发起请求时,需要定义url时,host:port可以替换为 服务提供方的 应用名称
在config类中的
@Bean
上再加一个注解@LoadBalanced
在调用的时候直接使用服务名
String url="http://EUREKA-PROVIDE/goods/findOne/"+id; Goods goods = restTemplate.getForObject(url, Goods.class);
重启,访问下就能看到效果了!
负载均衡:
在provider中加上几行代码,显示调用的端口号
@Autowired
private GoodsService goodsService;
@Value("${server.port}")
private Integer port;
@RequestMapping("/findOne/{id}")
public Goods findOne(@PathVariable Integer id){Goods goods = goodsService.findOne(id);goods.setTitle(goods.getTitle()+":"+port);//将端口号,设置到了 商品标题上return goods;
}
结果显示8001和8002交替显示,显然是轮询!
Ribbon负载均衡策略:
- 随机 :RandomRule
- 轮询 :RoundRobinRule(默认的负载均衡策略)
- 最小并发:BestAvailableRule(服务A-1,服务A-2,服务A-3,这三个服务中谁最闲一般认为是性能高)
- 过滤:AvailabilityFilteringRule(坏的服务过滤掉)
- 响应时间:WeightedResponseTimeRule(发送一个数据包到三个服务中,看谁最先响应,谁快就调用谁)
- 轮询重试:RetryRule(默认轮询10次,如果节点出现问题,会去找第二个,如果轮询到10次都挂了那就响应失败)
- 性能可用性:ZoneAvoidanceRule(综合考虑性能和可用性,看谁分数高就用谁)
负载均衡配置:
Ribbon默认的负载均衡策略是轮询,如果机器性能差不多,用轮询比较合适。
设置负载均衡策略:两种方法:
JAVA编码的方式
创建一个配置类
@Configuration public class MyRule {@Beanpublic IRule rule(){return new RandomRule();} }
注意:这个
new RandomRule()
可以改成其他IRule接口的实现类
在项目启动类上加上这个注解,指定服务名和规则配置类
/*配置Ribbon的负载均衡策略 name* name:设置 服务提供方的 应用名称* configuration:设置负载均衡Bean*/ @RibbonClient(name = "EUREKA-PROVIDE",configuration = MyRule.class)
配置文件的方式
在application.yml中指定服务的负载均衡策略:
# 配置的方式设置Ribbon的负载均衡策略 EUREKA-PROVIDER: # 设置的服务提供方的 应用名称ribbon:NFloadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 策略类(全路径名)
置的服务提供方的 应用名称
ribbon:NFloadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 策略类(全路径名)
Ribbon的基本使用相关推荐
- 【微服务架构】SpringCloud使用Ribbon实现负载均衡
说在前面 软负载均衡的实现方式有两种,分别是服务端的负载均衡和客户端的负载均衡 服务端负载均衡:当浏览器向后台发出请求的时候,会首先向反向代理服务器发送请求,反向代理服务器会根据客户端部署的ip:po ...
- Rocksdb Ribbon Filter : 结合 XOR-filter 以及 高斯消元算法 实现的 高效filter
文章目录 前言 XOR-filter 实现原理 xor filter 的构造原理 xor filter 构造总结 XOR-filter 和 ADD-filter对比 XOR-filter 在计算上的优 ...
- Spring Cloud(三)服务提供者 Eureka + 服务消费者(rest + Ribbon)
Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具.它是一个基于HTTP和TCP的客户端负载均衡器.它可以通过在客户端中配置ribbonServer ...
- 五、springcloud之客户端负载均衡Ribbon
一.简介 在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的.Spring cloud有两种服务调用方式: 一种是ribbon+restTemplate, ...
- Spring Cloud第二篇:服务消费者RestTemplate+Ribbon
在上一篇文章,讲了服务的注册和发现.在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的.Spring cloud有两种服务调用方式,一种是ribbon+r ...
- 深入理解Ribbon之源码解析
什么是Ribbon Ribbon是Netflix公司开源的一个负载均衡的项目,它属于上述的第二种,是一个客户端负载均衡器,运行在客户端上.它是一个经过了云端测试的IPC库,可以很好地控制HTTP和TC ...
- ribbon 默认负载均衡 是什么_面试官:说说Ribbon是如何实现负载均衡的?
你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 来源:blog.csdn.net/LO_YUN/article/details/ ...
- springcloud 子项目怎么导入_使用eclipse一步一步创建SpringCloud项目(二)—— 使用feign和ribbon调用微服务...
一.创建服务提供者service-hi 1.创建子项目方法类似eureka,略 2.修改pom文件,主要是添加jar包 4.0.0 com.landcode land 1.0.0-SNAPSHOT l ...
- Spring Cloud Ribbon(服务消费者)
Spring Cloud Ribbon 是一个基于Http和TCP的客户端负载均衡工具,基于Netflix Ribbon实现的.它不像服务注册中心.配置中心.API网关那样独立部署,但是它几乎存在于每 ...
- Spring Cloud Alibaba 负载均衡:Ribbon 如何保证微服务的高可用
上一讲我们对 Nacos 的集群环境与实现原理进行了讲解,我们已经可以轻松将单个微服务接入到 Nacos 进行注册,但是微服务本不是孤岛,如何实现有效的服务间稳定通信是本文即将介绍的主要内容,本次我们 ...
最新文章
- ubuntu忘记root密码解决
- 8支团队正在努力构建下一代Ethereum
- linux防火墙 33001端口,Linux操作系统下IPTables配置方法详解
- 响应设置cookie_注册登录 与 Cookie
- 新版仿小刀资源网模板—木鱼cms
- 2018(上)C高级第0次作业
- gis地图和普通地图的区别_GIS之如何添加WMTS地图
- 拓端tecdat|R语言使用最优聚类簇数k-medoids聚类进行客户细分
- 最新BIOS设置中英文对照表
- 洛谷OJ P3865 【模板】ST表
- Minitab 控制图
- 什么是电磁兼容标准?IEC、EN、TC77、CISPR等的区别!
- 精灵图,雪碧图的应用
- tcl android tv系统,TCL to launch motion-controlled Android TV first in China
- 小学计算机表格制作教学,《制作表格》~试讲稿~小学信息技术
- c语言用数字代表字母,使用c语言判断数字字母
- 机器学习——神经网络实验(附全过程代码)
- Gunicorn-使用详解
- linux双击运行jar包,linux下发布JAR包 并运行
- Java 开发环境搭建
热门文章
- ICCV21 - 无监督语义分割《Unsupervised Semantic Segmentation by Contrasting Object Mask Proposals》
- spring 自动装配 bean 有哪些方式?
- 禁用360浏览器自动填充用户数据
- 计算机考数学一英语二的学校,【专硕】初试考数学一的学校统计
- quartz 表结构 mysql_Quartz表结构说明
- python 如何调试uc浏览器_UC浏览器开发者工具
- 斐波那契数列(各种代码实现斐波那契数列)
- Mac上添加自己/公司的网络服务器盘
- OSChina 周四乱弹 —— 开个程序门诊?
- 计算机内部网络连接,在电脑中新建专用网络连接的操作方法【图文教程】