SpringCloud系列(3)---Netfilx-Ribbon

13 篇文章 0 订阅
5 篇文章 0 订阅

在上一篇笔记当中,已经成功使用了服务注册和发现。但是所有微服务还是处于单点的状态,我们也应该对微服务进行负载均衡,这是相当有必要的。SpringCloud 提供了Ribbon负载均衡器。它可以有助于控制HTTP和TCP客户端的访问行为。为Ribbon配置服务提供者地址后,Ribbon就可以基于负载均衡算法进行负载均衡。Ribbon默认提供了很多种负载均衡算法,轮询、随机等。Ribbon也可以使用自定义的负载均衡算法。

在SpringCloud中,当Ribbon于Eureka 配合使用时,Ribbon可以自动从Eureka Server 获得服务提供者的地址列表,并基于特定的负载均衡算法,请求其中一个服务提供者。


一、整合Ribbon到微服务

如果你的微服务在MAVEN上已经整合了eureka,就不需要添加ribbon的依赖配置了。如果你想单独使用ribbon你可以添加如下的maven依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-ribbon</artifactId>
</dependency>

事实上非常简单,我们只需要在RestTemplate的bean当中,添加@LoadBalanced annotation即可:

@Bean
@LoadBalanced
public RestTemplate restTemplate(){
   return new RestTemplate();
}

然后然后开始测试,我们需要启动超过两个用户服务系统,从而观察会选择哪个节点。笔者已经启动了两个用户服务节点


我们在商品服务系统的测试controller当中,添加如下代码测试是否存在负载均衡:

@Autowired
private LoadBalancerClient loadBalancerClient;

@GetMapping("/testInstance")
public String testInstance() {
    ServiceInstance serviceInstance = this.loadBalancerClient.choose("tony-mall-provider-user");
    String hostAndPort = serviceInstance.getHost() + ":"
            + serviceInstance.getPort() + "[id:"
            + serviceInstance.getServiceId() + "]";
    return hostAndPort;
}
在几次测试当中发现是轮询的(只是估计):

192.168.28.100:8801[id:tony-mall-provider-user]

192.168.28.100:8801[id:tony-mall-provider-user]

在多次调用微服务的接口也是一样,发现每次调用SQL的服务器都是不同的,从而发现已经实现了负载均衡。


二、Ribbon的配置

从Spring Cloud Netfilx 1.2.0开始 已经提供使用配置方式定义Ribbon:

配置前缀为服务名称,如用户服务的名称就为:tony-mall-provider-user

例如:

tony-mall-provider-user.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
事实上笔者目前的参考书上对配置部分讲解还是相对模糊,后续笔者将会继续参考其他书籍和官网文档,将会基础补充这一部分。

Ribbon可以脱离Eureka单独使用,但是这里我就不作演示了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值