一、Ribbon中的负载均衡策略
1、Ribbon中支持的负载均衡策略
AvailabilityFilteringRule:过滤掉那些因为一直连接失败的被标记为circuit tripped的后端server,并过滤掉那些高并发的的后端server(active connections 超过配置的阈值) | 使用一个AvailabilityPredicate来包含过滤server的逻辑,其实就就是检查status里记录的各个server的运行状态
RandomRule:随机选择一个server
BestAvailabl:选择一个最小的并发请求的server,逐个考察Server,如果Server被tripped了,则忽略
RoundRobinRule:roundRobin方式轮询选择, 轮询index,选择index对应位置的server
WeightedResponseTimeRule:根据响应时间分配一个weight(权重),响应时间越长,weight越小,被选中的可能性越低
RetryRule:对选定的负载均衡策略机上重试机制,在一个配置时间段内当选择server不成功,则一直尝试使用subRule的方式选择一个可用的server
ZoneAvoidanceRule:复合判断server所在区域的性能和server的可用性选择server
ResponseTimeWeightedRule:作用同WeightedResponseTimeRule,二者作用是一样的,ResponseTimeWeightedRule后来改名为WeightedResponseTimeRule
二、验证
1、自定义负载均衡策略
-
# 自定义负载均衡策略 springboot-h2.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule // 自定义使用随机策略,springboot-h2是服务应用名
2、修改调用代码
package com.chhliu.springboot.restful.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import com.chhliu.springboot.restful.vo.User; @RestController public class RestTemplateController { @Autowired private RestTemplate restTemplate; @Autowired private LoadBalancerClient loadBalancerClient; @GetMapping("/template/{id}") public User findById(@PathVariable Long id) { ServiceInstance serviceInstance = this.loadBalancerClient.choose("springboot-h2"); System.out.println("===" + ":" + serviceInstance.getServiceId() + ":" + serviceInstance.getHost() + ":" + serviceInstance.getPort());// 打印当前调用服务的信息 User u = this.restTemplate.getForObject("http://springboot-h2/user/" + id, User.class); System.out.println(u); return u; } }
3、测试
服务调用关系如下:
http://www.cnblogs.com/ilinuxer/p/6582784.html
相关推荐
主要介绍了SpringCloud 服务负载均衡和调用 Ribbon、OpenFeign的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
可以再学习的过程中参考一下,官网的教程是真的需要好好琢磨的,这个可以作为辅助参考,demo采用的版本均为最新版本:springcloud2.0-Finchley.SR1版本,大神提醒我一句学习springcloud不要想的太复杂,约定由于配置...
springcloud+eureka+ribbon多服务负载均衡 springcloud+eureka+ribbon多服务负载均衡
spring cloud gateway的负载均衡和动态路由的实现 demo_01,demo_02,demo_03 这三个服务相当于是集群的微服务 gateway这个服务是 springcloude gateway + ribbon 做的负载均衡 gateway_01 这个服务 是动态路由的...
springcloud-ribbon负载均衡demo,请参考文章https://blog.csdn.net/zhizhuodewo6/article/details/81905865
SpringCloud使用Ribbon实现负载均衡https://blog.csdn.net/u012081441/article/details/80761830
ribbon,客户端负载均衡 feign, hystrix,熔断 turbine Spring Cloud Starters 同一个服务中的多数据库支持(AOP) 全链路traceId追踪 velocity 前端模板 mybatis, pageHelper (分页), druid (连接池) redis(序列...
springcloud入门代码基于Spring Cloud实现的Ribbon客户端负载均衡模板代码
SpringCloud之三 负载均衡ribbon,使用ribbon进行负载均衡处理
SpringCloud-Ribbon负载均衡服务调用及手写Ribbon算法
34.尚硅谷_SpringCloud_自定义Ribbo的负载均衡策略(上) 35.尚硅谷_SpringCloud_自定义Ribbo的负载均衡策略(下) 36.尚硅谷_SpringCloud_Feign是什么 37.尚硅谷_SpringCloud_Feign工程构建 38.尚硅谷_SpringCloud_...
(三 Ribbon 什么是负载均衡?spring cloud如何实现负载均衡)手摸手带你一起搭建 Spring cloud 微服务 理论+实践+解析 配套例程资源
Ribbon负载均衡服务调用 OpenFeign服务接口调用 Hystrix断路器 zuul路由网关 Gateway新一代网关 SpringCloud Config 分布式配置中心 SpringCloud Bus 消息总线 SpringCloud Stream 消息驱动 SpringCloud ...
34.硅谷学习_SpringCloud_自定义Ribbo的负载均衡策略(上) 35.硅谷学习_SpringCloud_自定义Ribbo的负载均衡策略(下) 36.硅谷学习_SpringCloud_Feign是什么 37.硅谷学习_SpringCloud_Feign工程构建 38.硅谷学习_...
它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有...
能跑通的springcloud项目,已经整合eureka,ribbon,熔断器,zuul,下下源码启动eureka,再启动消费程序即可。适合初步学习
主要介绍了Spring Cloud Ribbon负载均衡器处理方法,看看是如何获取服务实例,获取以后做了哪些处理,处理后又是如何选取服务实例的,需要的朋友可以参考下
理解Ribbon对于我们使用Spring Cloud来讲非常的重要,因为负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一。在上节的例子中,我们采用了声明式的方式来实现负载均衡。实际上,内部调用维护了...
SpringCloud实践系列(Nacos注册中心+Ribbon负载均衡+OpenFeign服务调+Nacos配置中心+Sentinel流控)
Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一。Ribbon客户端...