问个概念问题,服务之间 feign 调用 算不算 rpc

2023-02-19 11:25:59 +08:00
 hsymlg
https://en.wikipedia.org/wiki/Remote_procedure_call
4533 次点击
所在节点    程序员
29 条回复
echoless
2023-02-19 11:27:57 +08:00
gRPC
hsymlg
2023-02-19 11:33:19 +08:00
@wuhaoecho 因为 gRPC 是 rpc 框架,所以 feign 也是?
Red998
2023-02-19 11:35:45 +08:00
算 rpc 是一个概念、http 也算是一种 rpc
jorneyr
2023-02-19 11:39:31 +08:00
不算
chanchan
2023-02-19 12:47:43 +08:00
我觉得 rpc 就不应该有这么多讨论,一个程序通过网络调用另一个程序得到结果,就叫 rpc
tt67wq
2023-02-19 13:05:09 +08:00
不叫 rpc 叫啥?
OldCarMan
2023-02-19 13:56:27 +08:00
rpc 只是个概念,feign,grpc,thrift 等你可以理解都是 RPC 的一个个实例,只是他们所支持的序列化方式 /通信协议,特性或功能,想达成的目的等可能不一样而已。
hsymlg
2023-02-19 14:12:48 +08:00
@OldCarMan https://zh.wikipedia.org/wiki/%E9%81%A0%E7%A8%8B%E9%81%8E%E7%A8%8B%E8%AA%BF%E7%94%A8
这是 wiki 的中文版,上来第一句话就是 rpc 是个计算机通信协议,我 google 半天也不知道协议内容在哪里。如果只是字面意思的概念的话,那服务之间 feign 调用确实算得上 remote procedure call
OldCarMan
2023-02-19 14:29:18 +08:00
zachlhb
2023-02-19 15:27:43 +08:00
Feign 是一种用于创建基于 HTTP 的客户端的框架,通常用于通过 REST API 进行服务之间的调用。虽然它使用了网络协议,但它不是 RPC ( Remote Procedure Call ,远程过程调用)。

RPC 是一种协议,它允许在不同进程或网络中的计算机之间进行远程调用。它的目的是使分布式系统中的应用程序能够像本地调用一样访问服务。RPC 通常使用编码的二进制协议进行通信,而 Feign 则使用基于 HTTP 的 REST API 进行通信。

因此,虽然 Feign 可以用于服务之间的调用,但它不是 RPC 。
hsymlg
2023-02-19 15:38:15 +08:00
@zachlhb “Feign 则使用基于 HTTP 的 REST API 进行通信”,基于 HTTP 的 REST API 进行通信是 Feign 不属于 rpc 的原因?
Ericcccccccc
2023-02-19 16:00:14 +08:00
经典问题, http 是不是 rpc?
rrfeng
2023-02-19 16:01:25 +08:00
http 和 rpc 不在一个维度。
ql562482472
2023-02-19 16:24:11 +08:00
alexleee
2023-02-19 20:19:59 +08:00
认为 http 不算 rpc 的朋友可以陈述下观点吗,谢谢了
lrvinye
2023-02-19 21:41:25 +08:00
举个例子来类比下:
http: 普通人都听得懂的官方语言(普通话、英语)
rpc:行业内(圈子内)约定黑话(方言、气象报文...)
cnxobo
2023-02-19 21:41:44 +08:00
Feign 调用属于远程过程调用(RPC)的一种。RPC 是指通过网络实现不同进程或不同机器之间相互调用的过程,包括远程调用、远程方法调用、远程过程调用等。在微服务架构中,服务之间通过 RPC 进行通信是非常常见的做法,而 Feign 就是一种优雅的 RPC 调用方式,它允许开发人员使用简单的接口描述来定义服务之间的调用,隐藏了底层的通信细节,方便开发人员进行调用和维护。因此,可以说服务之间的 Feign 调用是 RPC 的一种实现方式。
lambdaq
2023-02-19 21:49:15 +08:00
如果拿来调用得到返回,那么就是 rpc 。比如拿来传输文件,那么就不是 rpc 。
hidemyself
2023-02-19 22:03:50 +08:00
算啊,fegin 算 rpc 的一种实现
mercurius
2023-02-19 22:04:58 +08:00
Feign 底层实际上是 HTTP 请求的封装实现
RPC 本质上不算是协议,而是一种调用方式,并且 HTTP 协议只是 RPC 的一种实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/917312

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX