
最近在学习 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 通信开销小,效率高 |