• 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饥饿加载

    在这里插入图片描述

  • 相关阅读:
    蓝桥杯练习题——多路并归
    arm day 9
    【开发环境简称】PRD生产环境-常见环境英文缩写简称
    flink1.18.0 sql-client报错
    前端的一些知识点(会持续更新)
    机器学习笔记之高斯过程(二)高斯过程回归——权重空间角度
    CMake中foreach的使用
    Mybatis框架_涉及技术与拓展
    【前端知识之webpack】Webpack的理解以及构建流程
    添加阈值滞后以实现平滑的欠压/过压锁定
  • 原文地址:https://blog.csdn.net/qq_49451343/article/details/125403659