微服务_Ribbon

微服务

一、负载均衡原理

底层流程:

  1. LoadBalancerInterceptor负载均衡拦截器 拦截客户端发起的http请求(RestTemplate)

  2. LoadBalancerInterceptor 将请求交给 RibbonLoadBalancerClient,

    RibbonLoadBalancerClient 获取url中的服务名称

  3. RibbonLoadBalancerClient 向Eureka-server 拉取服务 ip:port

  4. RibbonLoadBalancerClient 得到服务后 通过 IRule (负载均衡的算法:轮询、随机等)选出一个服务

  5. 通过参数 url (服务) 发起请求

图示:

image-20220314085800268.png

详细负载均衡图示:

image-20220314090646062.png

二、负载均衡策略

图示:

image-20220314094201915.png

要想修改负载均衡的规则有两种方式:

  • 一是注入 IRule 类型的 Bean(全局范围)

  • 二是通过配置文件,对服务提供者 application.yml文件中,添加新的配置

    范围只针对 指定的服务提供者

代码方式:

在配置类中加入 如下代码:

@Bean
public IRule getRule() {
    return new RandomRule();
}

配置文件方式:

在Eureka-server微服务中 对配置文件加如下配置

userservice: 
    ribbon:
        NFLoadBalancerRuleClassName: com.netfix.loadbalancer.RondomRule # 负载均衡规则

三、懒加载

每当我们第一次访问 查询数据时,都会执行一种懒加载的策略,就是有些对象只有执行任务需要时才会创建和初始化,所以执行 效率 相对慢一点

我们可以将懒加载修改为 饥饿加载(就是当服务启动时就进行初始化)

饥饿加载:

针对服务消费者的 配置文件 设置对服务提供者 的服务配置

application.yml

ribbon:
  eager-load:
    enabled: true # 开启饥饿加载
    clients: # 指定饥饿加载服务
      - userservice

你可能感兴趣的:(微服务_Ribbon)