Spring Cloud之 Ribbon负载均衡 与 服务调用

本文深入探讨了Ribbon作为客户端负载均衡器的使用,包括其与RESTTemplate的配合,IRule组件的角色,以及如何自定义负载均衡策略。通过实例展示了如何在Spring Boot应用中替换默认的负载均衡规则,实现随机策略,并通过连续访问观察负载均衡效果。此外,还介绍了Ribbon的负载均衡算法原理。
摘要由CSDN通过智能技术生成

Ribbon 负载均衡 服务调用



概述


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S5HAcdug-1652624665678)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511221025350.png)]

一句话:Riddon就是 负载均衡+RestTemplate调用

Ribbon负载均衡演示


LB(负载均衡)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cJFMzy7t-1652624665681)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511222143538.png)]

集中式LB

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6U9hLXn7-1652624665683)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511222251190.png)]

进程内LB

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n5Ark2cC-1652624665685)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511222455969.png)]

架构说明


总结:Ribbon其实就是一个软负载均衡的客户端软件,可以和其他所需请求的客户端结合使用,和eureka结合只是其中一个实例。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fZe0yEyI-1652624665686)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511223434851.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GvN5ecFP-1652624665688)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511223540898.png)]

POM


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bG4Rrw4n-1652624665690)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511223806150.png)]

RestTemplate的作用


  • getForObject方法/getForEntity方法

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-McFbtXYI-1652624665692)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220512180439886.png)]

  • postForObject/postForEntity

Ribbon核心组件IRule


IRule


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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qxHvV5f7-1652624665693)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220515163447341.png)]

自带的 负载均衡规则 方法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T1vskLs3-1652624665695)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220515163403298.png)]

负载均衡规则的替换


  1. 修改cloud-consumer-order80

  2. 注意配置细节

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LP9aGNFY-1652624665696)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220515164427843.png)]

    @ComponentScan位于SpringBoot主启动类上,所以要跳出主启动类的所在包,另建新包

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PFkvxTtF-1652624665698)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220515164846526.png)]

  3. 新建package

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mJMbdTzR-1652624665699)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220515165221055.png)]

  4. 包下新建 MySelfRule 规则类

    @Configuration
    public class MySelfRule {
    
        @Bean
        public IRule myRule(){
            //定义为随机的负载均衡规则
            return new RandomRule();
        }
    }
    
  5. 著启动类添加@RibbonClient注解

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

    先后启动 Eureka Server7001、7002

    ​ payment8001、8002,ConsumerOrder80

    访问:http://localhost/consumer/pay/get/1

    连续访问,查看端口号的变化,不再是单纯的 轮询方式,证明负载均衡方式随机改变

Ribbon负载均衡算法


原理


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6GU90KBo-1652624665700)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220515181713502.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值