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

    在这里插入图片描述

  • 相关阅读:
    java ssm新鲜果汁厂进销存管理系统
    burpsuite安装方法(抓包工具)
    xlua源码分析(三)C#访问lua的映射
    Windows版本Node.js简单安装配置详细教程(小白入门必备)
    Django——模型层补充
    HTML-界面设计字体背景颜色-下拉列表框-margin-top失效-Div换行
    Linux 提权-MySQL UDF
    【解决】修改 UI界面渲染层级 的常见误区
    OpenCV官方教程中文版 —— 直方图的计算,绘制与分析
    什么是 Potatoz NFT 系列?
  • 原文地址:https://blog.csdn.net/qq_49451343/article/details/125403659