请教一下 RPC 框架,搜了一些资料,还是模模糊糊的

2015-08-28 10:59:36 +08:00
 li24361

我的理解,就是不同系统之间的通信,调用方法,需要把内容转成字节流传过去,对方收到解析,然后处理,在转成字节回来

原来只是了解 webservice 和 rest

现在学习 rpc ,谁能用通俗的语言解释下,知乎上那个没看懂啊

2501 次点击
所在节点    程序员
7 条回复
andy12530
2015-08-28 11:00:22 +08:00
JSON_RPC
exch4nge
2015-08-28 13:13:49 +08:00
我说说我的理解吧。

就按字面意思理解, Remote Procedure Call ,就是说你可以 call 远端的代码。

实现方式就是你说的,把你想调用的方法参数通过某种手段变成一段二进制数据,然后通过某种通道传到远端机器上,远端机器解析出来之后,调用相应的处理函数。

能实现 RPC 的框架有很多,微软自己的 Windows RPC ;跨平台跨语言的 thrift 、 google grpc ;等等
-----------------------------------------------------------------------------------------------------------------------------
具体说的话,一般 RPC 框架依赖两个功能,一个是底层的通信方法或协议,如 HTTP , TCP 协议,或者是其它类似你说的 web service ;另一个是数据的序列化 /反序列化,但是有时候前面那个通信方法就规定好了数据是什么格式。

RPC 框架通过这两个功能,把客户端想要调用的服务端的方法与参数封装成数据,再通过底层通信方法传输,服务端解封数据包,并调用相应接口,而达到了 RPC 的目的。
-----------------------------------------------------------------------------------------------------------------------------
Rest 算是一种架构风格?或者 HTTP API 风格?
slixurd
2015-08-28 14:04:45 +08:00
RPC 还有 RabbitMQ 的 RPC 调用和 Redis 的 RPC
不过 Thrift 还是相对比较好的,毕竟使用起来简单,直接填坑就好了。
li24361
2015-08-28 15:55:02 +08:00
@exch4nge
@slixurd

谢谢
dubbo 这个很有名,他和 google grpc 有什么区别吗
exch4nge
2015-08-28 16:31:28 +08:00
@li24361 哦, dubbo 看似主要应用场景是在分布式集群环境下的, google gprc 之类的只能算是一个 Lib 库而已,也没有集群的功能。
li24361
2015-08-28 16:39:42 +08:00
@exch4nge 谢谢,如果分布式 rpc 就用 dubbo ,一个环境内的不同系统,用 grpc 对吧
jackie9692
2015-08-28 22:32:50 +08:00
dubbo

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

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

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

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

© 2021 V2EX