欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

大话SpringCloud---Ribbon是什么(理论知识)?

程序员文章站 2024-01-03 20:07:04
最近在跟着尚硅谷周阳老师学习SpringCloud的知识。学习到了Ribbon这一部分,今天就来简单记录一下这个小组件是干嘛的。先看一下官方的结构图(Github官方文档):在一个微服务架构中,服务中心我们以Eureka举例,客户端从EurekaServer拿到服务注册表时,会先缓存到本地。然后通过Ribbon组件决定去调用哪一个具体服务实例。Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端实现负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试...

最近在跟着尚硅谷周阳老师学习SpringCloud的知识。学习到了Ribbon这一部分,今天就来简单记录一下这个小组件是干嘛的。


先看一下官方的结构图(Github官方文档):

大话SpringCloud---Ribbon是什么(理论知识)?

在一个微服务架构中,服务中心我们以Eureka举例,客户端从EurekaServer拿到服务注册表时,会先缓存到本地。然后通过Ribbon组件决定去调用哪一个具体服务实例。

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

举个例,一个客户端要去调用支付模块完成支付,一般大型电商都会有多个支付模块的实例,那我们具体要去调用哪一个实例呢?这里我们客户端从注册中心拿到注册表之后,客户端内的Ribbon会根据一些策略去决定远程调用具体的支付模块实例

可以看到,上面就是我们平时说的负载均衡了。其实Ribbon就是负载均衡+RestTemplate。如果不规定策略的话,默认会使用轮询算法去调用微服务实例。轮询就是交替选取实例调用,就像中学时期值日一样,今天小明值日,明天就小红值日,而后天就到自己了。在程序中表示就是,第一次调用a实例,那下次就调用b实例,交替进行。

除了轮询之外,还有随机、重试、加权等等。顾名思义,看名字就可以知道其中逻辑,这里不做介绍了。

到这里,或许会发现,和之前了解过的nginx挺像的。确实,它们两都可以拿来做负载均衡。那区别是什么呢?

其实是它们的作用范围不一样。nginx是放到服务器上的(EurekaServer),而Ribbon是集成于客户端中。前者也称为集中式负载均衡,后者为进程式负载均衡

  • 集中式负载均衡,是所有的请求先经过一个服务器,由那个服务器决定你要调用哪一个实例,然后返回具体的微服务调用地址给你。拿一个现实中的例子,我们去医院看病,先去门诊部挂号,但是你不知道自己要挂哪一个科室的号,于是你说出了病情,说骨折了。于是在门诊部的医生告诉你要去骨科并且告诉了你骨科怎么走。你得到地址后就去看病了~

  • 进程式负载均衡,这个是集成于客户端上的。就像我们上文介绍的一样了。客户端得到注册表之后,自行根据策略决定调用哪一个服务。承接之前的故事,你已经挂到骨科的号了,但是你发现号上面只写了“骨科”两字,没有写具体的医生。没办法你只能自己去现场看看。到了之后发现有很多骨科医生,有的忙,有的刚刚就诊完。这时没有具体的医生,你决定去找不忙的医生帮你看病。

综上,两者区别为实行负载均衡的对象不同。

今天记录到这里。最近在学习相关的SpringCloud知识,把学习的学习代码慢慢分享到Github仓库中,有兴趣的可以看下哈,会持续更新,过段时间会把周阳老师的脑图放上去。

大话SpringCloud---Ribbon是什么(理论知识)?

仓库地址:https://github.com/here-Leslie-Lau/springcloud_demo

感谢观看✨

本文地址:https://blog.csdn.net/Jokeronee/article/details/107385296

相关标签: SpringCloud ribbon

上一篇:

下一篇: