• 4、Ribbon负载均衡


    Ribbon负载均衡

    在这里插入图片描述
    通过上图可以看到,orderService向userService发起请求经过了一下流程:

    1、orderService向userService发起请求;
    2、LoadBalancerInterceptor会拦截该请求,等到请求中的服务名称userService,并将服务名称交给RibbonLoadBalancerClient;
    3、RibbonLoadBalancerClient再将服务名称交给DynamicServerListLoadBalancer;
    4、DynamicServerListLoadBalancer向Eureka服务中心请求服务列表(服务发现)
    5、DynamicServerListLoadBalancer再通过IRule采用负载均衡策略,选择合适的服务地址,将挑选出来的服务地址返回给RibbonLoadBalancerClient;(负载均衡)
    6、RibbonLoadBalancerClient获取到服务地址后,修改原有的url,将地址信息(ip:port)替换服务名称(userService),发起请求进行服务调用。

    定义负载均衡策略

    对于负载均衡策略的定义有两种方式:

    • 全局模式
    • 指定服务模式
    全局模式

    首先我们来介绍全局模式:全局模式的含义,就是指对任何服务的调用均采用该策略,我们只需要在启动类注册一个IRule类型的Bean即可。例如我们采用随机策略:

    @MapperScan("cn.itcast.order.mapper")
    @SpringBootApplication
    public class OrderApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(OrderApplication.class, args);
        }
    
        /**
         * 创建RestTemplate并注入Spring容器
         */
        @Bean
        @LoadBalanced //采用负载均衡策略
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    
        /**
         * 定义负载均衡随机策略
         * @return
         */
        @Bean
        public IRule randomRule(){
            return new RandomRule();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    这样,对于OrderApplication下的任何服务的调用,都会采用随机策略。

    指定服务模式

    调用方的application.yml 文件中,对具体的服务进行负载均衡的配置即可:

    userservice:
      ribbon:
        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule  # 负载均衡规则
    
    • 1
    • 2
    • 3

    如上所示,我们完成了对userService的负载均衡策略的配置。

    Ribbon饥饿加载

    在这里插入图片描述

  • 相关阅读:
    选择最适合你的图像分类模型
    HTML5期末考核大作业 基于HTML+CSS+JavaScript沪上美食(9页)
    软件需求分析——需求工程过程
    浏览器中输入网址到看到网页内容经历了哪些过程
    关于CSS 选择器的常见用法
    作为高级架构师,你居然看不透大型网站技术架构的核心问题?
    Etcd教程 — Etcd单机版安装
    C#使用PPT组件的CreateVideo方法生成视频
    vue上传文件到阿里云oss方法 结合element-ui 中的 el-upload
    嵌入式学习 - 用电控制电
  • 原文地址:https://blog.csdn.net/qq_49451343/article/details/125403659