springcloud组件之三:Ribbon(轮询和随机负载)

三、Ribbon实现服务负载均衡

1.Ribbon简介

Ribbon 是一个基于 HTTP 和 TCP 客户端 的负载均衡的工具。

负载均衡
服务端:Nginx
客户端:Ribbon

Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。

详情请参考:https://www.jianshu.com/p/1bd66db5dc46

Ribbon:基于HTTP和TCP,结合Eureka Server 。

2.需添加依赖

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-netflix-eureka-server</artifactId>
            <version>1.3.5.RELEASE</version>
</dependency>
注意:因为项目中已经添加“spring-cloud-starter-eureka-server”依赖,在这里已经包含了Ribbon,所以不用再单独引入

3.ribbon的负载均衡策略


注意:
默认不设置的情况下:轮询选择server

4.测试

4.1 轮询测试:RoundRobinRule
打开server,打开2个provider,2个provider保证名称一致,接口一致(接口的URL和参数一致即可),返回内容不同。

@RestController
public class Userservice {
    @RequestMapping(value = "/login")
    public String login(){
        return "登录成功1(另一个这里改为‘登录成功2’)";
    }
}

consumer不需要做特殊配置。
依次启动server,2个provider,1个consumer。

测试结果:访问consumer的IP+端口+接口URL,刷新,轮流由2个provider提供。注册中心如图示:

4.2 随机测试:RandomRule

只需在consumer中添加配置:

eureka-provider-demo:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule


测试结果:随机性的,比如我的效果是,连续出现了3次provider1,才出现1次provider2。每次测试结果不同。

4.3 其他负载均衡策略均定义在com.netflix.loadbalancer包中,可以根据需要选择合适的策略

内容太多了 我做了模块内容分离,springcloud的5个组件:feign、hystrix、ribbon、zuul、config都有博文分别介绍,如有需要请查看:
springcloud组件之一:feign(client)

springcloud组件之二:hystrix(容错&Hystrix处理容错&Feign项目的监控&Hystrix Dashboard可视化监控&Turbine聚合监控)

springcloud组件之三:Ribbon(轮询和随机负载)

springcloud组件之四:Zuul(zuul网关&网关过滤器)

springcloud组件之五:Config实现分布式配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值