springcloud之使用ribbon进行客户端负载均衡

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

相信很多大兄弟可以能都听说过或者用过负载均衡,比如我们的nginx软负载,f5硬件负载(土豪才用的起的)等等。

但是细心的同学可以能会注意到,ribbon用来做客户端负债均衡,那么想必也听过服务端负载均衡,那么什么叫客户端负载均衡,什么叫服务端负载均衡呢?下面我们先来说下:
在这里插入图片描述
如上图,就是一个简单的服务端负载均衡的图例,比如我们有一个server集群,现在我们的client需要访问我们的server,他会先将请求发送给我们的nginx,然后通过这个代理服务器通过算法(轮询,随机,权重等等…)反向代理来实现一个服务端的负载均衡。
在这里插入图片描述
如上图便是一个客户端负载均衡的简单模型,比如我们现在客户端需要调用我们的user,然后user中需要调用我们的呃order,现在我们的eureka(不知道什么叫eureka的可以看看我的另一篇博客:https://blog.csdn.net/baomw/article/details/86620457)中注册了两个order和一个user,当然我们的user一次肯定只能调用一个order,那么怎么调用呢,那么便是我们的客户端负载均衡了,这么理解吧: 客户端的负载均衡则是一个请求在客户端的时候已经声明了要调用哪个服务,然后通过具体的负载均衡算法来完成负载均衡

既然说ribbon,那么我们的项目中具体要这么使用ribbon呢,当然对于一个技术,在我们需要使用的时候我们首先肯定想到的是:引入maven依赖。但是,eureka已经把ribbon集成到他的依赖里面去了,所以这里不需要再引用ribbon的依赖,如图:
在这里插入图片描述
要使用ribbon,只需要一个注解:
在这里插入图片描述
在这里插入图片描述
调用端代码如下,我们直接通过服务名调用即可,下面我们便可以将服务启动
在这里插入图片描述
首先将我们的环境搭起来,可以看到我们的order和user都注册进去了,如下图,可以看到,同一个地址访问,一次是返回9058,一次返回9068,可见调用的是不同的服务。有兴趣的大兄弟可以自己试一下。
在这里插入图片描述
在这里插入图片描述
这里可能有点抽象,需要你们自己去写才能体会到,但是我们已经完成了负载均衡, 他默认的负载均衡是轮询策略,也就是一人一次。那么ribbon具体有哪些负载均衡策略呢?
其实在ribbon中,所有负载均衡的实现都是基于一个接口:IRule,也就是我们负载均衡的核心组件。那么负载在ribbon中具体有哪些实现呢?可以看下图:
在这里插入图片描述
当然,我们也可以实现我们自己的负载均衡策略?至于具体怎么实现,我会单独写一篇来做详细介绍,今天关于ribbon的一些基本的东西就先介绍到这了。

有兴趣的东西还是自己去动手实践一下,有的东西,再简单,你不去做一遍,你还是始终都不会,再难的东西,做的多了,也就熟能生巧了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值