Cloud微服务:Ribbon负载均衡

小灰灰 2024-05-05 07:40 206阅读 0赞

在这里插入图片描述

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~

在这里插入图片描述

Ribbon负载均衡

    • 一、Ribbon - 负载均衡原理、流程
    • 二、Ribbon - 负载均衡策略
      • 1.常见的负载均衡规则
      • 2.调整负载均衡规则
        • ①代码方式
        • ②配置文件方式
    • 三、Ribbon - 饥饿加载
    • 四、小结

#

一、Ribbon - 负载均衡原理、流程

  • 服务消费者(order-service)根据服务名称发起请求,请求地址(url):http://userservice/user/1。
  • 请求被负载均衡拦截器:LoadBalancerInterceptor拦截,给到了负载均衡客户端:RibbonLoadBalancerClient
  • 负载均衡客户端:RibbonLoadBalancerClient获取url中的服务名称:userservice并给到动态服务列表负载均衡器:DynamicServiceListLoadBalancer
  • 动态服务列表负载均衡器:DynamicServiceListLoadBalancer从EurekaServer中拉取服务提供者(user-service)的信息列表:localhost:8081、localhost:8082。
  • 动态服务列表负载均衡器:DynamicServiceListLoadBalancer将得到的信息列表给到负载均衡规则器:IRule进行负载均衡算法,选择一个服务信息,重新给到负载均衡客户端:RibbonLoadBalancerClient
  • 负载均衡客户端:RibbonLoadBalancerClient修改请求地址(url):http://userservice/user/1,变为:http://localhost:8081/user/1,进而在浏览器成功访问。

在这里插入图片描述


二、Ribbon - 负载均衡策略

Ribbon的负载均衡策略是一个叫做IRule的接口来定义的,每一个子接口都是一种规则。

在这里插入图片描述

1.常见的负载均衡规则

在这里插入图片描述

2.调整负载均衡规则

①代码方式

在微服务的服务消费者(order-service)中的启动类OrderApplication类内部,定义一个新的IRule

  1. @MapperScan("cn.itcast.order.mapper")
  2. @SpringBootApplication
  3. @EnableFeignClients(clients = UserClient.class,defaultConfiguration = DefaultFeignConfiguration.class)
  4. public class OrderApplication {
  5. public static void main(String[] args) {
  6. SpringApplication.run(OrderApplication.class, args);
  7. }
  8. /**
  9. * 创建RestTemplate并注入Spring容器
  10. */
  11. @Bean
  12. @LoadBalanced//实现负载均衡
  13. public RestTemplate restTemplate() {
  14. return new RestTemplate();
  15. }
  16. //重新定义IRule,达到调整负载均衡规则的效果
  17. @Bean
  18. public IRule randomRule() {
  19. //默认是轮询规则,这里负载均衡策略调整成——随即规则
  20. return new RandomRule();//随机规则
  21. }
  22. }
  • 此方式作用范围是全局的,配置后在此微服务中,无论调用哪一个其他的微服务,使用的都是此处配置的负载均衡规则。
②配置文件方式

这里在微服务的服务消费者(order-service)的配置文件application.yml中,添加新的配置也可以修改负载均衡规则,下述配置信息指定调用服务名称为:userservice的服务时,使用的负载均衡规则。

  1. userservice:
  2. ribbon:
  3. NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则——随机规则
  • 此方式的作用范围仅针对当前微服务,因为配置文件中先指定了服务名称,再指定的负载均衡规则。

三、Ribbon - 饥饿加载

  • Ribbon加载策略
    • 懒加载:默认采用的加载方式,在第一次访问时才会去创建LoadBalanceClient,请求时间会很长。
    • 饥饿加载:在项目启动时就将LoadBalanceClient加载好,降低第一次访问的耗时。

可通过在application.yml配置文件中添加配置相关信息,开启饥饿加载:

  1. ribbon:
  2. eager-load:
  3. enabled: true # 开启饥饿加载
  4. clients:
  5. - userservice # 指定饥饿加载的服务名称,可加载多个

四、小结

在这里插入图片描述


在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,206人围观)

还没有评论,来说两句吧...

相关阅读