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树详解

相关内容

热门资讯

应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...