1 负载均衡

调用微服务时,在集群服务器中,轮询发送请求

@LoadBalanced 注解添加到RestTemplate

修改请求路径,写服务id, rt.getForObject(“http://item-service/{1}”)
底层是RestTemplate
在微服务中是必须有的

2 重试

  1. 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)相关推荐

  1. Ribbon真的会被Spring Cloud Loadbalancer替代吗?

    开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 11 天,点击查看活动详情 Spring Cloud版本如果Hoxton.M2 RELEASED版本之前的,Nacos Disco ...

  2. 04.声明式服务调用:Spring Cloud Feign(Greenwich.SR2)

    1.Feign是什么 Feign是整合了Ribbon与Hystrix外,还提供了声明式的Web服务客户端定义方式.采用了声明式API接口的风格,将Java Http客户端绑定到它的内部.Feign的首 ...

  3. Spring Cloud远程服务调用

    远程调用流程 Spring Cloud 在接口调用上,大致会经过如下几个组件配合: 1.Nacos 服务注册 2.Feign 服务调用 3.Hystrix 熔断器 4.Ribbon 负载均衡 5.Ht ...

  4. Ribbon 的替代品 Spring Cloud Loadbalancer 使用与原理分析

    目录 一. 使用方法 二. @LoadBalancerClients 与 @LoadBalancerClient 三. 自定义负载均衡 四. 重试机制 五. 原理分析 六. 执行流程分析 系列文章: ...

  5. 新 Spring Cloud (一) 之 Eureka 服务注册中心

    文章目录 一.前言 0. 之前写过两篇Spring Cloud,但是感觉不够具体,所以重新写了一份. 1. SpringCloud 2. 什么是Eureka 3. 原理图 二.基本使用实例 1. 场景 ...

  6. Spring Cloud介绍

    Spring Cloud是什么? Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具. Spring Cloud的首要目标就是通过提供一系列开发组件和框架,帮助开发者迅速 ...

  7. 【万字长文】Spring Cloud Alibaba 开箱即用!

    互联网时代,面对复杂业务,讲究 分而治之.将一个大的单体系统拆分为若干个微服务,保证每个系统的职责单一,可以垂直深度扩展. 但是一个个独立的微服务像一座座孤岛,如何将他们串联起来,才能发挥最大价值. ...

  8. 【万字长文】创业公司就应该技术选型 Spring Cloud Alibaba , 开箱即用

    互联网时代,面对复杂业务,讲究 分而治之.将一个大的单体系统拆分为若干个微服务,保证每个系统的职责单一,可以垂直深度扩展. 但是一个个独立的微服务像一座座孤岛,如何将他们串联起来,才能发挥最大价值. ...

  9. Spring Cloud Netfilx Ribbon(负载均衡工具)

    一.介绍 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现.通过Spring Cloud的封装,可以让我们轻松地将面向服务的 ...

最新文章

  1. sql join 与where的区别
  2. 多线程下载的原理和基本用法
  3. boost::mp11::mp_bind_back相关用法的测试程序
  4. boost::container实现显式实例静态向量测试程序
  5. 4.QPixmap,QTransform,绘图函数的使用
  6. javaweb----三层架构+
  7. 从SQL Server到多数据库,微软数据库迁移全攻略
  8. 欢乐纪中某A组赛【2019.7.12】
  9. 【ICCV2019】完整论文列表
  10. (77)译码器与编码器(八三编码器)
  11. Jupyter.net:使用Jupyter进行交互式计算的Windows应用程序
  12. C++之指针探究(十二):指针、下标、数组及其作函数参数
  13. 【转载】一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
  14. Win10设置热点IP
  15. 网页设计与制作(HTML+CSS)
  16. JAVA类加载机制详解
  17. 如何在Revit中引入WPF界面(通俗易懂)
  18. 莫言出力、章泽天站台!京东百万豪奖作家背后是文娱野心
  19. java程序员必看书籍
  20. layui的exports插件,导出excel时,长数字为科学计数法解决

热门文章

  1. DCDC电感下方铜箔如何处理
  2. 汇川触摸屏IT7000E和汇川中小型系列PLC连接及MW寄存器说明
  3. 怎样把电脑上的歌曲格式转换成MP3格式
  4. 用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)
  5. Windows更换壁纸脚本 获取必应壁纸 定时更换壁纸 c#调用.ps1脚本
  6. 兰州理工大学c语言试题答案,兰州理工大学c语言题库81058118.doc
  7. 魔众企业VI系统 v3.1.0 全新升级,界面优化
  8. SAR成像系列:【9】合成孔径雷达(SAR)成像算法-波数域(omega-K)成像算法[也叫距离徙动(RM)算法](附Matlab代码)
  9. 常见SEO顾问服务内容
  10. xilinx管脚差分端接_高速串行总线设计基础(八)揭秘SERDES高速面纱之CML电平标准与预加重技术...