首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Ribbon负载均衡

Ribbon负载均衡

作者头像
收心
发布2022-08-24 16:24:27
发布2022-08-24 16:24:27
5820
举报
文章被收录于专栏:Java实战博客Java实战博客

引入Nacos需要优先排出,如果不接入,请跳过

代码语言:javascript
复制
        <!--nacos服务发现依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.0.1.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>复制

配置文件需要加入关闭Ribbon即可,不然会报错!

代码语言:javascript
复制
spring.cloud.loadbalancer.ribbon.enabled=false复制

引入Eureka-Client会自动引入Ribbon,但是新的3.0,就没有引入,就需要我们手动添加依赖

代码语言:javascript
复制
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>复制

请求进入LoadBalanceInterceptor负载均衡拦截器,

Ribbon实现的负载均衡策略

  1. com.netflix.loadbalancer.RoundRobinRule :以轮询的方式进行负载均衡。
  2. com.netflix.loadbalancer.RandomRule :随机策略
  3. com.netflix.loadbalancer.RetryRule :重试策略。
  4. com.netflix.loadbalancer.WeightedResponseTimeRule :权重策略。会计算每个服务的权重,越高的被调用的可能性越大。
  5. com.netflix.loadbalancer.BestAvailableRule :最佳策略。遍历所有的服务实例,过滤掉故障实例,并返回请求数最小的实例返回。
  6. com.netflix.loadbalancer.AvailabilityFilteringRule :可用过滤策略。过滤掉故障和请

如何定义Ribbon负载均衡的策略

1、自定义IRule Bean使其子类实现是策略对象,比如随机策略

代码语言:javascript
复制
@Bean
public IRule randomRule{
    return new RandomRule();
}复制

原来代码不需要修改,直接使用原来的LoadBalance测试即可

2、修改配置文件,一定在Maven依赖库看到Ribbon才可以(Cloud3.0 Eureka-Client删除了依赖)

代码语言:javascript
复制
Eureka-Client.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule复制

Ribbon 饥饿加载

Ribbon默认是懒加载的,第一次访问时间会变成,开启饥饿加载就可以实现快速访问了,相当于关闭懒加载

代码语言:javascript
复制
ribbon.ReadTimeout=5000
# 饥饿加载,并配置对饥饿加载对服务
ribbon.eager-load.enabled=true
ribbon.eager-load.clients=Eureka-Client复制

特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Ribbon实现的负载均衡策略
  • 如何定义Ribbon负载均衡的策略
  • Ribbon 饥饿加载
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档