合肥做网站域名的公司,网站建设的报告,广州建设工程交易中心电话,集团管理软件一、Ribbon
1.1、概述 Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具#xff0c;是Netflix发布的一款开源项目#xff0c;其主要功能是提供客户端的软件负载均衡算法和服务调用#xff0c;Ribbon客户端组件提供一系列完善的配置项#xff0c;例如#xff1a…一、Ribbon
1.1、概述 Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具是Netflix发布的一款开源项目其主要功能是提供客户端的软件负载均衡算法和服务调用Ribbon客户端组件提供一系列完善的配置项例如连接超时、重试等。简单的说就是在配置文件中列出Load Balancer简称LB后面所有的机器Ribbon会自动的帮助你基于某种规则如简单轮询随机连接等去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法。 1.2、spring-cloud-starter-alibaba-nacos-discovery默认集成了Ribbon 1.3、官网
https://github.com/Netflix/ribbon/wiki/Getting-Started 1.4、Ribbon进入维护模式怎么办 未来的替代方案Spring Cloud LoadBalancer。 1.5、功能
1.5.1、LB LB的全称是Load Balance中文意思为负载均衡简单的说就是将用户的请求平摊的分配到多个服务上从而达到系统的HA高可用常见的负载均衡有软件NginxLVS硬件 F5等。 1.5.2、Ribbon本地负载均衡 vs Nginx服务端负载均衡 Nginx是服务器负载均衡客户端所有请求都会交给Nginx然后由Nginx实现转发请求即负载均衡是由服务端实现的。Ribbon本地负载均衡在调用微服务接口时候会在注册中心上获取注册信息服务列表之后缓存到JVM本地从而在本地实现RPC远程服务调用。 1.5.3、集中式LB 即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件如F5, 也可以是软件如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方 1.5.4、进程内LB 将LB逻辑集成到消费方消费方从服务注册中心获取有哪些地址可用然后自己再从这些地址中选择出一个合适的服务器。Ribbon就属于进程内LB它只是一个类库集成于消费方进程消费方通过它来获取到服务提供方的地址 1.6、 Ribbon工作原理 Ribbon在工作时分成两步 第一步从注册中心查询可用的服务列表 第二步根据用户指定的策略从可用的服务列表中选择一个地址。其中Ribbon提供了多种策略比如轮询、随机和根据响应时间加权。原理图如下 小总结Ribbon其实就是一个软负载均衡的客户端组件它可以和其他所需请求的客户端结合使用和Nacos结合只是其中的一个实例也可以和Eureka结合 1.7、核心组件IRule
1.7.1、概述 根据特定算法中从服务列表中选取一个要访问的服务。 1.7.2、继承结构 1.7.3、组件介绍 1com.netflix.loadbalancer.RoundRobinRule轮询 2com.netflix.loadbalancer.RandomRule随机 3com.netflix.loadbalancer.RetryRule先按照RoundRobinRule的策略获取服务如果获取服务失败则在指定时间内会进行重试获取可用的服务 4com.netflix.loadbalancer.WeightedResponseTimeRule对RoundRobinRule的扩展响应速度越快的实例选择权重越大越容易被选择 5BestAvailableRule会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务然后选择一个并发量最小的服务 6AvailabilityFilteringRule先过滤掉故障实例再选择并发较小的实例 7ZoneAvoidanceRule默认规则,复合判断server所在区域的性能和server的可用性选择服务器 1.7.4、IRule原理 负载均衡算法rest接口第几次请求数 % 服务器集群总数量 实际调用服务器位置下标 每次服务重启动后rest接口计数从1开始。 ListServiceInstance instances discoveryClient.getInstances(CLOUD-PAYMENT-SERVICE); 如 List [0] instances 127.0.0.1:8002 List [1] instances 127.0.0.1:8001 8001 8002 组合成为集群它们共计2台机器集群总数为2 按照轮询算法原理 当总请求数为1时 1 % 2 1 对应下标位置为1 则获得服务地址为127.0.0.1:8001 当总请求数位2时 2 % 2 0 对应下标位置为0 则获得服务地址为127.0.0.1:8002 当总请求数位3时 3 % 2 1 对应下标位置为1 则获得服务地址为127.0.0.1:8001 当总请求数位4时 4 % 2 0 对应下标位置为0 则获得服务地址为127.0.0.1:8002 依次类推...... 1.8、如何使用 1导入依赖 !-- nacos 服务注册发现 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency 2配置Bean MyRandom代码 /*** Author : 一叶浮萍归大海* Date: 2024/1/3 9:00* Description:*/
public class MyRandomRule extends AbstractLoadBalancerRule {Overridepublic Server choose(Object key) {// 获取当前请求的服务实例ILoadBalancer loadBalancer this.getLoadBalancer();ListServer servers loadBalancer.getReachableServers();int index ThreadLocalRandom.current().nextInt(servers.size());return servers.get(index);}Overridepublic void initWithNiwsConfig(IClientConfig iClientConfig) {}} 3主启动类添加注解 /*** Author : 一叶浮萍归大海* Date: 2024/1/3 8:39* Description:*/
RibbonClients(value {RibbonClient(name stock-service-nacos,configuration MyRibbonConfig.class)
})
SpringBootApplication
public class OrderServiceRibbon8001MainApplication {public static void main(String[] args) {SpringApplication.run(OrderServiceRibbon8001MainApplication.class, args);}}
1.9、参考 1Ribbon负载均衡二Ribbon负载均衡策略_ribbon irule接口没有了-CSDN博客 2spring cloud 2020.0.1 LoadBalancer负载均衡算法切换-CSDN博客