关于openfeign的http和rpc

在这里再次重申一遍什么叫http什么叫rpc

HTTP是基于tcp/ip的通信方式

Socket也是基于tcp/ip的通信方式

RPC也是基于tcp/ip的通信方式

openfeign所谓的rpc调用,只不是过一种设计思想,他并没有实现rpc调用,所以他还是http调用。

当说某个技术类似于RPC调用时,通常意思是该技术在使用方式或实现原理上与RPC调用具有相似之处。这种类似可能包括以下几个方面:

  1. 声明式接口定义:类似RPC调用,该技术也支持通过接口定义来描述远程服务的方法和参数。

  2. 透明远程调用:类似RPC调用,该技术能够将远程服务的调用过程对调用方透明化,使得调用方可以像调用本地方法一样调用远程服务。

  3. 序列化和反序列化:类似RPC调用,该技术也需要将方法调用的参数和返回值进行序列化和反序列化,以在网络上进行传输。

  4. 服务发现和负载均衡:类似RPC调用,该技术也支持服务注册、发现和动态负载均衡的机制,以便调用方能够找到合适的服务实例进行调用。

尽管某个技术可能在上述方面与RPC调用类似,但仍然需要注意它们之间的差异。每种技术都有自己的特点和适用场景,并不是所有类似于RPC调用的技术都能满足RPC在可移植性、效率和语言无关性等方面的要求。因此,在选择和使用技术时,需要根据具体的需求和情况进行评估和选择。

 

OpenFeign是一个声明式的HTTP客户端,主要用于简化服务之间的HTTP通信。它使用了HTTP协议来进行远程调用,而不是RPC(远程过程调用)协议。

RPC是一种远程调用技术,它允许在不同的计算机或进程之间传递消息和调用方法,使得它们能够像本地方法一样相互通信。

而OpenFeign使用的是HTTP协议,它通过HTTP请求和响应进行通信,类似于你在浏览器中发送HTTP请求来获取数据的方式。它更适合用于面向HTTP的微服务架构中,它可以通过注解和接口定义来简化远程服务的调用。

相比之下,Dubbo是一个基于RPC的服务框架,它提供了更底层的通信协议和更高效的序列化方式,用于构建分布式的异构系统。Dubbo主要用于Java语言的服务调用,它提供了服务注册,发现,负载均衡等功能,使得分布式系统的开发更加方便。

总结起来,OpenFeign和RPC都是用于服务之间进行远程调用的技术,但它们使用的通信协议和实现方式有所不同。OpenFeign使用HTTP协议,而RPC使用自己的协议。

 所以同学们不要在feign中插入rpc的思想了,它和rpc没有半毛钱关系

我问:

RPC调用的核心思想,他调用远程服务,就像是在调用本地服务一样。它的效率更高,减少了一些http通信。那是为什么呢?因为他将服务提供方的业务注册进了自己的本地服务中,例如我有一个serverice上面打上了@dubboService注解,那么其他服务调用它的时候,就会将服务内的代码加载到本地,并且序列化好之后形成一个对象实例。当服务提供方挂掉,一般来说他无需实现负载均衡,但是它的服务挂掉会将其他好的节点的能提供次服务的代码,重新实例到本地

GPT答:

RPC(远程过程调用)是一种用于实现分布式系统的通信机制,它的核心思想是使调用远程服务的过程就像调用本地服务一样,从而提高效率并减少通信开销。下面解释一下为什么它能实现这样的效果:

  1. 注册远程服务:RPC框架会将服务提供方的业务注册到本地服务中,这样调用方就可以像调用本地服务一样的方式来调用远程服务。

  2. 代码加载和序列化:当调用方需要调用远程服务时,RPC框架会将服务提供方的代码加载到本地,并将调用参数进行序列化,形成一个对象实例。这样就避免了每次调用都需要通过网络传输代码和数据的开销。

  3. 服务提供方挂掉:当服务提供方出现故障或挂掉时,RPC框架可以实现负载均衡的功能。它可以重新实例化其他可用节点中能提供相同服务的代码到本地,从而保证服务的可用性。

总之,RPC通过将远程服务的代码加载到本地,并进行序列化处理,使得调用远程服务的过程更加高效,并在服务提供方故障时能够自动切换到其他可用节点,提高系统的可靠性和性能。

我问:

以上是我自己的理解,我想问rpc就不需要关注服务提供方的负载均衡对吗,所谓的负载均衡,其实就是为了保证服务的可用性而已

GPT答:

是的,您的理解基本是正确的。

在使用RPC的情况下,调用方不需要直接关注服务提供方的负载均衡,RPC框架会自动处理这个问题。当服务提供方有多个节点时,RPC框架可以通过负载均衡算法将请求分发到不同的节点上,从而实现负载均衡的效果。

负载均衡的目的就是确保服务的可用性和性能。通过将请求均匀地分发到多个节点上,可以避免单一节点成为瓶颈或单点故障,从而提高系统的可靠性和性能。

因此,当使用RPC调用服务时,调用方无需手动实现负载均衡策略,这部分工作由RPC框架来完成。调用方只需要关注调用远程服务的逻辑,而不需要担心服务提供方的具体负载均衡机制。

 所以同学们,别再把feign和rpc混为一谈了好吗,不要再误人子弟了

你可能感兴趣的:(http,rpc,网络)