您的位置 首页 > 德语词汇

ribbon是什么意思?用法、例句(Ribbon)

大家好,感谢邀请,今天来为大家分享一下ribbon是什么意思?用法、例句的问题,以及和Ribbon的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

如果有多个相同的服务注册到Eureka中,服务消费者应该选择哪个服务器就成了一个问题。这里很明显也是一个负载均衡问题,可以使用Ribbon解决或者SpringCloudLoadbalancer来解决。

在SpringCloud中,当Ribbon和Eureka配合使用的时候,Ribbon可从EurekaServer中获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。

ribbon是什么意思?用法、例句(Ribbon)

Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求,即负载均衡是由服务端实现的。即集中式LB,在服务端消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如nginx),由该设施负责把访问请求通过某种策略转发至服务的提供方。

Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到本地JVM中,从而在本地实现RPC远程服务调用技术。即进程内LB,将LB逻辑集成到消费方,消费方从服务服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。

在SpringCloud构建的微服务中,Ribbon作为服务消费者的负载均衡器,有两种使用方式,一种是与RestTemplate相结合,另一种是与Feign相结合。

我们这里讲解Ribbon与RestTemplate相结合方式。

注:springcloud2020.0.1版本之后删除了eureka中的ribbon,替代ribbon的是springcloud自带的LoadBalancer,但公司开发中并没有那么快更新,大部分项目还是在用Ribbon,所以两个我们都讲解一下。

添加一个公共返回类,这样不同服务之间访问,返回的是同样的结果体,restfu章节中讲过,我们直接拿过来用。

?这里我们启动两个SEARCH服务,并注册到Eureka服务器中

?idea中想要启动两个SEARCH服务,需要使用不同的端口,设置如下:

点击Eureka02Application,然后点击上面的复制配置,设置端口

将两个服务放在一组,这样可以启动这个组,就可以启动两个服务

<dependency>\n<groupId>org.springframework.cloud</groupId>\n<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>\n</dependency>\n

?创建一个配置类,将RestTemplate对象的创建放在配置类中

importorg.springframework.cloud.client.loadbalancer.LoadBalanced;\nimportorg.springframework.context.annotation.Bean;\nimportorg.springframework.context.annotation.Configuration;\nimportorg.springframework.web.client.RestTemplate;\n\n@Configuration\npublicclassRemoteClientConfiguration{\n\n@Bean\n@LoadBalanced\npublicRestTemplaterestTemplate(){\nreturnnewRestTemplate();\n}\n\n}\n

修改前面的User服务,通过restTemplate访问SEARCH服务

访问User服务中的方法,该方法中调用Search服务中的方法,第一次访问的是Search8081端口,第二次访问的是Search8082端口,说明负载均衡默认采用的是轮询方法.

Ribbon提供了七种负载均衡策略,默认的负载均衡策略是轮询策略。

轮询选择,轮询index,选择index对应位置的Server;

对选定的负载均衡策略机上重试机制,在一个配置时间段内当选择Server不成功,则一直尝试使用subRule的方式选择一个可用的server;

逐个考察server,如果server断路器打开,则忽略,再选择其中并发链接最低的server

过滤掉一直失败并被标记为circuittripped的server,过滤掉那些高并发链接的server(activeconnections超过配置的阈值)或者使用一个AvailabilityPredicate来包含过滤server的逻辑,其实就就是检查status里记录的各个Server的运行状态;

根据server的响应时间分配权重,响应时间越长,权重越低,被选择到的概率也就越低。响应时间越短,权重越高,被选中的概率越高,这个策略很贴切,综合了各种因素,比如:网络,磁盘,io等,都直接影响响应时间

综合判断server所在区域的性能,和server的可用性,轮询选择server并且判断一个AWSZone的运行性能是否可用,剔除不可用的Zone中的所有server

在配置类中添加一个方法,返回需要的负载均衡策略对象,IRule是接口,RandomRule是随机负载均衡方式

@Bean\npublicIRulemyRule(){\nreturnnewRandomRule();\n}\n

方式2:

前面加服务名表示指定当前服务的负载均衡方式

SEARCH:\nribbon:\n#负载策略调整\nNFLoadBalancerRuleClassName:com.netflix.loadbalancer.RandomRule\n

不加服务名,表示全局

ribbon:\n#负载策略调整\nNFLoadBalancerRuleClassName:com.netflix.loadbalancer.RandomRule\n

lix.loadbalancer.RandomRule

\n不加服务名,表示全局\n\n

ribbon:#负载策略调整NFLoadBalancerRuleClassName:com.netflix.loadbalancer.RandomRule``

好了,文章到这里就结束啦,如果本次分享的ribbon是什么意思?用法、例句和Ribbon问题对您有所帮助,还望关注下本站哦!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023