1
luren123 2020-02-14 13:30:01 +08:00
dubbo
|
2
chendy 2020-02-14 13:39:42 +08:00
etcd、eruaka,feign 是 rpc 框架?
|
4
manami 2020-02-14 13:43:12 +08:00 via Android
feign 不是 rpc 框架吧……
|
6
gwybiaim 2020-02-14 13:53:30 +08:00
spring cloud via feign
|
7
securityCoding 2020-02-14 13:58:07 +08:00
spring cloud
|
8
hantsy 2020-02-14 13:59:11 +08:00
谁用谁知道,RPC 就是坑爹的东西,十几年前就淘汰了。在 Java EE 里面,Soap Web Service 的出现本身就是代替 RPC,何况 SOAP 已经 game over 了。
gRPC 有人用是因为:1.背后的公司是 Google 2. 还有它使用了高效的 Protobuf 协议。 |
9
ledger 2020-02-14 14:10:28 +08:00 1
brpc
|
10
wangyzj 2020-02-14 14:14:56 +08:00
grpc 只是叫做 rpc 而已
|
12
OllyDebug 2020-02-14 14:32:36 +08:00 via iPhone
gprc
|
14
TypeError 2020-02-14 14:36:14 +08:00
grpc
|
15
PureWhiteWu 2020-02-14 14:37:23 +08:00
自研框架
|
16
Y4ssss 2020-02-14 14:51:51 +08:00
grpc
|
17
Ericcccccccc 2020-02-14 15:14:14 +08:00
|
18
ezreal 2020-02-14 15:15:03 +08:00
自研
|
19
dayeye2006199 2020-02-14 15:19:21 +08:00 via iPad
Thrift 全家桶
|
20
zhuawadao 2020-02-14 15:20:28 +08:00
hsf
|
21
swulling 2020-02-14 15:21:44 +08:00
你想要的是 RPC 还是 Service Discovery,两个确实可以配合起来使用,但是并不是强绑定,也可以单独使用。
|
22
lqw3030 2020-02-14 15:25:28 +08:00 2
自研,通用性和业务贴合性原本就矛盾的
|
23
galaxyyao 2020-02-14 16:55:03 +08:00 1
这个引起争执的主题引出了几个问题。说一下我的理解
# 1 到底什么是 RPC 根据 wiki 上[Remote procedure call]( https://en.wikipedia.org/wiki/Remote_procedure_call)的定义,RPC 就是像调用本地方法一样调用共享网络上的方法( procedure 理论上应该被翻译成过程,但这里个人更倾向于翻译成方法,也符合 OOP 中 RMI 中的 M 的本意)。 可以看到这个定义里没有规定协议,所以 HTTP 方式的 spring cloud feign,我认为也可以被认定为 RPC。虽然 feign # 2 RPC 的实现 RPC 的实现有语言限定的,诸如 Java RMI ;也有通用的,例如楼上提到过的 SOAP,Google 的 protobuf (用于 gRPC ),Apache 的 Thrift 和 Avro 等。这里的实现我理解和协议还是有差别的。 Hessian 在有些网站上也被认为是 RPC 实现,但 wiki 上的定义是二进制 web service 协议。 # 3 RPC 框架 RPC 框架我理解是对 RPC 实现的封装。 我理解 gRPC 和 thrift 本身就对 rpc 实现封装得不错了,所以没有一个专门的框架再包装一层。 根据 github 上的[RPC 框架 topic]( https://github.com/topics/rpc-framework),RPC 框架还包括腾讯的 Tars ( C++),蚂蚁的 sofa-rpc ( Java ),微博的 motan (有 go 实现)。 hprose 是跨语言的,在 Github 上有各种语言下的实现。 Dubbo 这种全家桶中也有 rpc 的部分,但称为 rpc 框架总觉得有点别扭。 Github 星数比较高的 Java 语言 RPC 框架还有 NettyRpc,Jupiter,xxl-rpc 等。 # 4 服务发现注册 主题里提到的 zk,etcd,eureka ( LZ 拼错了),从分类上术语服务发现注册,我认为不能混在 RPC 里讨论。 服务发现是辅助与 rpc client 找到 rpc server,但并不是 rpc 里必不可少的部分(如果不考虑高可用的话) |
24
zmxnv123 2020-02-14 16:59:30 +08:00
我一直以及为 grpc 或者 thrift 早一统天下了,没想到还有这么多用 dubbo 和 spring 的,想知道是不需要跨语言吗?
|
25
feelinglucky 2020-02-14 17:20:25 +08:00
@zmxnv123 不奇怪的,先不说孰优孰劣吧…国内纯 Java 技术栈的公司比想象得多,当然还有很多也是历史的问题
|
26
arjen 2020-02-14 17:27:32 +08:00 via Android
@zmxnv123 哈哈,其实现在 dubbo 也有多重语言支持,甚至能与其他 rpc 通信。历史遗留的问题也就没必要换了。
|
27
20150517 2020-02-14 18:20:10 +08:00
grpc,我觉得很好用啊,直接从 proto 生成 endpoint,只需要自己写业务逻辑,效率又高,单元测试又很容易写
|
28
paragon 2020-02-14 20:27:21 +08:00
thrift 现在还有一样的吗?
|
30
bbao OP |
31
manami 2020-02-14 21:37:20 +08:00 via Android
服务注册发现有用 consul 的么?发现挺香的
|
32
paoqi2048 2020-02-14 22:40:42 +08:00
自研
|
33
cabing 2020-02-14 22:44:33 +08:00
grpc
|
34
cabing 2020-02-14 22:45:31 +08:00
基础组件:consul
go 用 grpc cpp 用 brpc |
35
CoderGeek 2020-02-14 22:52:55 +08:00
dubbo 类的 厂子大点一般有不少遗留问题 不过有团队持续优化 233
|
36
binbinyouliiii 2020-02-14 23:56:21 +08:00
@hantsy #8 那服务间互相传输数据应该用什么方式呢?
|
38
feelinglucky 2020-02-15 00:51:21 +08:00 1
+1 @manami consul 是很香,网易这边严选重度使用
|
39
tt67wq 2020-02-15 00:53:40 +08:00 via iPhone
etcd 跟 rpc 有啥关系哟
|
41
sarlanori 2020-02-15 10:50:12 +08:00
偶尔用 thrift 和 ICE
|
44
hantsy 2020-02-16 13:02:56 +08:00
RCP 需要 Client 和 Server 交互,Client 调用看起来和本地调用一样,为了 Client 和 Server 交互隐藏远程调用的复杂性,往往借助一些 IDL 中间语言来定义交换协议。RPC 即没规定你用什么传输协议,也没限定什么传输格式( json,xml,binary 均可)。RPC 框架百花齐放,你学会一种,到另一种框架下完全又是全新的东西,跟没有学一样。至于你非要将 Feign 都能归到 RPC,那只能说 RPC 是任人打扮的 BZ。
任何一种 RPC 框架都是唱独角戏。 在 Java EE 领域,J2EE 1.2 (大约是 2000 年左右,记不清楚了,大约 20 年前吧)最初有一个 XML RPC 规范,使用 XML 作为传输格式,基于 HTTP 协议,但它仅限于 j2ee 程序。很快企业应用快速增长,互通的问题摆在眼前,SOAP Web Service 规范取代 XML RPC,实现不同的平台( Java,.net, 等)的互通(虽然不是很好), 可以说 SOAP 取得空前的成功。当然现在 Jaxrs 规范已经在事实取代了复杂的 SOAP (虽然很长一段时间不会消失)。 |
45
Jacky23333 2020-03-11 23:51:07 +08:00 via Android
@zmxnv123 需要服务治理啊
|
46
RobberPhex 2021-02-24 11:50:33 +08:00
dubbo
|