ribbon 远程调用工具(Spring Cloud)
1 负载均衡
调用微服务时,在集群服务器中,轮询发送请求
@LoadBalanced 注解添加到RestTemplate
修改请求路径,写服务id, rt.getForObject(“http://item-service/{1}”)
底层是RestTemplate
在微服务中是必须有的
2 重试
- MaxAutoretries
单台服务器的重试次数
2) MaxAutoretriesNextServer
向后重试几台服务器
3) Connecttimeout
连接超时时间 ; 会引起重试
4) ReadTimeout
等待接收响应的超时时间 ; 会引起重试
5) OkToRetryOnAllOperations
是否对所有类型请求都重试 ; 默认只对get请求重试
两个超时参数在yml配置中配置无效,需要在代码中配置
3 微服务中必须使用负载均衡么? 微服务中必须使用重试么?重试优缺点是什么?
在微服务架构中,负载均衡是必须使用的技术,通过它来实现系统的高可用、集群扩容等功能。负载均衡可以分为两种:服务端负载均衡和客户端负载均衡。通常所说的负载均衡指服务器负载均衡,
服务器集群时才需要做负载均衡,单台服务器谈不上负载均衡
重试
优点:避免因为网络阻塞导致的连接失败
缺点:可能发生重复的请求操作
微服务中可以不使用负载均衡 缺点:一处爆炸处处爆炸 优点:省钱
微服务中不是必须使用重试 不使用重试优点:速度快 缺点:浪费资源 重试优点:不浪费资源 缺点:浪费时间
负载均衡我觉得是有必要的,因为雨露均沾,不能一家独大。
在微服务架构中,负载均衡是必须使用的技术,通过它来实现系统的高可用、集群扩容等功能.但是此负载均衡不是用nginx实现的服务端的技术,乃是ribbon实现的客户端的技术,将面向服务的 REST 模板请求自动转换成客户端负载均衡的服务调用
负载均衡不一定要用ribbon
4 ribbon 服务消费者
ribbon 提供了负载均衡和重试功能, 它底层是使用 RestTemplate 进行 Rest api 调用
5 ribbon 负载均衡
1) 添加 ribbon 起步依赖(可选)
eureka 依赖中已经包含了 ribbon
2) RestTemplate 设置 @LoadBalanced
@LoadBalanced 负载均衡注解,会对 RestTemplate 实例进行封装,创建动态代理对象,并切入(AOP)负载均衡代码,把请求分发到集群中的服务器
3) 访问路径设置为服务id
4) 访问测试
访问测试,ribbon 会把请求分发到 8001 和 8002 两个服务端口上
http://localhost:3001/item-service/34
6 ribbon 重试
1) pom.xml 添加 spring-retry 依赖
2) application.yml 配置 ribbon 重试
(1) OkToRetryOnAllOperations=true
对连接超时、读取超时都进行重试
(2)MaxAutoRetriesNextServer
更换实例的次数
(3)MaxAutoRetries
当前实例重试次数,尝试失败会更换下一个实例
3) 主程序设置 RestTemplate 的请求工厂的超时属性
4) item-service 的 ItemController 添加延迟代码,以便测试 ribbon 的重试机制
5) 访问,测试 ribbon 重试机制
通过 ribbon 访问 item-service,当超时,ribbon 会重试请求集群中其他服务器
http://localhost:3001/item-service/35
ribbon的重试机制,在 feign 和 zuul 中进一步进行了封装,后续可以使用feign或zuul的重试机制
ribbon 远程调用工具(Spring Cloud)相关推荐
- Ribbon真的会被Spring Cloud Loadbalancer替代吗?
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 11 天,点击查看活动详情 Spring Cloud版本如果Hoxton.M2 RELEASED版本之前的,Nacos Disco ...
- 04.声明式服务调用:Spring Cloud Feign(Greenwich.SR2)
1.Feign是什么 Feign是整合了Ribbon与Hystrix外,还提供了声明式的Web服务客户端定义方式.采用了声明式API接口的风格,将Java Http客户端绑定到它的内部.Feign的首 ...
- Spring Cloud远程服务调用
远程调用流程 Spring Cloud 在接口调用上,大致会经过如下几个组件配合: 1.Nacos 服务注册 2.Feign 服务调用 3.Hystrix 熔断器 4.Ribbon 负载均衡 5.Ht ...
- Ribbon 的替代品 Spring Cloud Loadbalancer 使用与原理分析
目录 一. 使用方法 二. @LoadBalancerClients 与 @LoadBalancerClient 三. 自定义负载均衡 四. 重试机制 五. 原理分析 六. 执行流程分析 系列文章: ...
- 新 Spring Cloud (一) 之 Eureka 服务注册中心
文章目录 一.前言 0. 之前写过两篇Spring Cloud,但是感觉不够具体,所以重新写了一份. 1. SpringCloud 2. 什么是Eureka 3. 原理图 二.基本使用实例 1. 场景 ...
- Spring Cloud介绍
Spring Cloud是什么? Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具. Spring Cloud的首要目标就是通过提供一系列开发组件和框架,帮助开发者迅速 ...
- 【万字长文】Spring Cloud Alibaba 开箱即用!
互联网时代,面对复杂业务,讲究 分而治之.将一个大的单体系统拆分为若干个微服务,保证每个系统的职责单一,可以垂直深度扩展. 但是一个个独立的微服务像一座座孤岛,如何将他们串联起来,才能发挥最大价值. ...
- 【万字长文】创业公司就应该技术选型 Spring Cloud Alibaba , 开箱即用
互联网时代,面对复杂业务,讲究 分而治之.将一个大的单体系统拆分为若干个微服务,保证每个系统的职责单一,可以垂直深度扩展. 但是一个个独立的微服务像一座座孤岛,如何将他们串联起来,才能发挥最大价值. ...
- Spring Cloud Netfilx Ribbon(负载均衡工具)
一.介绍 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.通过Spring Cloud的封装,可以让我们轻松地将面向服务的 ...
最新文章
- sql join 与where的区别
- 多线程下载的原理和基本用法
- boost::mp11::mp_bind_back相关用法的测试程序
- boost::container实现显式实例静态向量测试程序
- 4.QPixmap,QTransform,绘图函数的使用
- javaweb----三层架构+
- 从SQL Server到多数据库,微软数据库迁移全攻略
- 欢乐纪中某A组赛【2019.7.12】
- 【ICCV2019】完整论文列表
- (77)译码器与编码器(八三编码器)
- Jupyter.net:使用Jupyter进行交互式计算的Windows应用程序
- C++之指针探究(十二):指针、下标、数组及其作函数参数
- 【转载】一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- Win10设置热点IP
- 网页设计与制作(HTML+CSS)
- JAVA类加载机制详解
- 如何在Revit中引入WPF界面(通俗易懂)
- 莫言出力、章泽天站台!京东百万豪奖作家背后是文娱野心
- java程序员必看书籍
- layui的exports插件,导出excel时,长数字为科学计数法解决
热门文章
- DCDC电感下方铜箔如何处理
- 汇川触摸屏IT7000E和汇川中小型系列PLC连接及MW寄存器说明
- 怎样把电脑上的歌曲格式转换成MP3格式
- 用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)
- Windows更换壁纸脚本 获取必应壁纸 定时更换壁纸 c#调用.ps1脚本
- 兰州理工大学c语言试题答案,兰州理工大学c语言题库81058118.doc
- 魔众企业VI系统 v3.1.0 全新升级,界面优化
- SAR成像系列:【9】合成孔径雷达(SAR)成像算法-波数域(omega-K)成像算法[也叫距离徙动(RM)算法](附Matlab代码)
- 常见SEO顾问服务内容
- xilinx管脚差分端接_高速串行总线设计基础(八)揭秘SERDES高速面纱之CML电平标准与预加重技术...