深入学习Spring Cloud-Ribbon
ribbon简介
ribbon 是 netflix 发布的开源项目,主要功能是提供客户端的 软件负载均衡算法 ,将 netflix 的中间层服务连接在一起。ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出load balancer(简称lb)后面所有的机器,ribbon 会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用 ribbon 实现自定义的负载均衡算法。
ribion=负载均衡+重试
ribbon的工作步骤:
第一步先选择 eurekaserver ,它优先选择在同一个区域内负载较少的server。 第二步再根据用户指定的策略,在从server取到的服务注册列表中选择一个地址。 其中ribbon提供了多种策略:比如轮询、随机和根据响应时间加权。
创建spring ribbon项目
第一步:新建spring项目
第二步:添加eureka discovery client,spring web依赖
第三步:添加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负载均衡
第一步:resttemplate设置@loadbalanced
@loadbalanced
负载均衡注解,会对 resttemplate
实例进行封装,创建动态代理对象,并切入(aop)负载均衡代码,把请求分发到集群中的服务器
第二步:访问路径设置为id
第三步:访问测试,ribbon 会把请求分发到 8001 和 8002 两个服务端口上
http://localhost:3001/item-service/34 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内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!