Loading... <div class="tip share">请注意,本文编写于 303 天前,最后修改于 148 天前,其中某些信息可能已经过时。</div> ## 必须了解 Spring Cloud Ribbon 是 Netflix Ribbon 实现的一套**客户端 负载均衡工具** 简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能是提供 **客户端的复杂就哼算法和服务调用。** Ribbon 客户端组件提供一系列完善的配置项如超时、重试等。简单的说,就是配置文件中列出 load Balancer (简称 LB)后面所有的机器,Ribbon 会自动的帮助你基于某种规则(如简单轮询,随机链接等)去链接这些机器。我们很容易使用 Ribbon 自定义的负载均衡算法。 官方GitHub:https://github.com/Netflix/ribbon **目前已停止维护,但仍然很多公司在用。替代方案 ——Spring Cloud Loadbalancer** ## 负载均衡 **LB 负载均衡(Load Balance)** 简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用) Ribbon 本地负载均衡客户端 VS Nginx 服务端负载均衡区别 Nginx 是服务器负载均衡,客户端所有请求都会交给nginx, 然后 nginx 实现转发请求。即负载均衡是由服务端实现的。 Ribbon 本地负载均衡,在调用微服务接口的时候,会在注册中心上获取注册信息服务列表后缓存到JVM 本地,从而在本地实现RPC远程 服务调用技术。 ### 集中式 即在服务的消费方和提供方之间使用独立的LB 设施(可以是硬件,如F5, 也可以是软件如 Nginx ), 由该设置负责把访问请求通过某种策略转发至服务的提供方 ### 进程内 将 LB 逻辑集成到消费方,消费方从服务注册中心获取有哪些地址可用,然后自己再从这些地址中选择一个适合的服务器。Ribbon 就属于进程内 LB,它只是一个类库,集成于消费方进程,消费方通过它阿莱获取服务提供方的地址。 --- ## 使用介绍 总结:Ribbon 其实就是一个软负载均衡的客户端组件,他可以和其他所需请求的客户端结合使用,和eureka结合只是其中的一个实例。 Ribbon 在工作时分为两步: 第一步先选择 EurekaServer, 它优先选择在同一个区域呢负载较少的Server 第二步在根据用户执行的策略,在从server 取到的服务注册列表中选择一个地址。 其中 Ribbon 提供了多种策略:比如**轮询、随机和更具响应时间加权。** **在 spring-cloud-starter-netflix-eureka-client 中自带了 spring-cloud-starter-ribbon** 负载均衡默认轮询的方式,实际上就是Ribbon + RestTemplate 在配置RestTemplate Bean时我们也使用了@LoadBalanced注解,这就是开启了负载均衡。 关于[RestTemplate](https://blog.csdn.net/itguangit/article/details/78825505) **使用方法:注入bean即可。** 建议:写一个`@Configuration`配置类 ```java @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); } ```<hr class="content-copyright" style="margin-top:50px" /><blockquote class="content-copyright" style="font-style:normal"><p class="content-copyright">版权属于:乐心湖's Blog</p><p class="content-copyright">本文链接:<a class="content-copyright" href="https://www.xn2001.com/archives/460.html">https://www.xn2001.com/archives/460.html</a></p><p class="content-copyright">声明:博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh" target="_blank" rel="nofollow noopener noopener" one-link-mark="yes">CC BY-SA 4.0 协议</a> ,转载请注明出处!</p></blockquote> 腾讯云社区邀请各位技术博主加入,福利多多噢! Last modification:October 9th, 2020 at 09:29 am © 允许规范转载 Support 如果觉得我的文章对你有用,请随意赞赏 ×Close Appreciate the author Sweeping payments Pay by AliPay Pay by WeChat