最近在学习 dubbo,一个分布式服务治理框架(废话)
为什么要用 RPC 协议来实现呢?
RPC 跟 http 有什么区别呢,比较起来有什么优缺点呢
怎么学习 RPC 比较好呢。。。
1
IamNotShady 2020-04-15 19:30:39 +08:00
RPC (远程过程调用),HTTP 只是实现 RPC 的一种方式,这俩东西概念完全不在同一个层次,没啥可比较的,好多初学者都没搞清楚这个。
|
2
zxc1234 OP @IamNotShady http 其实也可以实现通信,那么为什么还需要 rpc 呢
|
3
IamNotShady 2020-04-15 19:41:51 +08:00
@zxc1234 我说的你没理解到意思啊 你可以把 RPC 理解成 REST 规范,实现 REST 的方式呢有很多,每个人对 rest 的理解也不同 在 RPC 领域也是一样 RMI 私有制协议(dubbo 、grpc) feign( http 协议) 这些都是实现 rpc 的一种方式 所以我说不要把 RPC 和 HTTP 放到一起比较
|
4
lasuar 2020-04-15 19:43:33 +08:00
1. RPC 能让调用远程服务像调用普通函数一样简单
2. RPC 基于长连接通信,省去每次使用 HTTP1.0/1.1 的握手开销 |
5
zooo 2020-04-15 19:44:21 +08:00
˜赞同 1l
rpc 是个比较宽泛的概念 http 是一种具体的实现方式 |
6
IamNotShady 2020-04-15 19:44:30 +08:00
@lasuar 基于 HTTP 协议也可以实现 RPC !
|
7
IamNotShady 2020-04-15 19:45:49 +08:00
用来做 RPC 也只是 HTTP 的一种用途
|
8
lasuar 2020-04-15 19:47:42 +08:00
@IamNotShady 是的,我可能没表达清楚。RPC 其实是分布式系统中催生的产物,它是一种调用概念。HTTP 是协议,RPC 可以基于 HTTP2.0 实现。
|
9
zxc1234 OP |
10
zxc1234 OP @IamNotShady 像 dubbo 的 rpc 应该不是基于 http 实现的吧?
|
11
IamNotShady 2020-04-15 19:49:37 +08:00 via iPhone
@zxc1234 基于 TCP 实现的私有制协议
|
12
hallDrawnel 2020-04-15 19:50:09 +08:00
理解一下 Remote Procedure Call 的意思就好了。远程过程调用。所以你可用 HTTP 协议来实现远程过程调用,对吧?同样的你也可以用其他协议来实现。
|
13
IamNotShady 2020-04-15 19:50:47 +08:00 via iPhone
@zxc1234 你先了解下 netty 再去看看 dubbo 源码就都明白了
|
14
zxc1234 OP @IamNotShady 跟 socket 连接有关系?
|
16
IamNotShady 2020-04-15 19:53:15 +08:00 via iPhone
@zxc1234 对呀 所以性能比 http 协议好
|
17
Sayommy 2020-04-15 19:54:33 +08:00
@zxc1234 Dubbo 可以选用 Http 作为通信协议,支持的协议可以看 org.apache.dubbo.rpc.protocol 包,也可以自己继承 AbstractProxyProtocol 接入私有协议。
|
18
zxc1234 OP @IamNotShady socket 是 TCP/IP 协议的 API 接口,我可以这么理解?
|
19
zchlwj 2020-04-15 19:55:56 +08:00
@zxc1234 #9 原文:“@lasuar 1. RPC 能让调用远程服务像调用普通函数一样简单这句话怎么理解,http 不能像调用函数一样调用吗?能举个例子吗”
====== 回复: http(restful 风格)就是 rpc 的一种啊? |
21
zchlwj 2020-04-15 19:56:25 +08:00
@zxc1234 #10 原文:“@IamNotShady 像 dubbo 的 rpc 应该不是基于 http 实现的吧?”
====== 回复:grpc 就是基于 http2 实现的。dubbo 有好几种协议 |
22
IamNotShady 2020-04-15 19:58:29 +08:00
@zxc1234 严格来说应该是传输层的抽象
|
23
zxc1234 OP @IamNotShady 大佬 能推荐一些 netty,dubbo,socket,rpc 相关的学习资料吗
|
24
IamNotShady 2020-04-15 20:02:19 +08:00
@zxc1234 知识都在代码里 dubbo 太重 读它的源码容易找不到北 你可以在 github 搜下 Jupiter 这个项目
|
25
lasuar 2020-04-15 20:02:23 +08:00
|
26
otakustay 2020-04-15 22:39:40 +08:00
其实不为了浏览器,HTTP ( 1.1 )在 RPC 里是很没效率的一个选择
|
27
leafre 2020-04-16 09:04:24 +08:00
应该说的是 TCP 和 HTTP 区别
|
28
fanjianhang 2020-04-16 09:28:04 +08:00
不是同个概念,楼主误解了
|
29
yeqizhang 2020-04-16 11:20:59 +08:00 via Android
你可以对两者进行比较,但不能说优缺点……因为应用场景不同没啥好说优缺点的……rpc 的实现包括使用 http 来进行客户端和服务端之间通信,早期的 web service 不知道你有没有使用过?
|
31
Jooooooooo 2020-04-16 16:22:23 +08:00
建议极客时间找个课学一下
|
32
Pythondr 2020-04-16 16:24:47 +08:00 via iPhone
RPC 通信开销小,效率高
|