在前面的文章中,我们刚刚学习了什么是Ribbon负载均衡器,以及java零基础小白需要知道的相关基础知识。Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,那么Ribbon实现客户端负载均衡该怎样操作呢,下面我们一起来学习。
Ribbon支持多种负载均衡算法,还支持自定义的负载均衡算法,是一个工具类框架,比较小巧,Spring Cloud对它封装后使用也非常方便,它不像服务注册中心、配置中心、API网关那样需要独立部署,Ribbon只需要在代码直接使用即可,正因为Ribbon的这些特点,所以Ribbon可以实现客户端负载均衡。
在Spring Cloud中,Ribbon主要与RestTemplate对象配合起来使用,Ribboon会自动化配置RestTemplate对象,通过@LoadBalanced开启 RestTemplate对象调用时的负载均衡。
由于Spring Cloud Ribbon的封装, 我们在微服务架构中使用客户端负载均衡调用非常简单,Ribbon实现客户端负载均衡只需要如下两步:
1、启动多个服务提供者实例并注册到一个服务注册中心或是服务注册中心集群。
2、服务消费者通过被@LoadBalanced注解修饰过的RestTemplate来调用服务提供者。
这样,我们就可以实现服务提供者的高可用以及服务消费者的负载均衡调用。
另外需要知道的是,Ribbon的负载均衡策略是由 IRule 接口定义, 接口由如下实现:
对上述图中名词的解释如下:
RandomRule:随机
RoundRobinRule:轮询
AvailabilityFilteringRule:先过滤掉由于多次访问故障的服务,以及并发连接数超过阈值的服务,然后对剩下的服务按照轮询策略进行访问;
WeightedResponseTimeRule:根据平均响应时间计算所有服务的权重,响应时间越快服务权重就越大被选中的概率即越高,如果服务刚启动时统计信息不足,则使用RoundRobinRule策略,待统计信息足够会切换到该WeightedResponseTimeRule策略;
RetryRule:先按照 RoundRobinRule 策略分发,如果分发到的服务不能访问,则在指定时间内进行重试,分发其他可用的服务;
BestAvailableRule:先过滤掉由于多次访问故障的服务,然后选择一个并发量最小的服务;
ZoneAvoidanceRule:综合判断服务节点所在区域的性能和服务节点的可用性,来决定选择哪个服务。
以上的内容就是今天学习的Ribbon实现客户端负载均衡的相关知识,对于有一定基础的java程序员来说是简单的内容,零基础入门不久的新手朋友们还是需要好好学习的,有不清楚的地方可以通过专业书和问朋友以及看java视频教程的方式来解答,最后希望大家都可以掌握Ribbon实现客户端负载均衡操作和相关内容。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习