Ribbon_负载均衡

一、什么是Ribbon

Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。

二、负载均衡策略

Ribbon的负载均衡规则是一个叫做IRuIe的接口来定义的,每一个子接口都是一种规则:

RandomRule:随机策略

RoundRobinRule:轮询

ZoneAvoidanceRule:默认策略

三、如何修改负载均衡的策略——IRule

上面看到了所有的负载均衡策略都是通过IRule接口实现的所以,第一种方式可以在启动类中重新定义一个IRule注入到Bean中--然后在新的类中的指定我们的新策略(这种方式是全局的一旦配置,全局将使用这种方式)

//例如:默认的负载均衡策略为轮询  我们想要改为随机

//在启动类中重新注入一个新规则

```

@Bean

public IRule randomRule(){

        return new RandomRule();

}

```

第二种方式:通过配置文件去配置负载均衡的规则(可以指定某个服务)

```

#指定某一个服务进行某一种策略    #NFLoadBalancerRuleClassName  类名

#服务名

service1:

    ribbon:

        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #随机策略

```

四、Ribbon 饥饿加载

懒汉饿汉

当我们使用Ribbon进行负载均衡的时候  发现  第一次的请求往往很费时间  是第二次或者后面请求时间的十几二十倍    这是为什么呢?

这是因为 Ribbon默认采用懒加载方式:即第一次访问的时候才去创建LoadBalanceClient,请求时间很长,之后的请求时间就很短

饥饿加载:饥饿加载会在项目启动时创建,降低第一次访问的耗时    配置饥饿加载——在配置文件中配置

```

ribbon:

    eager-load:

        enable: true #开启饥饿加载

        clients: service #指定对某一个服务使用饥饿加载  #service  服务名称

========================================================================

ribbon:

    eager-load:

        enable: true #开启饥饿加载

        clients:

                - service1 #指定对某些服务使用饥饿加载  #service  服务名称

                - service2

                - service3

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容