Ribbon本地负载均衡客户端 VS Nginx服务端负载均衡 以及 远程调用
创始人
2025-05-30 14:22:29

Ribbon本地负载均衡客户端 VS Nginx服务端负载均衡


Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求。即负载均衡是由服务端实现的。
 
Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术。

它们之间的关系像是:

客户端发送某个查询请求,先通过nginx反向代理,nginx采用负载均衡到后台某一指定服务器接口但是该服务器接口业务逻辑的实现依赖于其他服务,因此内部还需要远程调用其他服务。
由因为需要被远程调用的服务也是集群模式,因此需要本地负载均衡。
而ribbon就是本地负载均衡的客户端工具。
Nacos、Eureka这些注册中心内部都内置了Ribbon,因此不需要我们额外引入依赖。
我们可以通过RestTemplate、OpenFeign等工具实现远程调用。
而OpenFeign自带负载均衡配置项,不需要再单独配置。
但是RestTemplate需要加上@LoadBalanced注解来完成远程调用的负载均衡。

 

Nacos中集成了Ribbon,可以实现本地负载均衡。也即是我们RestTemplate进行远程调用某一集群服务的时候,就可以实现轮询。前提是RestTemplate的bean对象必须添加@LoadBalanced注解,赋予RestTemplate负载均衡的能力,负载均衡才可以。

当然了,远程调用,我们除了使用RestTemplate,也可以使用OpenFeign的方式。

举例说明:

被调用的服务:

sms系统,我们模拟两台,都注册到nacos注册中心上去。我们提供了被调用的测试接口为:/test1

 

远程调用服务:

同样需要加入到nacos注册中心,

然后我们通过springmvc提供的RestTemplate进行远程调用刚才sms系统提供的/test接口。

使用restTemplate,我们最好将他创建为单例bean。因为被远程调用的服务是集群,所以必须@LoadBalanced注解。

 测试

我们直接通过访问pps服务的/pps/ok接口,看看是否能调用到sms系统的/test接口

 可以,而且是轮询的在调用。

如果不想使用RestTemplate,也可以使用OpenFeign进行远程调用。

使用OpenFeign,则需要引入相关的依赖

主启动类需要加上@EnableFeignClients注解

 

然后远程调用接口

编写测试方法测试

 

 成功,以上两种方式进行远程调用,都可以实现负载均衡~

当然除了这些,HttpClient也可以实现远程调用,Java自带的HttpUrlConnection也可以。至于它们能否实现对集群的访问,这里就不研究了。

 

 

 


 
 

上一篇:汇编语言-寻址方式

下一篇:AVL树详解

相关内容

热门资讯

荼蘼什么意思 岁月缱绻葳蕤生香... 感谢作者【辰夕】的原创独家授权分享编辑整理:【多肉植物百科】百科君坐标:云南 曲靖春而至,季节流转,...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...