SpringCloud03_Ribbon的概述、核心组件IRule、负载均衡算法底层原理、手写Ribbon轮询算法(二)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: ③. Ribbon核心组件IRule

③. Ribbon核心组件IRule



  • ①. IRule:根据特定算法从服务列表中选取一个要访问的服务


  com.netflix.loadbalancer.RoundRobinRule(轮询)
  com.netflix.loadbalancer.RandomRule(随机)
  com.netflix.loadbalancer.RetryRule(先按照RoundRobinRule的策略
获取服务;如果获取服务失败则在指定时间内会进行重试)
    WeightedResponseTimeRule(对RoundRobinRule的扩展,响应速度越快的实例选择权重越大,越容易被选择)
    BestAvailableRule(会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务)
    AvailabilityFilteringRule(先过滤掉故障实例,再选择并发较小的实例)
    ZoneAvoidanceRule(默认规则,复合判断server所在区域的性能和server的可用性选择服务器)


微信图片_20220108170137.png


②. 修改cloud-consumer-order80


官方文档明确给出了警告:


这个自定义配置类不能放在@ComponentScan所扫描的当前包下以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,达不到特殊化定制的目的了


微信图片_20220108170158.png


③. 新建package(com.atguigu.myrule)


一定要注意这里的@LoadBalanced一定不能注释掉


如果注释了会报如下错误


微信图片_20220108170219.png


@Configuration
public class ApplicationContextConfig{
  @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
       return new RestTemplate();   
    }
}
package com.atguigu.myrule;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MySelfRule {
    @Bean
    public IRule getRule(){
       return new RandomRule();
    }
}


④. 主启动类添加@RibbonClient


@SpringBootApplication
@EnableEurekaClient
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration = MySelfRule.class)
public class OrderMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderMain80.class,args);
    }
}


⑤. 测试:http://localhost/consumer/payment/get/31

我们可以看到会按照我们预期的效果随机的方式进行

相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
10天前
|
缓存 负载均衡 算法
springcloud-Eureka组件
springcloud-Eureka组件
|
24天前
|
负载均衡 前端开发 Java
OpenFeign:Spring Cloud声明式服务调用组件
该文本是关于OpenFeign在Spring Cloud中的使用的问答总结。涉及的问题包括:OpenFeign是什么,Feign与OpenFeign的区别,如何使用OpenFeign进行远程服务调用,OpenFeign的超时控制以及日志增强。OpenFeign被描述为Spring官方的声明式服务调用和负载均衡组件,它支持使用注解进行接口定义和服务调用,如@FeignClient和@EnableFeignClients。OpenFeign与Feign的主要区别在于OpenFeign支持Spring MVC注解。超时控制通过Ribbon进行设置,默认超时时间为1秒。
|
1月前
|
弹性计算 负载均衡 算法
轮询算法介绍
轮询算法介绍
29 4
|
7天前
|
机器学习/深度学习 人工智能 算法
计算机算法基础概述与常用算法解析
计算机算法基础概述与常用算法解析
|
1月前
|
弹性计算 负载均衡 算法
加权轮询算法介绍
加权轮询算法
35 3
|
1月前
|
存储 算法 Java
图像分析之连通组件标记算法
图像分析之连通组件标记算法
433 1
|
9天前
|
存储 算法 安全
加密算法概述:分类与常见算法
加密算法概述:分类与常见算法
|
11天前
|
负载均衡 算法 Nacos
SpringCloud之LoadBalancer自定义负载均衡算法,基于nacos权重
ReactorLoadBalancer接口,实现自定义负载算法需要实现该接口,并实现choose逻辑,选取对应的节点。
23 0
|
16天前
|
负载均衡 算法 调度
负载均衡算法概述
负载均衡算法概述
|
23天前
|
算法
计算机算法设计与分析 第1章 算法概述 (笔记)
计算机算法设计与分析 第1章 算法概述 (笔记)