关于 dubbo 的 rpc

2020-04-15 19:10:24 +08:00
 zxc1234

最近在学习 dubbo,一个分布式服务治理框架(废话)

为什么要用 RPC 协议来实现呢?

RPC 跟 http 有什么区别呢,比较起来有什么优缺点呢

怎么学习 RPC 比较好呢。。。

3018 次点击
所在节点    程序员
32 条回复
IamNotShady
2020-04-15 19:30:39 +08:00
RPC (远程过程调用),HTTP 只是实现 RPC 的一种方式,这俩东西概念完全不在同一个层次,没啥可比较的,好多初学者都没搞清楚这个。
zxc1234
2020-04-15 19:34:33 +08:00
@IamNotShady http 其实也可以实现通信,那么为什么还需要 rpc 呢
IamNotShady
2020-04-15 19:41:51 +08:00
@zxc1234 我说的你没理解到意思啊 你可以把 RPC 理解成 REST 规范,实现 REST 的方式呢有很多,每个人对 rest 的理解也不同 在 RPC 领域也是一样 RMI 私有制协议(dubbo 、grpc) feign( http 协议) 这些都是实现 rpc 的一种方式 所以我说不要把 RPC 和 HTTP 放到一起比较
lasuar
2020-04-15 19:43:33 +08:00
1. RPC 能让调用远程服务像调用普通函数一样简单
2. RPC 基于长连接通信,省去每次使用 HTTP1.0/1.1 的握手开销
zooo
2020-04-15 19:44:21 +08:00
˜赞同 1l

rpc 是个比较宽泛的概念

http 是一种具体的实现方式
IamNotShady
2020-04-15 19:44:30 +08:00
@lasuar 基于 HTTP 协议也可以实现 RPC !
IamNotShady
2020-04-15 19:45:49 +08:00
用来做 RPC 也只是 HTTP 的一种用途
lasuar
2020-04-15 19:47:42 +08:00
@IamNotShady 是的,我可能没表达清楚。RPC 其实是分布式系统中催生的产物,它是一种调用概念。HTTP 是协议,RPC 可以基于 HTTP2.0 实现。
zxc1234
2020-04-15 19:47:56 +08:00
@lasuar

1. RPC 能让调用远程服务像调用普通函数一样简单

这句话怎么理解,http 不能像调用函数一样调用吗?能举个例子吗
zxc1234
2020-04-15 19:48:31 +08:00
@IamNotShady 像 dubbo 的 rpc 应该不是基于 http 实现的吧?
IamNotShady
2020-04-15 19:49:37 +08:00
@zxc1234 基于 TCP 实现的私有制协议
hallDrawnel
2020-04-15 19:50:09 +08:00
理解一下 Remote Procedure Call 的意思就好了。远程过程调用。所以你可用 HTTP 协议来实现远程过程调用,对吧?同样的你也可以用其他协议来实现。
IamNotShady
2020-04-15 19:50:47 +08:00
@zxc1234 你先了解下 netty 再去看看 dubbo 源码就都明白了
zxc1234
2020-04-15 19:50:51 +08:00
@IamNotShady 跟 socket 连接有关系?
lasuar
2020-04-15 19:51:58 +08:00
@zxc1234 你先敲一个 dubbo 的 demo
IamNotShady
2020-04-15 19:53:15 +08:00
@zxc1234 对呀 所以性能比 http 协议好
Sayommy
2020-04-15 19:54:33 +08:00
@zxc1234 Dubbo 可以选用 Http 作为通信协议,支持的协议可以看 org.apache.dubbo.rpc.protocol 包,也可以自己继承 AbstractProxyProtocol 接入私有协议。
zxc1234
2020-04-15 19:55:50 +08:00
@IamNotShady socket 是 TCP/IP 协议的 API 接口,我可以这么理解?
zchlwj
2020-04-15 19:55:56 +08:00
@zxc1234 #9 原文:“@lasuar 1. RPC 能让调用远程服务像调用普通函数一样简单这句话怎么理解,http 不能像调用函数一样调用吗?能举个例子吗”
======
回复: http(restful 风格)就是 rpc 的一种啊?
zxc1234
2020-04-15 19:56:16 +08:00
@lasuar 敲了,java 版本的

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

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

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

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

© 2021 V2EX