欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

深入学习Spring Cloud-Ribbon

程序员文章站 2022-07-01 16:32:03
ribbon简介ribbon 是 netflix 发布的开源项目,主要功能是提供客户端的 软件负载均衡算法 ,将 netflix 的中间层服务连接在一起。ribbon 客户端组件提供一系列完善的配置项...

ribbon简介

ribbon 是 netflix 发布的开源项目,主要功能是提供客户端的 软件负载均衡算法 ,将 netflix 的中间层服务连接在一起。ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出load balancer(简称lb)后面所有的机器,ribbon 会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用 ribbon 实现自定义的负载均衡算法。

ribion=负载均衡+重试

深入学习Spring Cloud-Ribbon

ribbon的工作步骤:

第一步先选择 eurekaserver ,它优先选择在同一个区域内负载较少的server。 第二步再根据用户指定的策略,在从server取到的服务注册列表中选择一个地址。 其中ribbon提供了多种策略:比如轮询、随机和根据响应时间加权。

深入学习Spring Cloud-Ribbon

创建spring ribbon项目

第一步:新建spring项目

深入学习Spring Cloud-Ribbon

第二步:添加eureka discovery client,spring web依赖

深入学习Spring Cloud-Ribbon

第三步:添加sp01-commons工具api依赖;eureka-client 中已经包含 ribbon 依赖

第四步:添加yml配置

远程调用resttemplate

resttemplate 是springboot提供的一个rest远程调用工具。

类似于 httpclient,可以发送 http 请求,并处理响应。resttemplate简化了rest api调用,只需要使用它的一个方法,就可以完成请求、响应、json转换

方法:

  • getforobject(url, 转换的类型.class, 提交的参数)
  • postforobject(url, 协议体数据, 转换的类型.class)

resttemplate 和 dubbo 远程调用的区别:

resttemplate:

http调用

效率低

dubbo:

rpc调用,java的序列化

效率高

第一步:创建resttemplate实例

resttemplate 是用来调用其他微服务的工具类,封装了远程调用代码,提供了一组用于远程调用的模板方法,例如: getforobject()postforobject()

第二步:创建ribboncontroller

第三步:启动服务,进行测试

http://localhost:3001/item-service/35

等。。

ribbon负载均衡

深入学习Spring Cloud-Ribbon

第一步:resttemplate设置@loadbalanced

@loadbalanced 负载均衡注解,会对 resttemplate 实例进行封装,创建动态代理对象,并切入(aop)负载均衡代码,把请求分发到集群中的服务器

第二步:访问路径设置为id

第三步:访问测试,ribbon 会把请求分发到 8001 和 8002 两个服务端口上

http://localhost:3001/item-service/34 ribbon重试

深入学习Spring Cloud-Ribbon

第一步:添加spring-retry依赖

第二步:application.yml 配置 ribbon 重试

第三步:设置 resttemplate 的请求工厂的超时属性

第四步:itemcontroller 添加延迟代码

第五步:测试 ribbon 重试机制

通过 ribbon 访问 item-service,当超时,ribbon 会重试请求集群中其他服务器

http://localhost:3001/item-service/35

到此这篇关于深入学习spring cloud-ribbon的文章就介绍到这了,更多相关spring cloud-ribbon内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!