SpringCloud-Netflix学习笔记07——负载均衡及Ribbon
鸡汤:
理论 和 实践 是同样重要的!
因为在你们去面试的时候,需要有谈资!!!
你需要先进去,才能够拥有干活的机会,所以要耐着性子学习!
概述
Ribbon是什么?
Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。
简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将NetFlix的中间层服务连接在一起。Ribbon的客户端组件提供一系列完整的配置项如:连接超时、重试等等。简单的说,就是在配置文件中列出LoadBalancer(简称LB:负载均衡)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法!
Ribbon能干嘛?
LB,即负载均衡(Load Balance),在微服务或分布式集群中经常用的一种应用。
负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用)。
常见的负载均衡软件有 Nginx,Lvs 等等。
Dubbo、SpringCloud中均给我们提供了负载均衡,SpringCloud的负载均衡算法可以自定义。
负载均衡简单分类:
- 集中式LB
- 即在服务的消费方和提供方之间使用独立的LB设施
- 如之前学习的Nginx,由该设施负责把访问请求通过某种策略转发至服务的提供方!
- 进程式LB
- 将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选出一个合适的服务器。
- Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址!
Ribbon的github地址 : https://github.com/NetFlix/ribbon
Ribbon初步配置
在之前 RestTemplate
配置的基础上,加一个注解即可 @LoadBalanced
:
//配置Ribbon负载均衡,将消费者的请求均摊到三个注册中心,一次请求在某一个注册中心拿到服务,通过Ribbon的算法来进行选择
@Bean
@LoadBalanced //Ribbon
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
Ribbon使用
之前通过RestTemplate实现服务提供者和服务消费者之间的通信,把提供者的地址写死,如下:
// 通过地址进行访问
private static final String REST_URL_PREFIX = "http://localhost:8001";
通过Ribbon实现负载均衡,将消费者的请求均摊到三个注册中心,一次请求在某一个注册中心拿到服务,所以地址不能写死,通过Ribbon的算法来进行选择,通过服务名(Application)来访问,如下:
private static final String REST_URL_PREFIX = "http://SPRINGCLOUD-PROVIDER-DEPT";
使用方法同 RestTemplate
,不再说明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)