关于 dubbo 的 rpc - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zxc1234
V2EX    程序员

关于 dubbo 的 rpc

  zxc1234 2020-04-15 19:10:24 +08:00 3580 次点击
这是一个创建于 2084 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

rpc 是个比较宽泛的概念

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

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

这句话怎么理解,http 不能像调用函数一样调用吗?能举个例子吗
zxc1234
    10
zxc1234  
OP
   2020-04-15 19:48:31 +08:00
@IamNotShady 像 dubbo 的 rpc 应该不是基于 http 实现的吧?
IamNotShady
    11
IamNotShady  
   2020-04-15 19:49:37 +08:00 via iPhone
@zxc1234 基于 TCP 实现的私有制协议
hallDrawnel
    12
hallDrawnel  
   2020-04-15 19:50:09 +08:00
理解一下 Remote Procedure Call 的意思就好了。远程过程调用。所以你可用 HTTP 协议来实现远程过程调用,对吧?同样的你也可以用其他协议来实现。
IamNotShady
    13
IamNotShady  
   2020-04-15 19:50:47 +08:00 via iPhone
@zxc1234 你先了解下 netty 再去看看 dubbo 源码就都明白了
zxc1234
    14
zxc1234  
OP
   2020-04-15 19:50:51 +08:00
@IamNotShady 跟 socket 连接有关系?
lasuar
    15
lasuar  
   2020-04-15 19:51:58 +08:00
@zxc1234 你先敲一个 dubbo 的 demo
IamNotShady
    16
IamNotShady  
   2020-04-15 19:53:15 +08:00 via iPhone
@zxc1234 对呀 所以性能比 http 协议好
Sayommy
    17
Sayommy  
   2020-04-15 19:54:33 +08:00
@zxc1234 Dubbo 可以选用 Http 作为通信协议,支持的协议可以看 org.apache.dubbo.rpc.protocol 包,也可以自己继承 AbstractProxyProtocol 接入私有协议。
zxc1234
    18
zxc1234  
OP
   2020-04-15 19:55:50 +08:00
@IamNotShady socket 是 TCP/IP 协议的 API 接口,我可以这么理解?
zchlwj
    19
zchlwj  
   2020-04-15 19:55:56 +08:00
@zxc1234 #9 原文:“@lasuar 1. RPC 能让调用远程服务像调用普通函数一样简单这句话怎么理解,http 不能像调用函数一样调用吗?能举个例子吗”
======
回复: http(restful 风格)就是 rpc 的一种啊?
zxc1234
    20
zxc1234  
OP
   2020-04-15 19:56:16 +08:00
@lasuar 敲了,java 版本的
zchlwj
    21
zchlwj  
   2020-04-15 19:56:25 +08:00
@zxc1234 #10 原文:“@IamNotShady 像 dubbo 的 rpc 应该不是基于 http 实现的吧?”
======
回复:grpc 就是基于 http2 实现的。dubbo 有好几种协议
IamNotShady
    22
IamNotShady  
   2020-04-15 19:58:29 +08:00
@zxc1234 严格来说应该是传输层的抽象
zxc1234
    23
zxc1234  
OP
   2020-04-15 19:59:37 +08:00
@IamNotShady 大佬 能推荐一些 netty,dubbo,socket,rpc 相关的学习资料吗
IamNotShady
    24
IamNotShady  
   2020-04-15 20:02:19 +08:00
@zxc1234 知识都在代码里 dubbo 太重 读它的源码容易找不到北 你可以在 github 搜下 Jupiter 这个项目
lasuar
    25
lasuar  
   2020-04-15 20:02:23 +08:00
@zxc1234
@zchlwj
我用的 grpc,dubbo 应该差不多。使用之前先定义服务方要提供服务的函数签名,意思就是定义函数名,入参出参具体格式,然后框架自带的工具会帮你生成对应的服务端和客户端代码,客户端直接 import 对应服务的客户端代码,实际调用时就是:resp,err = someServiceMethod(arg1,arg2),是不是和调用本地函数一样?
otakustay
    26
otakustay  
   2020-04-15 22:39:40 +08:00
其实不为了浏览器,HTTP ( 1.1 )在 RPC 里是很没效率的一个选择
leafre
    27
leafre  
   2020-04-16 09:04:24 +08:00
应该说的是 TCP 和 HTTP 区别
fanjianhang
    28
fanjianhang  
   2020-04-16 09:28:04 +08:00
不是同个概念,楼主误解了
yeqizhang
    29
yeqizhang  
   2020-04-16 11:20:59 +08:00 via Android
你可以对两者进行比较,但不能说优缺点……因为应用场景不同没啥好说优缺点的……rpc 的实现包括使用 http 来进行客户端和服务端之间通信,早期的 web service 不知道你有没有使用过?
zxc1234
    30
zxc1234  
OP
   2020-04-16 12:01:57 +08:00
@yeqizhang web service 我没用过
Jooooooooo
    31
Jooooooooo  
   2020-04-16 16:22:23 +08:00
建议极客时间找个课学一下
Pythondr
    32
Pythondr  
   2020-04-16 16:24:47 +08:00 via iPhone
RPC 通信开销小,效率高
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5278 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 33ms UTC 08:13 PVG 16:13 LAX 00:13 JFK 03:13
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86